From 5ba7e6b8dd985140cef8ff1e41d2e34e2b0d13b9 Mon Sep 17 00:00:00 2001 From: frievoe97 Date: Tue, 1 Oct 2024 15:25:45 +0200 Subject: [PATCH] Added a converter for xyt csv files to avro --- .../application/avro/CSVToAvroConverter.java | 139 +++ .../avro/CSVToAvroConverterTest.java | 85 ++ .../conversion/exampleCSV.csv | 1000 +++++++++++++++++ 3 files changed, 1224 insertions(+) create mode 100644 contribs/application/src/main/java/org/matsim/application/avro/CSVToAvroConverter.java create mode 100644 contribs/application/src/test/java/org/matsim/application/avro/CSVToAvroConverterTest.java create mode 100755 contribs/application/test/input/org/matsim/application/avro/CSVToAvroConverterTest/conversion/exampleCSV.csv diff --git a/contribs/application/src/main/java/org/matsim/application/avro/CSVToAvroConverter.java b/contribs/application/src/main/java/org/matsim/application/avro/CSVToAvroConverter.java new file mode 100644 index 00000000000..7fc715f5d93 --- /dev/null +++ b/contribs/application/src/main/java/org/matsim/application/avro/CSVToAvroConverter.java @@ -0,0 +1,139 @@ +package org.matsim.application.avro; + +import it.unimi.dsi.fastutil.objects.Object2FloatAVLTreeMap; +import it.unimi.dsi.fastutil.objects.Object2FloatSortedMap; +import org.apache.avro.file.CodecFactory; +import org.apache.avro.file.DataFileWriter; +import org.apache.avro.io.DatumWriter; +import org.apache.avro.specific.SpecificDatumWriter; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVParser; +import org.apache.commons.csv.CSVRecord; +import org.matsim.core.utils.io.IOUtils; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.*; + +public class CSVToAvroConverter { + + public static void main(String[] args) throws IOException { + String projection = args.length > 2 ? args[2] : null; + String name = args.length > 3 ? args[3] : "Emissions"; + + XYTData avroData = readCSV(args[0], projection, name); + writeAvroFile(avroData, Path.of(args[1])); + } + + /** + * Reads a CSV file, processes its data, and returns the corresponding Avro object. + * + * @param csvFilePath the path to the CSV file + * @param projection the projection (CRS) + * @param name the name for the data series (defaults is "Emissions") + * @throws IOException if an error occurs during reading the file + */ + public static XYTData readCSV(String csvFilePath, String projection, String name) throws IOException { + List entries = new ArrayList<>(); + List xCoords = new ArrayList<>(); + List yCoords = new ArrayList<>(); + List timestamps = new ArrayList<>(); + Object2FloatSortedMap valuesMap = new Object2FloatAVLTreeMap<>(Comparator.comparing((XYT e) -> e.t) + .thenComparing(e -> e.x) + .thenComparing(e -> e.y)); + + try (CSVParser csvReader = new CSVParser(IOUtils.getBufferedReader(csvFilePath), CSVFormat.DEFAULT.builder() + .setCommentMarker('#').setSkipHeaderRecord(true).setHeader().build())) { + + String comment = csvReader.getHeaderComment(); + + if (comment != null && (projection == null || projection.isEmpty())) { + projection = comment; + } else if (projection == null) { + projection = ""; + } + + for (CSVRecord record : csvReader) { + try { + int time = (int) Double.parseDouble(record.get(0)); + float x = Float.parseFloat(record.get(1)); + float y = Float.parseFloat(record.get(2)); + float value = Float.parseFloat(record.get(3)); + + entries.add(new CSVEntries(time, x, y, value)); + + } catch (NumberFormatException e) { + System.out.println("Skipping invalid line: " + String.join(",", record)); + } + } + } + + // Sort entries by time -> x -> y + entries.sort(Comparator.comparing((CSVEntries e) -> e.time) + .thenComparing(e -> e.x) + .thenComparing(e -> e.y)); + + for (CSVEntries entry : entries) { + if (!xCoords.contains(entry.x)) { + xCoords.add(entry.x); + } + if (!yCoords.contains(entry.y)) { + yCoords.add(entry.y); + } + if (!timestamps.contains(entry.time)) { + timestamps.add(entry.time); + } + + valuesMap.put(new XYT(entry.x, entry.y, entry.time), entry.value); + } + + // Check if all combinations of x, y, and time exist + for (int time : timestamps) { + for (float x : xCoords) { + for (float y : yCoords) { + XYT key = new XYT(x, y, time); + if (!valuesMap.containsKey(key)) { + valuesMap.put(key, 0f); + } + } + } + } + + // Create Avro data object + XYTData avroData = new XYTData(); + avroData.setCrs(projection); + avroData.setXCoords(xCoords); + avroData.setYCoords(yCoords); + avroData.setTimestamps(timestamps); + + List valuesList = new ArrayList<>(valuesMap.values()); + Map> result = new HashMap<>(); + result.put(name != null && !name.isEmpty() ? name : "Emissions", valuesList); + + avroData.setData(result); + + return avroData; + } + + /** + * Writes the Avro data + * + * @param avroData the Avro data + * @param avroFile the path to the output Avro file + * @throws IOException if an error occurs during writing the file + */ + public static void writeAvroFile(XYTData avroData, Path avroFile) throws IOException { + DatumWriter datumWriter = new SpecificDatumWriter<>(XYTData.class); + try (DataFileWriter dataFileWriter = new DataFileWriter<>(datumWriter)) { + dataFileWriter.setCodec(CodecFactory.deflateCodec(9)); + dataFileWriter.create(XYTData.getClassSchema(), avroFile.toFile()); + dataFileWriter.append(avroData); + } + } + + private record CSVEntries(int time, float x, float y, float value) { + } + + private record XYT(float x, float y, float t) { + } +} diff --git a/contribs/application/src/test/java/org/matsim/application/avro/CSVToAvroConverterTest.java b/contribs/application/src/test/java/org/matsim/application/avro/CSVToAvroConverterTest.java new file mode 100644 index 00000000000..d2e42c89258 --- /dev/null +++ b/contribs/application/src/test/java/org/matsim/application/avro/CSVToAvroConverterTest.java @@ -0,0 +1,85 @@ +package org.matsim.application.avro; + +import org.apache.avro.file.DataFileReader; +import org.apache.avro.specific.SpecificDatumReader; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.matsim.testcases.MatsimTestUtils; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVParser; +import org.apache.commons.csv.CSVRecord; +import org.matsim.core.utils.io.IOUtils; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.*; + +class CSVToAvroConverterTest { + + @RegisterExtension + public final MatsimTestUtils utils = new MatsimTestUtils(); + + @Test + void conversion() throws IOException { + String input = utils.getInputDirectory() + "exampleCSV.csv"; + String output = utils.getOutputDirectory() + "exampleAvro.avro"; + + CSVToAvroConverter.main(new String[]{input, output}); + + // Verify the output Avro file exists + Path outputPath = Path.of(output); + assertTrue(Files.exists(outputPath), "The Avro output file should exist."); + + Set uniqueTimes = new HashSet<>(); + Set uniqueX = new HashSet<>(); + Set uniqueY = new HashSet<>(); + + try (CSVParser csvParser = new CSVParser(IOUtils.getBufferedReader(input), CSVFormat.DEFAULT.builder() + .setCommentMarker('#') + .setSkipHeaderRecord(true) + .setHeader("time", "x", "y", "value") + .build())) { + for (CSVRecord record : csvParser) { + uniqueTimes.add(Double.parseDouble(record.get("time"))); + uniqueX.add(Double.parseDouble(record.get("x"))); + uniqueY.add(Double.parseDouble(record.get("y"))); + } + } + + // Check if the avro file has the expected number of unique entries + int expectedTimeCount = uniqueTimes.size(); + int expectedXCount = uniqueX.size(); + int expectedYCount = uniqueY.size(); + int expectedEmissionsSize = expectedTimeCount * expectedXCount * expectedYCount; + + // Verify the avro data + SpecificDatumReader datumReader = new SpecificDatumReader<>(XYTData.class); + try (DataFileReader dataFileReader = new DataFileReader<>(new File(output), datumReader)) { + assertTrue(dataFileReader.hasNext(), "There should be at least one record in the Avro file."); + + XYTData avroData = dataFileReader.next(); + + // Verify the number of unique entries in the Avro file matches the CSV data + assertEquals(expectedTimeCount, avroData.getTimestamps().size(), "The number of unique time entries should match."); + assertEquals(expectedXCount, avroData.getXCoords().size(), "The number of unique x-coordinates should match."); + assertEquals(expectedYCount, avroData.getYCoords().size(), "The number of unique y-coordinates should match."); + + // Check if the data map has the expected number of entries + Map> emissionsData = avroData.getData(); + + for (Map.Entry> entry : emissionsData.entrySet()) { + assertNotNull(entry.getValue(), "The Emissions data should not be null."); + assertEquals(expectedEmissionsSize, entry.getValue().size(), "The size of the Emissions data should be timeCount * xCount * yCount."); + } + } + + Files.delete(outputPath); + } +} diff --git a/contribs/application/test/input/org/matsim/application/avro/CSVToAvroConverterTest/conversion/exampleCSV.csv b/contribs/application/test/input/org/matsim/application/avro/CSVToAvroConverterTest/conversion/exampleCSV.csv new file mode 100755 index 00000000000..2d2e7edf390 --- /dev/null +++ b/contribs/application/test/input/org/matsim/application/avro/CSVToAvroConverterTest/conversion/exampleCSV.csv @@ -0,0 +1,1000 @@ +# EPSG:25832 +time,x,y,value +32400.0,648945.53,5456036.22,0.0 +75600.0,771945.53,5437786.22,1.232917389748582E-14 +126000.0,693445.53,5503036.22,0.0 +118800.0,647445.53,5391036.22,0.0 +14400.0,654195.53,5404286.22,2.5288708184179678E-19 +32400.0,726945.53,5426786.22,0.02577319063094685 +32400.0,637195.53,5398536.22,4.1998834179801743E-7 +57600.0,760695.53,5501036.22,0.0 +61200.0,728195.53,5369036.22,3.220922360871546E-8 +86400.0,647445.53,5458036.22,7.703710249622029E-17 +118800.0,667445.53,5437036.22,6.924712260725536E-6 +68400.0,725445.53,5405536.22,3.675837435396217E-4 +50400.0,683445.53,5506786.22,3.3186379281710923E-7 +93600.0,728695.53,5358536.22,2.3544728470023535E-8 +10800.0,760945.53,5380786.22,0.0 +122400.0,770695.53,5332536.22,0.0 +118800.0,728445.53,5500536.22,9.318650701645737E-5 +57600.0,647195.53,5470786.22,3.827718537215421E-9 +28800.0,648695.53,5424536.22,1.2083875967864239E-4 +93600.0,770445.53,5330286.22,0.0 +97200.0,725695.53,5411036.22,1.394421289790232E-5 +43200.0,631945.53,5321036.22,0.0024186498374828645 +18000.0,788445.53,5421286.22,1.384736918844948E-5 +39600.0,637695.53,5444036.22,3.3597084738402057E-25 +126000.0,744195.53,5368536.22,1.4833791879054379E-9 +64800.0,728445.53,5363786.22,1.3620862620927954E-6 +115200.0,754695.53,5452786.22,1.0870094570770482E-8 +111600.0,667195.53,5387536.22,1.364615310964844E-22 +39600.0,666695.53,5463536.22,9.797806120569641E-9 +18000.0,637695.53,5338286.22,0.0018455584671993514 +75600.0,728195.53,5337536.22,0.0 +25200.0,760445.53,5338036.22,3.5805412234133383E-19 +14400.0,683445.53,5480536.22,1.7945441124764703E-12 +54000.0,771695.53,5447536.22,6.973936391771469E-13 +46800.0,787195.53,5427286.22,2.1205296192216874E-10 +39600.0,725195.53,5443286.22,0.008056646034027044 +72000.0,682445.53,5420036.22,6.204503073487877E-4 +122400.0,647695.53,5463286.22,0.0 +54000.0,667445.53,5327036.22,1.283526885926943E-4 +0.0,717445.53,5487536.22,4.052968971908666E-13 +25200.0,698945.53,5398036.22,0.002391896004911412 +93600.0,745195.53,5391286.22,8.604917063886524E-4 +3600.0,700195.53,5330536.22,1.4971437109495422E-8 +10800.0,698695.53,5489536.22,0.0 +122400.0,725945.53,5429286.22,3.539464191481934E-4 +25200.0,683695.53,5440536.22,3.243976894132273E-12 +100800.0,789945.53,5473286.22,0.0 +21600.0,760445.53,5365286.22,1.264888754701643E-6 +90000.0,710195.53,5407286.22,8.811533626744448E-4 +86400.0,682695.53,5443286.22,2.5335972093246075E-11 +21600.0,761695.53,5446536.22,3.1182811248223256E-11 +72000.0,647945.53,5362036.22,0.0032359032476262663 +21600.0,788445.53,5377286.22,0.0 +72000.0,682695.53,5487286.22,0.0 +122400.0,789945.53,5437786.22,0.0 +10800.0,788195.53,5451786.22,0.0 +28800.0,744695.53,5487786.22,0.0012788998123037098 +118800.0,682695.53,5375786.22,7.656007159970624E-7 +0.0,640945.53,5392536.22,2.1538815017824573E-8 +100800.0,667445.53,5476786.22,2.5918212094227643E-5 +36000.0,786695.53,5392036.22,0.0 +104400.0,650445.53,5373286.22,0.0 +82800.0,760695.53,5425536.22,5.098286614069713E-6 +61200.0,760695.53,5484036.22,0.0 +72000.0,637945.53,5386536.22,2.2542420811053447E-6 +57600.0,725695.53,5503786.22,0.0022794795669787726 +28800.0,683945.53,5473036.22,0.0 +64800.0,743695.53,5366036.22,8.172065350002966E-14 +25200.0,786445.53,5413786.22,7.56573160139707E-4 +75600.0,647445.53,5480536.22,0.002667712454578127 +82800.0,745445.53,5480286.22,2.8719580850903795E-8 +21600.0,726445.53,5376286.22,1.70655524963423E-4 +118800.0,789945.53,5426286.22,0.0 +64800.0,710195.53,5456286.22,0.0 +25200.0,666945.53,5355286.22,1.1203994089590187E-9 +61200.0,665695.53,5352036.22,1.9111856046917405E-4 +46800.0,710445.53,5346286.22,1.1016103441208955E-5 +104400.0,647445.53,5418786.22,0.0 +10800.0,663695.53,5502786.22,0.0 +68400.0,637945.53,5391786.22,2.582346266134949E-7 +72000.0,771945.53,5445036.22,0.0 +54000.0,682945.53,5341536.22,0.0017490486741334166 +90000.0,647445.53,5462786.22,0.0 +14400.0,726945.53,5331536.22,0.0 +82800.0,789695.53,5446786.22,0.0 +86400.0,790445.53,5366536.22,1.348615054448121E-9 +72000.0,760195.53,5387536.22,0.0 +100800.0,710445.53,5441536.22,0.0015604665443077082 +104400.0,682945.53,5488036.22,0.0 +0.0,674445.53,5500286.22,0.0 +7200.0,653945.53,5464286.22,0.0 +122400.0,666195.53,5350786.22,1.72057939471335E-5 +61200.0,666945.53,5435286.22,5.534011155761789E-6 +57600.0,666695.53,5376536.22,8.877625097741535E-4 +111600.0,770195.53,5474036.22,0.0 +126000.0,745445.53,5392286.22,2.362330944018771E-5 +111600.0,666195.53,5373536.22,4.91794888230505E-7 +75600.0,725445.53,5382286.22,2.0716389740725109E-4 +68400.0,754945.53,5357536.22,7.453860495021012E-13 +7200.0,760945.53,5464036.22,7.477490291198621E-7 +122400.0,682695.53,5383286.22,3.2029408540309514E-5 +14400.0,637445.53,5372286.22,0.0 +90000.0,708945.53,5326036.22,1.0553331272396719E-19 +111600.0,631945.53,5398036.22,3.755899000400293E-11 +32400.0,786945.53,5476536.22,0.0 +75600.0,666945.53,5396286.22,2.075506966401299E-4 +43200.0,787445.53,5502536.22,0.0 +32400.0,667195.53,5352286.22,2.492343908610874E-5 +36000.0,789695.53,5346536.22,5.826858858773919E-10 +7200.0,653445.53,5401786.22,2.758185743098009E-9 +97200.0,725945.53,5480286.22,8.712360084152933E-10 +111600.0,647445.53,5412286.22,0.0 +82800.0,726945.53,5505286.22,0.006015170431449966 +50400.0,648945.53,5388536.22,0.0 +126000.0,630945.53,5356286.22,0.0 +32400.0,637445.53,5467536.22,0.0 +104400.0,708695.53,5489286.22,0.0 +57600.0,632445.53,5332036.22,2.1037905188525125E-8 +108000.0,789945.53,5456536.22,0.0 +14400.0,726195.53,5390536.22,7.83713044064965E-4 +10800.0,653945.53,5392536.22,4.378789305275177E-18 +28800.0,637695.53,5498536.22,4.246552386136198E-4 +111600.0,632445.53,5460286.22,2.0947804229909534E-7 +111600.0,754695.53,5459536.22,1.3666869405278142E-8 +43200.0,725445.53,5501536.22,0.0010899483919287211 +108000.0,743945.53,5345786.22,0.0 +75600.0,710195.53,5434536.22,0.0011319500762417304 +100800.0,631945.53,5420536.22,0.0 +93600.0,790445.53,5360286.22,0.0 +118800.0,728445.53,5504286.22,1.256495806040252E-4 +75600.0,789695.53,5457786.22,0.0 +39600.0,789695.53,5329786.22,9.822345711036667E-27 +104400.0,728695.53,5348536.22,0.0 +3600.0,742945.53,5504536.22,0.0 +21600.0,636945.53,5424536.22,0.0 +21600.0,742195.53,5457786.22,2.0837665095988055E-6 +64800.0,631945.53,5492286.22,0.0 +75600.0,760445.53,5390036.22,2.407904970754908E-21 +115200.0,725945.53,5423286.22,4.177729853939279E-4 +46800.0,648945.53,5399286.22,3.0265931841982404E-5 +50400.0,682195.53,5427536.22,3.217647597288719E-4 +7200.0,715695.53,5471286.22,0.0 +46800.0,760445.53,5481786.22,0.0 +100800.0,789945.53,5467036.22,0.0 +68400.0,790195.53,5342786.22,0.0 +21600.0,760195.53,5364036.22,8.091388069362037E-5 +64800.0,744945.53,5390036.22,0.00169498417455375 +43200.0,725945.53,5361036.22,1.1399538236643093E-7 +46800.0,787445.53,5496286.22,0.0 +72000.0,790195.53,5339036.22,0.0 +57600.0,710195.53,5483536.22,3.803926771001606E-9 +10800.0,776195.53,5393536.22,3.1259963618356163E-6 +43200.0,744945.53,5478036.22,2.3039412030609397E-17 +10800.0,699195.53,5353286.22,6.302518628013936E-5 +82800.0,665945.53,5363286.22,0.0 +79200.0,632695.53,5328036.22,9.75576338162119E-8 +82800.0,667195.53,5444536.22,0.0010704209411575229 +21600.0,666945.53,5366286.22,0.0 +39600.0,710445.53,5373536.22,1.1328966659453571E-8 +36000.0,664445.53,5395036.22,5.128814118801484E-7 +21600.0,648445.53,5417036.22,0.0 +93600.0,682445.53,5380036.22,7.849379677938453E-5 +126000.0,770195.53,5449286.22,0.0 +43200.0,726945.53,5379286.22,0.0017347506924268636 +64800.0,789695.53,5488536.22,0.0 +104400.0,745445.53,5437786.22,2.705745098669176E-16 +126000.0,708695.53,5454536.22,8.326507074694347E-17 +43200.0,637695.53,5431036.22,1.1613097818069644E-14 +14400.0,699945.53,5506786.22,0.0 +126000.0,755195.53,5497286.22,0.0 +82800.0,770445.53,5346536.22,0.0016973381253060475 +32400.0,726945.53,5430536.22,0.013151997768523504 +72000.0,632695.53,5355286.22,4.872215334667197E-5 +28800.0,760695.53,5371786.22,0.0019033375196090964 +118800.0,728945.53,5372536.22,7.156436742201306E-23 +43200.0,647445.53,5328786.22,1.2951662937858896E-8 +100800.0,632445.53,5482786.22,8.755651909083866E-5 +0.0,717195.53,5410286.22,0.0015722962184891239 +104400.0,667195.53,5394286.22,1.2688522119124712E-10 +57600.0,647695.53,5334286.22,0.0 +3600.0,777945.53,5495536.22,0.0 +14400.0,648195.53,5493286.22,1.1265903716605813E-9 +21600.0,638445.53,5505036.22,1.784200790558263E-7 +115200.0,667195.53,5379536.22,1.4940663216932168E-5 +43200.0,744695.53,5413036.22,0.0 +111600.0,755445.53,5332786.22,0.0 +126000.0,754695.53,5434786.22,3.120028509173332E-11 +39600.0,709695.53,5432536.22,1.1322826181922748E-4 +25200.0,649195.53,5332786.22,0.0 +68400.0,708945.53,5372036.22,3.306479915820767E-11 +54000.0,682945.53,5345286.22,0.001731388194963168 +28800.0,726695.53,5382786.22,0.003172205038090179 +82800.0,632695.53,5324786.22,3.17899685580897E-5 +90000.0,693445.53,5324286.22,5.145095146822457E-5 +39600.0,648945.53,5427036.22,0.004729345391440732 +108000.0,770695.53,5357286.22,0.0 +72000.0,647445.53,5490036.22,4.809778628440698E-4 +18000.0,648945.53,5321036.22,4.9037347024546E-12 +32400.0,699195.53,5399286.22,1.237323629630324E-4 +57600.0,745195.53,5474536.22,0.0 +115200.0,647445.53,5400536.22,2.6662147178093192E-9 +10800.0,787945.53,5383036.22,0.0 +115200.0,708695.53,5470286.22,6.587716137242722E-16 +93600.0,665945.53,5341786.22,2.2379624333314503E-7 +0.0,763695.53,5469286.22,6.188764691032071E-4 +97200.0,632195.53,5484536.22,1.6133528248147425E-4 +82800.0,789695.53,5443036.22,0.0 +36000.0,709695.53,5443036.22,0.00224129299599732 +100800.0,754695.53,5483786.22,0.0 +93600.0,760695.53,5409286.22,0.0 +54000.0,637945.53,5445286.22,3.125352759309182E-22 +79200.0,754945.53,5331286.22,0.0 +39600.0,760195.53,5497786.22,0.0 +72000.0,760695.53,5454036.22,1.996420136579322E-6 +28800.0,647195.53,5335786.22,0.0 +25200.0,742195.53,5434286.22,1.1263176054923073E-4 +7200.0,787945.53,5463286.22,0.0 +7200.0,787695.53,5404536.22,1.6840459795765696E-5 +68400.0,728445.53,5355786.22,3.6289186866362678E-6 +90000.0,745445.53,5465536.22,0.0 +79200.0,710195.53,5425036.22,0.0032643015802136708 +104400.0,631945.53,5411036.22,0.0 +75600.0,771695.53,5379036.22,5.528454894582679E-11 +104400.0,754695.53,5472286.22,0.0 +68400.0,771695.53,5395786.22,0.0040217071124737675 +100800.0,682695.53,5430286.22,1.8389858432659195E-5 +14400.0,726445.53,5459536.22,0.009347576844583485 +3600.0,680195.53,5486036.22,0.0 +122400.0,650445.53,5338036.22,0.0 +43200.0,786945.53,5427786.22,4.7187646843816215E-11 +115200.0,743445.53,5463786.22,0.0 +75600.0,760195.53,5380286.22,0.0 +75600.0,728445.53,5338786.22,3.2928204667975456E-25 +0.0,639695.53,5323536.22,4.7650161723803145E-7 +57600.0,787445.53,5437286.22,7.324873723436125E-8 +28800.0,648945.53,5481286.22,2.384085011489151E-4 +36000.0,787195.53,5458786.22,0.0 +0.0,674195.53,5445536.22,9.889581477817966E-15 +21600.0,771195.53,5480536.22,0.0 +64800.0,754945.53,5365536.22,0.002039955585829622 +90000.0,745195.53,5400786.22,0.0 +79200.0,745195.53,5422786.22,4.2679583236141074E-15 +122400.0,631945.53,5379786.22,0.0 +50400.0,760195.53,5463536.22,1.8700167398507355E-8 +68400.0,665695.53,5326036.22,4.399292880310784E-6 +50400.0,682445.53,5496536.22,0.0 +28800.0,637195.53,5423786.22,0.0 +46800.0,759945.53,5407036.22,0.0 +3600.0,638445.53,5331286.22,5.413266505499651E-5 +79200.0,647445.53,5473036.22,4.922298007484491E-6 +54000.0,637695.53,5380286.22,2.587864601353453E-6 +118800.0,743445.53,5452286.22,2.249498629203732E-7 +36000.0,682695.53,5352286.22,4.412993972805259E-16 +14400.0,744695.53,5352786.22,0.0 +50400.0,667445.53,5341786.22,2.888704287911911E-5 +46800.0,744945.53,5471786.22,0.0 +43200.0,709945.53,5474536.22,2.7566024364420876E-4 +39600.0,637445.53,5438286.22,0.001882703968844815 +82800.0,666945.53,5381536.22,9.114024622411893E-4 +82800.0,745195.53,5411286.22,0.0 +90000.0,667445.53,5497286.22,0.0 +122400.0,755445.53,5321786.22,4.833582381448485E-5 +39600.0,744695.53,5424036.22,2.3728649398982115E-10 +126000.0,682695.53,5381786.22,2.875960024139177E-6 +36000.0,744695.53,5440786.22,0.0 +50400.0,725945.53,5337536.22,2.7440768690258717E-4 +28800.0,725695.53,5368786.22,1.1877570569722132E-23 +43200.0,648945.53,5409536.22,0.0 +3600.0,635445.53,5376786.22,0.0 +32400.0,771195.53,5392536.22,5.192142604681163E-5 +82800.0,682445.53,5395786.22,0.002702586543763844 +90000.0,725945.53,5493036.22,0.0010439069183325587 +82800.0,682695.53,5463036.22,1.2330142476057988E-4 +108000.0,743445.53,5473786.22,0.0 +82800.0,725695.53,5434536.22,0.015554835748620382 +32400.0,667195.53,5356036.22,3.5660900669030516E-13 +32400.0,664195.53,5412036.22,2.8536280001337385E-4 +72000.0,725695.53,5456786.22,0.0016877412890636972 +28800.0,699195.53,5426536.22,0.003360370765514746 +57600.0,666945.53,5439536.22,0.003527705583873496 +54000.0,649195.53,5432536.22,2.231198732094981E-6 +32400.0,725195.53,5475536.22,1.226097306917035E-6 +79200.0,667195.53,5454036.22,3.9224116347950855E-11 +68400.0,647195.53,5438536.22,2.7174092505029054E-6 +104400.0,755445.53,5354036.22,0.0 +0.0,736945.53,5462036.22,9.700691855097171E-5 +0.0,735445.53,5322036.22,0.0 +75600.0,790195.53,5329786.22,0.0 +57600.0,725445.53,5445036.22,0.013486738937966652 +3600.0,758695.53,5323536.22,3.871215686363705E-4 +14400.0,636945.53,5500536.22,3.902243326256835E-4 +7200.0,680695.53,5414786.22,0.0031443524491691762 +7200.0,680945.53,5474036.22,1.5222929585878438E-19 +111600.0,770695.53,5345786.22,0.0 +21600.0,683695.53,5465786.22,0.0018974088235183164 +79200.0,682695.53,5468286.22,5.9958870364689254E-5 +10800.0,726695.53,5324786.22,2.5427683311993274E-18 +50400.0,637445.53,5404286.22,2.1253431599485543E-11 +61200.0,649195.53,5414786.22,0.0 +3600.0,653945.53,5345786.22,0.0 +7200.0,699945.53,5388286.22,0.0016526452425193819 +14400.0,698945.53,5503036.22,0.0 +126000.0,632695.53,5503786.22,0.0 +46800.0,648945.53,5403036.22,0.0 +108000.0,682695.53,5413536.22,1.5118565350287359E-6 +111600.0,789695.53,5384036.22,0.0 +111600.0,631945.53,5385786.22,0.0 +86400.0,728695.53,5366786.22,3.7537052350335664E-6 +97200.0,631945.53,5429786.22,0.0 +61200.0,745195.53,5478286.22,3.213040928756448E-15 +39600.0,787195.53,5452036.22,0.0 +46800.0,632195.53,5369286.22,1.0262487474357178E-15 +50400.0,744695.53,5389786.22,0.0015110312745235646 +97200.0,682945.53,5502786.22,1.4695140240538105E-17 +18000.0,637445.53,5332536.22,9.526541008869182E-4 +46800.0,786945.53,5421536.22,2.5672188521777682E-8 +90000.0,790445.53,5369786.22,5.309426493120606E-5 +43200.0,789945.53,5365786.22,1.5907945436135143E-12 +126000.0,682945.53,5432536.22,3.8697056201169244E-4 +61200.0,787445.53,5431036.22,2.2218420009429723E-9 +64800.0,666945.53,5416286.22,3.3796176056792366E-6 +25200.0,771195.53,5457286.22,4.929229458100236E-4 +50400.0,708695.53,5368036.22,1.0760203249223932E-7 +72000.0,787445.53,5394536.22,0.0 +7200.0,665195.53,5394786.22,2.936178859421174E-7 +39600.0,744945.53,5482786.22,1.895678718224306E-4 +104400.0,743945.53,5357286.22,0.0 +36000.0,631945.53,5357286.22,5.407585851137132E-4 +14400.0,759945.53,5373786.22,3.463798446444312E-5 +97200.0,743445.53,5498036.22,0.0 +21600.0,648195.53,5409286.22,0.0 +3600.0,715695.53,5336286.22,0.0 +97200.0,667195.53,5407036.22,1.838884331371289E-10 +50400.0,786945.53,5404536.22,1.2379921403403915E-6 +64800.0,771945.53,5460536.22,7.472146572399293E-4 +82800.0,710445.53,5480536.22,7.178184258269999E-5 +25200.0,786695.53,5478786.22,0.0 +10800.0,715695.53,5396536.22,0.0043784991223905214 +111600.0,682695.53,5393786.22,5.165760522561431E-5 +68400.0,649195.53,5376536.22,0.0 +115200.0,770695.53,5335036.22,0.0 +126000.0,728445.53,5502286.22,1.731671001912405E-12 +7200.0,778195.53,5417036.22,3.268498553937811E-11 +118800.0,682945.53,5443036.22,0.0 +28800.0,742195.53,5401536.22,2.5702663937604323E-26 +100800.0,709195.53,5366786.22,1.2765705443307971E-8 +50400.0,709945.53,5451286.22,2.3497922311377892E-8 +97200.0,682695.53,5437786.22,1.6722722522856405E-7 +43200.0,744945.53,5465786.22,2.1837781593367917E-14 +3600.0,699695.53,5462536.22,0.0 +104400.0,647695.53,5483786.22,1.0678349885646622E-7 +126000.0,710445.53,5393036.22,2.8855544826365657E-4 +18000.0,638945.53,5413286.22,0.0 +18000.0,742195.53,5489536.22,0.0028845933702770993 +100800.0,790445.53,5341286.22,0.0 +32400.0,786695.53,5409786.22,2.2857051710765733E-4 +57600.0,771945.53,5487786.22,0.0 +79200.0,755195.53,5339036.22,0.0 +0.0,720195.53,5358536.22,0.0 +18000.0,682195.53,5363786.22,0.0 +115200.0,789695.53,5381036.22,0.0 +68400.0,665695.53,5338286.22,5.858295368630776E-4 +93600.0,745445.53,5458286.22,0.0 +46800.0,709945.53,5478286.22,4.336638424063236E-4 +93600.0,665945.53,5345536.22,2.0030685877886902E-22 +10800.0,771195.53,5362036.22,7.205191240192676E-13 +25200.0,649195.53,5320536.22,5.945609969053481E-13 +111600.0,789945.53,5442786.22,0.0 +118800.0,708695.53,5460786.22,0.0 +18000.0,698945.53,5461286.22,0.0 +18000.0,663945.53,5464036.22,1.0846469955067284E-7 +25200.0,683445.53,5375536.22,7.438645754382642E-5 +43200.0,682195.53,5452786.22,3.981778025806807E-9 +39600.0,648945.53,5430786.22,2.6999851954038405E-4 +118800.0,754695.53,5441036.22,0.0 +75600.0,667195.53,5461286.22,0.0 +68400.0,647445.53,5499286.22,4.182653519106232E-5 +28800.0,771445.53,5489036.22,0.0 +79200.0,787445.53,5377536.22,0.0 +10800.0,786695.53,5367286.22,1.1383805608944162E-7 +61200.0,709945.53,5408036.22,0.013290587081964702 +14400.0,741945.53,5477786.22,0.0 +115200.0,665695.53,5493286.22,4.543039529519219E-8 +43200.0,744695.53,5400786.22,0.0 +10800.0,742195.53,5333036.22,9.003088338061256E-11 +10800.0,664445.53,5366036.22,0.0 +14400.0,761445.53,5454286.22,7.966940477804451E-6 +61200.0,725445.53,5438786.22,0.024250611890346264 +126000.0,665695.53,5479536.22,4.206071114591889E-17 +18000.0,744695.53,5322286.22,6.004593570288576E-10 +14400.0,636945.53,5504286.22,4.494430242506685E-5 +7200.0,638195.53,5382786.22,5.5239505893972375E-6 +50400.0,787445.53,5466786.22,0.0 +39600.0,682695.53,5345536.22,0.0012985149477684446 +61200.0,647695.53,5332036.22,0.0 +46800.0,637945.53,5477036.22,2.4071863898416648E-15 +50400.0,743445.53,5361536.22,0.0 +18000.0,683445.53,5446786.22,3.5150159247508354E-12 +61200.0,710195.53,5475286.22,7.856623927746471E-5 +46800.0,771695.53,5466536.22,1.2138888794870474E-7 +86400.0,770445.53,5332286.22,5.384645359939872E-13 +10800.0,638695.53,5453536.22,1.6460363137321013E-4 +46800.0,709695.53,5413286.22,0.004447369492917675 +28800.0,666945.53,5321036.22,5.108237057951959E-11 +57600.0,754695.53,5332036.22,0.0 +122400.0,728195.53,5504036.22,5.5001558972751275E-5 +18000.0,709695.53,5324536.22,0.0 +0.0,736695.53,5391036.22,2.6920152232450407E-4 +36000.0,745445.53,5369536.22,8.130468110764764E-5 +50400.0,725445.53,5465536.22,7.341060045809257E-6 +68400.0,755195.53,5363286.22,2.458194195462097E-4 +93600.0,754695.53,5498536.22,0.0 +54000.0,787195.53,5385036.22,0.0 +64800.0,745195.53,5455036.22,8.235232181833821E-4 +90000.0,665945.53,5353286.22,2.555687809079443E-5 +32400.0,648695.53,5393036.22,9.436286760413617E-9 +50400.0,632195.53,5362786.22,3.732546867441682E-4 +43200.0,787195.53,5429286.22,1.5270358433229932E-9 +36000.0,682695.53,5356036.22,0.0 +54000.0,666945.53,5463286.22,5.806329013211245E-9 +32400.0,709695.53,5465786.22,0.0 +54000.0,666695.53,5404536.22,2.2461372813846518E-4 +46800.0,637445.53,5414536.22,4.4421801666375997E-5 +122400.0,708695.53,5468286.22,0.0 +97200.0,693695.53,5359786.22,6.166620633164017E-5 +86400.0,745195.53,5393286.22,3.1171109130419613E-4 +43200.0,710445.53,5354536.22,1.8399092690044942E-6 +118800.0,770695.53,5331536.22,0.0 +50400.0,647695.53,5366536.22,3.5087809922118433E-9 +36000.0,664195.53,5397786.22,0.0021316137587873646 +50400.0,725195.53,5400786.22,2.6601875487083395E-4 +93600.0,682695.53,5445036.22,0.0 +79200.0,647945.53,5336786.22,0.0 +21600.0,725445.53,5370286.22,5.1438818639222313E-14 +54000.0,636945.53,5505036.22,1.821407317273941E-5 +61200.0,744945.53,5399036.22,0.0 +36000.0,648945.53,5452286.22,8.742889738796792E-7 +14400.0,776945.53,5468786.22,2.3640508986600065E-9 +79200.0,728445.53,5331536.22,5.115341204551519E-8 +93600.0,631945.53,5439286.22,2.14338626601389E-4 +39600.0,786945.53,5442536.22,7.3640409637327764E-6 +100800.0,709195.53,5360536.22,8.826614670540042E-7 +122400.0,667445.53,5425536.22,0.0 +25200.0,664195.53,5470036.22,4.615405790861533E-5 +7200.0,788445.53,5327036.22,1.2273043029153317E-10 +21600.0,771695.53,5354286.22,2.202838441573357E-7 +21600.0,699195.53,5484536.22,2.017042976852685E-5 +7200.0,665445.53,5463786.22,4.000304505858808E-14 +43200.0,666945.53,5497536.22,1.3028375698636578E-8 +36000.0,771195.53,5389786.22,2.4264602041991147E-5 +68400.0,745195.53,5443286.22,0.0 +32400.0,744695.53,5456286.22,5.799111697540393E-4 +57600.0,770195.53,5346536.22,0.0024549117729529683 +61200.0,789695.53,5497536.22,0.0 +68400.0,682445.53,5427536.22,2.1989946883207976E-4 +18000.0,761695.53,5476536.22,1.037471302528467E-9 +28800.0,787195.53,5499536.22,0.0 +43200.0,710445.53,5348286.22,1.824388839062635E-5 +43200.0,745445.53,5346036.22,6.17430630770012E-5 +75600.0,647195.53,5409286.22,0.0 +90000.0,667195.53,5436536.22,7.123340879041073E-5 +108000.0,725695.53,5382536.22,3.470500389562014E-5 +7200.0,715445.53,5406286.22,2.1743719548632793E-4 +7200.0,680945.53,5477786.22,0.0 +82800.0,754945.53,5323786.22,5.049720456600422E-4 +115200.0,647695.53,5465536.22,0.0 +10800.0,788195.53,5448036.22,0.0 +25200.0,698945.53,5394286.22,0.005360072885995025 +3600.0,742695.53,5431536.22,2.174849982233723E-4 +108000.0,647445.53,5409286.22,0.0 +39600.0,637945.53,5504786.22,1.9235077374988506E-6 +79200.0,665945.53,5366536.22,0.0 +64800.0,637945.53,5398786.22,6.123683695544214E-7 +0.0,736945.53,5449786.22,6.7452204257929636E-6 +108000.0,682945.53,5476536.22,0.0 +100800.0,725695.53,5393036.22,3.931540106129208E-8 +3600.0,760945.53,5332786.22,1.7453853325663566E-11 +28800.0,726945.53,5450036.22,0.019206105765447172 +115200.0,682695.53,5385286.22,5.378259831898873E-10 +64800.0,787445.53,5407786.22,1.1988914226479576E-4 +64800.0,666945.53,5420036.22,4.287758416171956E-12 +86400.0,631945.53,5439536.22,8.545476134416887E-4 +97200.0,743945.53,5370036.22,0.0 +86400.0,771945.53,5413036.22,5.060954926097419E-9 +61200.0,665695.53,5364286.22,0.0 +43200.0,709695.53,5407286.22,0.008202785960046215 +7200.0,698945.53,5368036.22,1.2754874763797484E-22 +82800.0,708945.53,5336536.22,2.341346096041145E-9 +79200.0,743695.53,5333786.22,6.853058489180706E-20 +32400.0,631945.53,5361036.22,1.7440269015722354E-6 +72000.0,771695.53,5382036.22,2.324706590212936E-10 +68400.0,771945.53,5452536.22,3.4904162155379474E-6 +50400.0,760445.53,5456536.22,0.0021738979286748264 +100800.0,682945.53,5487036.22,0.0 +90000.0,755195.53,5320786.22,0.0 +64800.0,649195.53,5396036.22,0.0013836342071890586 +50400.0,632195.53,5356536.22,2.2371671391556753E-4 +93600.0,632445.53,5501536.22,1.6681531437614066E-8 +21600.0,786445.53,5437286.22,2.811676799492209E-7 +64800.0,667195.53,5487286.22,9.431899742671508E-4 +64800.0,665695.53,5347286.22,1.5118738452139117E-8 +100800.0,665945.53,5332786.22,5.878839671949103E-8 +7200.0,743195.53,5424036.22,5.453501239025885E-12 +18000.0,725195.53,5333286.22,2.1793857695039325E-14 +7200.0,653695.53,5401286.22,1.2234390439600436E-7 +10800.0,637195.53,5360536.22,3.061550319189858E-4 +21600.0,741945.53,5403036.22,8.479801806390506E-12 +126000.0,725945.53,5419786.22,7.364102907967158E-4 +118800.0,728195.53,5503036.22,1.7708078714673641E-4 +104400.0,760695.53,5395536.22,0.0 +46800.0,647445.53,5330786.22,2.014403420346911E-17 +122400.0,632195.53,5444786.22,2.98262850425734E-15 +100800.0,693695.53,5350286.22,1.164670947445251E-5 +43200.0,760445.53,5483786.22,0.0 +86400.0,682695.53,5455536.22,4.6309344296474603E-10 +32400.0,786695.53,5413536.22,7.223148258884215E-4 +115200.0,770695.53,5338786.22,0.0 +79200.0,760445.53,5378536.22,0.0 +79200.0,789695.53,5448286.22,0.0 +39600.0,726945.53,5398286.22,5.6447909760109386E-5 +104400.0,743445.53,5493536.22,3.668607596161156E-10 +68400.0,693445.53,5349536.22,0.0012111796047769934 +104400.0,665945.53,5321286.22,0.0 +93600.0,745445.53,5462036.22,0.0 +82800.0,647945.53,5327286.22,3.486421031297122E-5 +108000.0,650445.53,5363786.22,5.525393603483974E-6 +126000.0,647445.53,5388786.22,0.0 +75600.0,745445.53,5501536.22,0.0 +100800.0,728695.53,5347536.22,0.0 +97200.0,760695.53,5406036.22,0.0 +7200.0,726445.53,5328286.22,0.0 +32400.0,771945.53,5325536.22,0.0 +118800.0,770195.53,5451286.22,1.7058361410248424E-19 +32400.0,741695.53,5506036.22,0.0 +39600.0,786945.53,5446286.22,5.9146666734073886E-15 +72000.0,760445.53,5389036.22,0.0 +100800.0,745445.53,5445036.22,0.0 +115200.0,789945.53,5444036.22,0.0 +93600.0,710445.53,5464786.22,0.0 +104400.0,789945.53,5466036.22,0.0 +21600.0,699195.53,5488286.22,3.4051460339498796E-5 +118800.0,755195.53,5499286.22,0.0 +79200.0,710445.53,5492036.22,1.9874421988806058E-4 +3600.0,670695.53,5378536.22,1.0765286575877429E-6 +104400.0,760695.53,5389286.22,0.0 +104400.0,725945.53,5457036.22,1.205638918070742E-4 +18000.0,777195.53,5495286.22,0.0 +97200.0,754695.53,5491286.22,0.0 +0.0,701945.53,5393286.22,0.0019846050787021585 +25200.0,683695.53,5446536.22,2.6081919722443583E-13 +0.0,657445.53,5342036.22,0.0 +3600.0,679945.53,5421036.22,0.0012212551585020356 +93600.0,789945.53,5496536.22,0.0 +111600.0,709195.53,5342536.22,3.1232299503084633E-28 +28800.0,771945.53,5352786.22,1.5796645703635318E-4 +104400.0,770195.53,5494786.22,0.0 +118800.0,632445.53,5447286.22,0.0 +75600.0,755195.53,5348536.22,0.0 +90000.0,647445.53,5450536.22,0.0 +100800.0,745195.53,5380286.22,0.0 +61200.0,708695.53,5339036.22,4.0749717070670595E-5 +18000.0,786945.53,5340786.22,4.221719071268786E-8 +64800.0,682695.53,5501536.22,2.0669350573360615E-16 +68400.0,710195.53,5449286.22,6.956907365907471E-6 +118800.0,647695.53,5456036.22,0.0 +68400.0,666945.53,5401036.22,3.172981390386548E-4 +28800.0,637445.53,5490786.22,2.3764513867145597E-7 +111600.0,770195.53,5477786.22,0.0 +111600.0,743445.53,5470286.22,0.0 +64800.0,787445.53,5401536.22,8.011938117571493E-15 +3600.0,776195.53,5345786.22,4.595994914988141E-14 +72000.0,728445.53,5346286.22,2.3258683301353653E-6 +7200.0,741945.53,5342786.22,7.624404247550742E-16 +115200.0,710445.53,5421536.22,1.320294080659499E-4 +28800.0,786945.53,5500036.22,0.0 +68400.0,725695.53,5470536.22,8.151370479954834E-4 +104400.0,789695.53,5401036.22,0.0 +57600.0,665695.53,5358286.22,2.945727967884297E-16 +86400.0,665945.53,5343786.22,4.063735752454977E-12 +64800.0,725695.53,5476286.22,1.4948718984344204E-5 +39600.0,771695.53,5498536.22,0.0 +10800.0,665445.53,5388536.22,0.0 +36000.0,637695.53,5450536.22,6.136306845555985E-9 +68400.0,632695.53,5362786.22,2.5050309240800265E-4 +68400.0,755195.53,5351036.22,1.0381328222949606E-4 +115200.0,632195.53,5455536.22,0.0 +108000.0,790445.53,5328536.22,0.0 +7200.0,638195.53,5397536.22,1.0794287565880763E-4 +122400.0,745445.53,5401786.22,0.0 +50400.0,709695.53,5384036.22,5.023348580380571E-4 +57600.0,647695.53,5347036.22,1.992499969088999E-5 +57600.0,709945.53,5422786.22,0.03142317411319116 +14400.0,698695.53,5435786.22,5.89301171159115E-7 +10800.0,777195.53,5328036.22,6.053045500545568E-8 +111600.0,743945.53,5338286.22,0.0 +104400.0,770195.53,5496786.22,0.0 +79200.0,665945.53,5370786.22,4.404804146985026E-9 +61200.0,760195.53,5422036.22,5.205718290775661E-5 +36000.0,771195.53,5377036.22,7.719306552323939E-12 +75600.0,754945.53,5347036.22,0.0 +115200.0,725945.53,5435536.22,4.2180425370251745E-4 +36000.0,664195.53,5385536.22,3.553940201334541E-18 +57600.0,637945.53,5430286.22,8.121610053646475E-13 +82800.0,771945.53,5420786.22,7.104600856420152E-12 +72000.0,647445.53,5502286.22,0.0010757500787333802 +122400.0,770195.53,5456786.22,8.857685918166214E-6 +100800.0,771945.53,5389786.22,0.0 +93600.0,631945.53,5427036.22,0.0 +122400.0,709195.53,5332036.22,0.0 +86400.0,631945.53,5443786.22,1.2260823067287289E-5 +93600.0,667195.53,5418536.22,2.230145232634944E-10 +64800.0,728195.53,5352286.22,9.153932673309549E-9 +36000.0,709695.53,5455286.22,1.2915993264310851E-26 +100800.0,760695.53,5394536.22,0.0 +126000.0,666195.53,5337036.22,0.0 +111600.0,788695.53,5368036.22,0.0 +7200.0,758445.53,5375286.22,8.155778641584691E-8 +18000.0,666695.53,5341286.22,5.6991182356128275E-5 +68400.0,760695.53,5469786.22,5.419242697591061E-4 +86400.0,682445.53,5376286.22,1.4727491926269225E-5 +57600.0,744945.53,5413286.22,0.0 +108000.0,667445.53,5449786.22,3.140444424988411E-8 +68400.0,744945.53,5382036.22,0.0 +25200.0,741945.53,5379786.22,1.5541347858088108E-12 +93600.0,743695.53,5320786.22,0.0 +43200.0,745445.53,5333286.22,1.5106563013707876E-19 +72000.0,745445.53,5500786.22,0.0 +68400.0,728195.53,5348036.22,2.489053972548572E-13 +118800.0,728945.53,5359786.22,0.0 +21600.0,786695.53,5498036.22,0.0 +0.0,717195.53,5422536.22,0.001968501830966975 +14400.0,744695.53,5365036.22,9.1221585815667E-14 +61200.0,708695.53,5333286.22,1.613720263419671E-7 +50400.0,666945.53,5478036.22,6.800013930923147E-5 +93600.0,710445.53,5469036.22,0.0 +28800.0,664195.53,5431536.22,0.0 +3600.0,664695.53,5403786.22,5.414235356677049E-17 +54000.0,759945.53,5375286.22,1.2335699703152942E-7 +54000.0,725945.53,5322786.22,2.108024553706377E-22 +21600.0,649195.53,5356036.22,1.4585370636257553E-6 +57600.0,682195.53,5391036.22,0.008031614662020427 +14400.0,638945.53,5449036.22,0.0 +54000.0,637445.53,5378786.22,3.1977372804437525E-6 +90000.0,667195.53,5426036.22,0.0 +43200.0,683945.53,5393786.22,0.005158638296620154 +36000.0,648945.53,5439536.22,1.4751412009472663E-24 +43200.0,789945.53,5367786.22,1.162562113100304E-6 +0.0,752445.53,5478286.22,4.965550035675677E-4 +72000.0,755195.53,5347536.22,2.763949885191577E-6 +0.0,717695.53,5484786.22,1.4790921505120023E-14 +97200.0,755445.53,5364536.22,0.0 +32400.0,664445.53,5409786.22,3.773436824829316E-8 +108000.0,760695.53,5377536.22,0.0 +64800.0,682445.53,5438536.22,1.0947948693660418E-4 +68400.0,632695.53,5356536.22,1.4328509689373646E-4 +90000.0,771945.53,5414036.22,3.487755148030314E-10 +104400.0,632445.53,5466786.22,0.0 +21600.0,726695.53,5443286.22,0.01957679831774666 +79200.0,693445.53,5325286.22,2.2256640218084308E-5 +64800.0,667195.53,5475036.22,0.002053925065957947 +64800.0,665695.53,5335036.22,4.99936018072682E-4 +68400.0,666945.53,5413286.22,0.006423852268070652 +0.0,639195.53,5454036.22,0.0 +3600.0,777695.53,5426536.22,0.0 +100800.0,665945.53,5320536.22,1.8956109001371514E-26 +50400.0,666695.53,5413036.22,0.008425189649183108 +86400.0,771945.53,5400786.22,0.0019364594355473306 +18000.0,725195.53,5337536.22,5.077429554247418E-8 +104400.0,709195.53,5365286.22,1.971093202028539E-5 +79200.0,743695.53,5348536.22,2.511558568108595E-4 +122400.0,632195.53,5432536.22,6.664990850142437E-23 +36000.0,771945.53,5322286.22,0.0 +72000.0,745195.53,5435536.22,3.4499466422824247E-6 +97200.0,771945.53,5397286.22,1.5992307436075716E-8 +50400.0,682945.53,5352036.22,3.4729166308124266E-14 +7200.0,758695.53,5442536.22,0.0 +68400.0,725695.53,5466286.22,6.934572412456316E-6 +82800.0,647945.53,5339536.22,0.0 +10800.0,761195.53,5442036.22,1.2047794421306353E-11 +64800.0,790195.53,5354536.22,5.3979245972548854E-5 +126000.0,650445.53,5328786.22,2.0150441215159144E-7 +68400.0,649195.53,5389286.22,0.0 +93600.0,632195.53,5504286.22,5.465855407693498E-6 +68400.0,771695.53,5383536.22,9.533855640440829E-9 +68400.0,789695.53,5474786.22,0.0 +21600.0,771695.53,5352536.22,3.7629826697315534E-4 +39600.0,631945.53,5331786.22,3.0371421146278063E-10 +32400.0,759945.53,5465036.22,2.7125012385296393E-9 +36000.0,637445.53,5451036.22,1.034813642070404E-7 +111600.0,665695.53,5497536.22,7.323069341443739E-13 +126000.0,632445.53,5432786.22,0.0 +79200.0,745445.53,5494036.22,7.410714550908904E-19 +118800.0,631945.53,5381036.22,3.25301881862037E-11 +97200.0,745195.53,5387536.22,1.5130766176155414E-8 +14400.0,683195.53,5409286.22,0.002933590687292336 +54000.0,632195.53,5337286.22,8.720020041469597E-11 +97200.0,790445.53,5354536.22,0.0 +64800.0,647195.53,5447536.22,7.002685516230312E-6 +46800.0,745445.53,5327036.22,3.5342391172279097E-4 +43200.0,771695.53,5485536.22,0.0 +21600.0,776945.53,5398036.22,1.7414773696481112E-12 +10800.0,742195.53,5335036.22,4.473475849820338E-15 +54000.0,760195.53,5442536.22,0.0 +36000.0,667195.53,5333786.22,1.8378830419227057E-7 +68400.0,760195.53,5395036.22,0.002394924993478955 +3600.0,758195.53,5454036.22,3.7085783812714937E-6 +104400.0,790445.53,5337786.22,0.0 +54000.0,786945.53,5389786.22,0.0 +82800.0,647195.53,5398536.22,4.3871886817178516E-4 +43200.0,760195.53,5486786.22,0.0 +90000.0,728695.53,5368036.22,0.0 +21600.0,761695.53,5440536.22,2.989641709806988E-10 +43200.0,725195.53,5436536.22,0.026108207501357967 +118800.0,743945.53,5324036.22,1.1742334146538584E-7 +0.0,752195.53,5413536.22,0.0 +14400.0,776695.53,5412036.22,2.5613840716035906E-8 +46800.0,771445.53,5412036.22,4.375598890542089E-7 +97200.0,667445.53,5476036.22,2.5796454457598176E-4 +21600.0,664445.53,5501036.22,1.737540279194381E-7 +90000.0,789945.53,5497786.22,0.0 +39600.0,744945.53,5495536.22,4.4253224802703396E-18 +68400.0,710195.53,5453536.22,1.3942143102222911E-14 +97200.0,728695.53,5351036.22,0.0 +64800.0,771945.53,5456286.22,2.1865847234250175E-4 +7200.0,683445.53,5362036.22,0.0 +25200.0,786445.53,5407786.22,8.026065519684602E-4 +43200.0,787195.53,5431286.22,1.5827825386308613E-9 +54000.0,710195.53,5503286.22,0.0 +54000.0,708695.53,5363286.22,0.0011057305764294813 +18000.0,648445.53,5461286.22,6.219269076469283E-8 +25200.0,637195.53,5458036.22,4.0837996867287504E-5 +54000.0,745195.53,5501036.22,0.0 +118800.0,630945.53,5364786.22,0.0 +118800.0,710445.53,5414036.22,8.565587556673108E-5 +46800.0,771695.53,5479286.22,0.0 +64800.0,760195.53,5398786.22,2.4202639136998005E-5 +3600.0,699445.53,5391536.22,0.006387018816369767 +126000.0,647695.53,5443536.22,0.0 +126000.0,790195.53,5495286.22,0.0 +61200.0,725445.53,5424036.22,0.03977945637981644 +118800.0,682945.53,5447286.22,0.0 +122400.0,693695.53,5321786.22,1.7788813709284076E-11 +21600.0,761695.53,5434286.22,4.967569676704496E-9 +54000.0,636945.53,5507036.22,2.2237431791522308E-7 +39600.0,682195.53,5465286.22,0.004399412228014982 +104400.0,771445.53,5506286.22,0.0 +126000.0,632695.53,5491536.22,0.0 +21600.0,787945.53,5505286.22,0.0 +18000.0,761445.53,5411536.22,4.225584747287105E-16 +100800.0,647695.53,5501536.22,1.404556870753675E-4 +64800.0,728195.53,5356036.22,7.542905197769989E-7 +97200.0,631945.53,5417536.22,0.0 +18000.0,777195.53,5482536.22,0.0 +57600.0,760195.53,5426536.22,1.3099060200611276E-4 +25200.0,683445.53,5387786.22,2.8538261992927197E-5 +97200.0,682945.53,5490536.22,0.0 +57600.0,632195.53,5320536.22,9.549522486160181E-4 +3600.0,680445.53,5487536.22,0.0 +115200.0,788695.53,5358536.22,0.0 +3600.0,777695.53,5430286.22,0.0 +7200.0,665195.53,5390536.22,0.0 +64800.0,728445.53,5351536.22,4.717398306292798E-9 +118800.0,754695.53,5445286.22,0.0 +72000.0,631945.53,5475786.22,0.0 +54000.0,725445.53,5450786.22,0.004331652944162356 +72000.0,745445.53,5504536.22,0.0 +7200.0,758695.53,5446286.22,0.0 +118800.0,682195.53,5506286.22,0.0 +21600.0,648695.53,5484036.22,3.591448861768275E-8 +3600.0,715695.53,5348536.22,1.75241866397327E-7 +86400.0,725695.53,5428786.22,0.010665336472864304 +46800.0,725445.53,5494786.22,0.008788388282194182 +3600.0,679945.53,5419036.22,8.784841176589378E-4 +54000.0,771695.53,5434786.22,7.8268207262538E-15 +36000.0,647445.53,5367286.22,1.4395826140819222E-11 +61200.0,743445.53,5330536.22,4.0275977692257783E-7 +104400.0,710195.53,5375536.22,1.1978440735699808E-9 +111600.0,790445.53,5323036.22,0.0 +75600.0,725445.53,5395036.22,2.477978385206145E-4 +61200.0,709945.53,5420786.22,0.018590116516667178 +14400.0,648945.53,5364786.22,5.349735274331209E-5 +36000.0,726945.53,5407286.22,7.467962566033564E-4 +90000.0,771945.53,5410286.22,8.773199977505344E-9 +108000.0,728695.53,5339036.22,0.0 +18000.0,709695.53,5320286.22,0.0 +32400.0,683695.53,5384786.22,5.925694861177396E-5 +90000.0,760695.53,5415036.22,5.272977891312005E-7 +79200.0,647945.53,5349036.22,0.0 +90000.0,682445.53,5385786.22,8.037768596149742E-5 +108000.0,745445.53,5426536.22,1.8093869178094046E-12 +122400.0,788695.53,5352286.22,0.0 +57600.0,743445.53,5341036.22,0.0 +32400.0,664445.53,5413536.22,0.005133115971381221 +36000.0,760695.53,5331286.22,3.2888269852934825E-13 +100800.0,667445.53,5464536.22,0.0 +43200.0,637445.53,5427536.22,9.02596555461348E-12 +7200.0,648445.53,5366036.22,2.718411208814402E-8 +43200.0,771445.53,5422536.22,3.38036636407078E-7 +54000.0,760195.53,5446286.22,0.0 +118800.0,789945.53,5438536.22,0.0 +72000.0,743695.53,5363286.22,0.0 +118800.0,693945.53,5369286.22,3.4630286639059234E-6 +0.0,659195.53,5493536.22,0.0 +54000.0,789945.53,5338036.22,0.0 +50400.0,789945.53,5354786.22,3.534158477470178E-5 +25200.0,786445.53,5401536.22,3.5940551578523725E-16 +43200.0,682695.53,5324786.22,0.0019200549864494792 +111600.0,710445.53,5417286.22,4.2501178858933976E-5 +111600.0,745445.53,5415036.22,0.0 +61200.0,744945.53,5411286.22,0.0 +28800.0,786695.53,5432786.22,2.87856294506639E-12 +100800.0,743445.53,5490786.22,0.0 +14400.0,741945.53,5473536.22,0.0 +7200.0,741445.53,5474786.22,0.0 +32400.0,666695.53,5496786.22,6.357628443353903E-8 +46800.0,637445.53,5410786.22,1.5799167137591632E-7 +97200.0,745195.53,5383786.22,0.0 +25200.0,666945.53,5343036.22,1.3469622859126334E-8 +115200.0,665695.53,5489036.22,3.1258827572125807E-6 +86400.0,667445.53,5491786.22,4.951099188738647E-4 +54000.0,760445.53,5441786.22,0.0 +25200.0,648195.53,5398286.22,0.0010125173099363842 +68400.0,647445.53,5503536.22,0.0027907538590837967 +25200.0,760195.53,5340786.22,0.0 +25200.0,682445.53,5373786.22,6.642504331210261E-6 +10800.0,654195.53,5463786.22,2.49696773205417E-13 +25200.0,726695.53,5430286.22,0.010567058491156234 +79200.0,647195.53,5408036.22,0.0 +0.0,778945.53,5410286.22,6.748861877979575E-4 +21600.0,683445.53,5398786.22,0.01335034287064519 +75600.0,682695.53,5479786.22,0.0 +54000.0,709695.53,5381536.22,5.169019903995503E-4 +118800.0,708695.53,5459036.22,0.0 +28800.0,710195.53,5365036.22,6.215443465720615E-4 +82800.0,667195.53,5432286.22,2.4149191885133423E-10 +39600.0,709945.53,5501536.22,6.680605571267877E-4 +25200.0,648445.53,5393786.22,1.4702521038578647E-6 +97200.0,632195.53,5494786.22,0.0 +86400.0,647195.53,5391036.22,0.0 +10800.0,761195.53,5445786.22,3.6034437705532865E-13 +57600.0,771695.53,5429036.22,5.157401923941465E-6 +93600.0,632195.53,5492036.22,0.0 +32400.0,667195.53,5356536.22,5.429069513971224E-15 +0.0,639195.53,5441786.22,0.0 +57600.0,649195.53,5415536.22,0.0 +28800.0,709695.53,5489036.22,2.9776196644432916E-6 +75600.0,632695.53,5337286.22,6.753087188682807E-9 +97200.0,647445.53,5444036.22,0.0 +57600.0,760195.53,5430286.22,3.354309177683619E-4 +118800.0,665695.53,5485786.22,1.1430938712768165E-19 +86400.0,760695.53,5419786.22,2.544022435908504E-4 +93600.0,725695.53,5422536.22,0.0018643432592562975 +43200.0,725445.53,5488786.22,9.583055297205931E-6 +100800.0,632195.53,5475036.22,0.0 +97200.0,632445.53,5492286.22,0.0 +21600.0,787445.53,5367536.22,1.5669037791093882E-16 +46800.0,637695.53,5408036.22,8.252244465372511E-10 +25200.0,742195.53,5444786.22,8.257593138107699E-11 +25200.0,664445.53,5477786.22,0.0010787608748686224 +75600.0,760445.53,5377286.22,0.0 +82800.0,728445.53,5324036.22,0.0 +39600.0,745445.53,5359036.22,1.3148789760733826E-16 +25200.0,761695.53,5421286.22,8.499398426183961E-6 +108000.0,632445.53,5469786.22,0.0 +108000.0,770195.53,5485286.22,0.0 +50400.0,637695.53,5391036.22,3.195607068637423E-7 +39600.0,759945.53,5434786.22,3.819386065095058E-18 +68400.0,708945.53,5368286.22,1.3692038415351366E-8 +126000.0,693945.53,5371036.22,1.4662093758831516E-6 +61200.0,667195.53,5500286.22,1.8100181453136827E-12 +21600.0,776945.53,5385786.22,2.794505152843165E-4 +86400.0,745445.53,5464536.22,1.1657986636138147E-9 +126000.0,770695.53,5321036.22,0.0 +79200.0,631945.53,5463036.22,0.0 +39600.0,710445.53,5360786.22,6.130368137469873E-4 +21600.0,664195.53,5493286.22,4.552218255363047E-10 +21600.0,663945.53,5426536.22,0.0 +104400.0,771945.53,5378286.22,0.0 +54000.0,682445.53,5473286.22,6.124694936175673E-7 +14400.0,761195.53,5385536.22,0.0 +115200.0,632445.53,5452786.22,0.0 +86400.0,647945.53,5326036.22,4.621917504063898E-5 +115200.0,630945.53,5366036.22,4.777858847718174E-6 +43200.0,760445.53,5496536.22,0.0 +21600.0,760195.53,5351786.22,5.7697141635310834E-8 +90000.0,745445.53,5477786.22,7.08043998769103E-19 +126000.0,755695.53,5369286.22,6.925050487517651E-7 +75600.0,708945.53,5351286.22,9.610789374385755E-9 +108000.0,745445.53,5430286.22,2.160150102956168E-9 +108000.0,710445.53,5433036.22,8.873912805322081E-14 +18000.0,648445.53,5449036.22,2.5344543803654593E-5 +14400.0,776695.53,5399786.22,2.5786847462619035E-10 +36000.0,787195.53,5463036.22,0.0 +90000.0,760695.53,5427286.22,3.512146754164756E-4 +21600.0,744945.53,5343036.22,0.0 +108000.0,759945.53,5506536.22,0.0 +32400.0,637195.53,5400536.22,2.574922273317259E-13 +104400.0,743445.53,5481286.22,0.0 +75600.0,728445.53,5335036.22,4.1524977109687874E-15 +68400.0,754945.53,5355536.22,3.5197883952037155E-16 +46800.0,760195.53,5484786.22,0.0 +32400.0,771945.53,5337786.22,7.121274471169096E-9 +32400.0,699195.53,5403036.22,0.010320312651680019 +104400.0,682695.53,5420786.22,2.7857674499930865E-5 +122400.0,665695.53,5482786.22,8.227941229908216E-10 +111600.0,647695.53,5466786.22,1.2291683459281997E-10 +0.0,674195.53,5433286.22,2.2888542692541078E-5 +50400.0,667445.53,5346036.22,2.621322774217271E-8 +43200.0,771445.53,5410286.22,4.203213624669235E-7 +21600.0,771195.53,5484786.22,0.0 +75600.0,693445.53,5336786.22,9.888265151963402E-4 +64800.0,693445.53,5358536.22,0.018005425261264873 +36000.0,744695.53,5445036.22,0.0 +0.0,659195.53,5481286.22,0.0 +82800.0,770445.53,5336036.22,1.1412308620109652E-7 +46800.0,787445.53,5483536.22,0.0 +122400.0,745445.53,5403536.22,0.0 +115200.0,770195.53,5469286.22,0.0 +28800.0,777195.53,5392286.22,9.769312788228006E-9 +10800.0,787945.53,5386786.22,0.0 +50400.0,743445.53,5372286.22,0.0012279895031403387 +7200.0,741945.53,5355036.22,0.0 +3600.0,741445.53,5356286.22,0.0 +10800.0,638445.53,5386536.22,4.219762305638215E-8 +43200.0,667445.53,5373286.22,1.829101226384098E-8 +86400.0,665945.53,5356036.22,1.0157281112879142E-10 +43200.0,648945.53,5413786.22,0.0 +93600.0,760695.53,5413536.22,3.128748844118135E-11 +0.0,658695.53,5418786.22,1.3654394365461458E-4 +57600.0,682445.53,5458036.22,2.990246085885282E-10 +46800.0,725445.53,5482536.22,3.6540028797324095E-4 +61200.0,771695.53,5422786.22,1.1243390369291195E-6 +32400.0,647195.53,5322786.22,2.942939364548748E-5 +122400.0,788695.53,5356036.22,0.0 +64800.0,709945.53,5391286.22,0.003044277830750037 +50400.0,771445.53,5382536.22,2.0306083727304698E-10 +61200.0,647195.53,5456286.22,1.1482494090290067E-14 +57600.0,649195.53,5419286.22,1.8160131623276394E-18 +36000.0,637695.53,5462786.22,1.3332793508106692E-4 +75600.0,760195.53,5376036.22,2.022632866238985E-10 +32400.0,683945.53,5447786.22,6.8429009234235055E-15 +46800.0,649195.53,5464286.22,4.635861967086022E-4 +122400.0,632445.53,5446286.22,1.0453449503390243E-19 +122400.0,682945.53,5440036.22,3.78606852467104E-12 +10800.0,648695.53,5365536.22,4.542339483439285E-6 +108000.0,632195.53,5468536.22,0.0 +10800.0,726195.53,5452786.22,0.007180149057002687 +10800.0,683695.53,5347286.22,0.00230753038681642 +21600.0,787445.53,5371286.22,1.5729303321059624E-15 +72000.0,754945.53,5346036.22,2.731351618716551E-9 +25200.0,663945.53,5403036.22,2.0616373713848893E-7 +86400.0,743695.53,5322786.22,4.4716946070191154E-10 +14400.0,698695.53,5432036.22,1.2840847272877054E-4 +79200.0,708945.53,5347786.22,9.926167819046839E-9 +111600.0,710445.53,5429536.22,4.635785462631024E-12 +21600.0,698945.53,5417536.22,8.996267548226817E-4 +39600.0,664195.53,5381036.22,1.2551556452621593E-5 +108000.0,728695.53,5326786.22,0.0 +72000.0,743695.53,5351036.22,7.711978217055237E-6 +118800.0,709195.53,5331036.22,1.6518170649493922E-5 +104400.0,667445.53,5465536.22,3.213003996742917E-12 +97200.0,710445.53,5457286.22,0.0 +93600.0,728695.53,5370786.22,1.998680333000411E-10 +50400.0,789945.53,5342536.22,0.0 +3600.0,680195.53,5473786.22,3.458916556898183E-7 +111600.0,728695.53,5323286.22,0.0 +111600.0,725695.53,5379286.22,3.3918699788273704E-5 +118800.0,790195.53,5501536.22,0.0 +61200.0,790195.53,5373536.22,1.4113953288418397E-6 +104400.0,693695.53,5342786.22,2.232696605007492E-4 +75600.0,665695.53,5321536.22,0.0 +108000.0,667445.53,5462036.22,1.571825374178677E-11 +79200.0,790195.53,5320536.22,8.337952441940285E-6 +32400.0,666695.53,5484536.22,1.2095572140131744E-4 +3600.0,776445.53,5353536.22,1.2983969091502E-4 +72000.0,728195.53,5336786.22,0.0 +28800.0,648945.53,5496036.22,2.3449097423890485E-11 +21600.0,637195.53,5483286.22,0.0020590068316833653 +93600.0,667195.53,5430786.22,2.0705858248079036E-15 +10800.0,741695.53,5467036.22,0.0 +3600.0,665445.53,5341036.22,4.3270754022743655E-5 +21600.0,663945.53,5430286.22,0.0 +111600.0,682695.53,5406036.22,4.8383605319359674E-5 +25200.0,648195.53,5386036.22,0.0 +18000.0,636945.53,5460536.22,5.700648829469989E-7 +61200.0,725695.53,5489036.22,4.3630559639846245E-5 +46800.0,683945.53,5395536.22,0.0073430779428884044 +0.0,781945.53,5358536.22,3.834491746528641E-14 +111600.0,667195.53,5375286.22,1.2638575193424095E-6 +18000.0,648195.53,5447786.22,9.602245852721577E-5 +122400.0,650445.53,5336286.22,0.0 +39600.0,786695.53,5377286.22,0.0 +75600.0,728195.53,5325286.22,2.79922301048081E-14 +115200.0,647445.53,5398536.22,1.7946988393066696E-5 +97200.0,667195.53,5419286.22,1.7756011044230733E-18 +57600.0,665695.53,5370536.22,4.707748420713364E-9 +0.0,763445.53,5400536.22,3.0057256295695725E-6 +32400.0,682195.53,5498536.22,1.8223163373885304E-23 \ No newline at end of file