From 17ea65e0247122407c4ddddca6859f309f3547b3 Mon Sep 17 00:00:00 2001 From: Marc Dallen Date: Mon, 20 Sep 2021 03:56:39 +1000 Subject: [PATCH] first working deployment retry --- config.py | 23 +- kiln-tuner.py | 12 +- kilnTest1.py | 42 + lib/oven.py | 10 + public/assets/css/picoreflow_save.css | 398 +++++ public/assets/js/picoreflow.js | 9 +- public/assets/js/picoreflow_save.js | 710 +++++++++ storage/profiles/B05 BQ1000 .json | 1 + storage/profiles/C6 drop and soak DF.json | 1 + storage/profiles/lizzy .json | 1 + storage/profiles/marcTestRun (Low).json | 1 + tempTest1.py | 36 + zn.csv | 1639 +++++++++++++++++++++ 13 files changed, 2863 insertions(+), 20 deletions(-) create mode 100644 kilnTest1.py create mode 100644 public/assets/css/picoreflow_save.css create mode 100644 public/assets/js/picoreflow_save.js create mode 100644 storage/profiles/B05 BQ1000 .json create mode 100644 storage/profiles/C6 drop and soak DF.json create mode 100644 storage/profiles/lizzy .json create mode 100644 storage/profiles/marcTestRun (Low).json create mode 100644 tempTest1.py create mode 100644 zn.csv diff --git a/config.py b/config.py index f2c51c1..d714174 100644 --- a/config.py +++ b/config.py @@ -14,7 +14,7 @@ listening_ip = "0.0.0.0" listening_port = 8081 ### Cost Estimate -kwh_rate = 0.1319 # Rate in currency_type to calculate cost to run job +kwh_rate = 0.10 # Rate in currency_type to calculate cost to run job currency_type = "$" # Currency Symbol to show when calculating cost to run job ######################################################################## @@ -27,20 +27,21 @@ currency_type = "$" # Currency Symbol to show when calculating cost to run j # can use whichever GPIO you prefer/have available. ### Outputs -gpio_heat = 23 # Switches zero-cross solid-state-relay +gpio_contactor = 23 # Contactor and Fan Enable +gpio_heat = 24 # Switches zero-cross solid-state-relay ### Thermocouple Adapter selection: # max31855 - bitbang SPI interface # max31856 - bitbang SPI interface. must specify thermocouple_type. -max31855 = 1 -max31856 = 0 +max31855 = 0 +max31856 = 1 # see lib/max31856.py for other thermocouple_type, only applies to max31856 -thermocouple_type = MAX31856.MAX31856_S_TYPE +thermocouple_type = MAX31856.MAX31856_K_TYPE ### Thermocouple Connection (using bitbang interfaces) -gpio_sensor_cs = 27 -gpio_sensor_clock = 22 -gpio_sensor_data = 17 +gpio_sensor_cs = 5 +gpio_sensor_clock = 11 +gpio_sensor_data = 9 gpio_sensor_di = 10 # only used with max31856 ######################################################################## @@ -50,7 +51,7 @@ gpio_sensor_di = 10 # only used with max31856 # Every N seconds a decision is made about switching the relay[s] # on & off and for how long. The thermocouple is read # temperature_average_samples times during and the average value is used. -sensor_time_wait = 2 +sensor_time_wait = 5 ######################################################################## @@ -80,7 +81,7 @@ stop_integral_windup = True ######################################################################## # # Simulation parameters -simulate = True +simulate = False sim_t_env = 60.0 # deg C sim_c_heat = 100.0 # J/K heat capacity of heat element sim_c_oven = 5000.0 # J/K heat capacity of oven @@ -98,7 +99,7 @@ sim_R_ho_air = 0.05 # K/W " with internal air circulation # If you change the temp_scale, all settings in this file are assumed to # be in that scale. -temp_scale = "f" # c = Celsius | f = Fahrenheit - Unit to display +temp_scale = "c" # c = Celsius | f = Fahrenheit - Unit to display time_scale_slope = "h" # s = Seconds | m = Minutes | h = Hours - Slope displayed in temp_scale per time_scale_slope time_scale_profile = "m" # s = Seconds | m = Minutes | h = Hours - Enter and view target time in time_scale_profile diff --git a/kiln-tuner.py b/kiln-tuner.py index 8868295..38aa93f 100755 --- a/kiln-tuner.py +++ b/kiln-tuner.py @@ -1,3 +1,4 @@ + #!/usr/bin/env python import os @@ -46,6 +47,7 @@ def recordprofile(csvfile, targettemp): try: stage = 'heating' if not config.simulate: + oven.output.GPIO.output(config.gpio_contactor, oven.output.GPIO.LOW) #ON oven.output.heat(1, tuning=True) while True: @@ -58,10 +60,13 @@ def recordprofile(csvfile, targettemp): if stage == 'heating': if temp >= targettemp: if not config.simulate: - oven.output.heat(0) + oven.output.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF + oven.output.cool(0) stage = 'cooling' elif stage == 'cooling': + oven.output.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF + oven.output.cool(0) if temp < targettemp: break @@ -73,7 +78,8 @@ def recordprofile(csvfile, targettemp): finally: # ensure we always shut the oven down! if not config.simulate: - oven.output.heat(0) + oven.output.GPIO.output(config.gpio_contactor, oven.output.GPIO.HIGH) #OFF + oven.output.cool(0) def line(a, b, x): @@ -87,7 +93,7 @@ def invline(a, b, y): def plot(xdata, ydata, tangent_min, tangent_max, tangent_slope, tangent_offset, lower_crossing_x, upper_crossing_x): - from matplotlib import pyplot + from matplotlib.pyplot import pyplot minx = min(xdata) maxx = max(xdata) diff --git a/kilnTest1.py b/kilnTest1.py new file mode 100644 index 0000000..6ae151a --- /dev/null +++ b/kilnTest1.py @@ -0,0 +1,42 @@ + +import board +import digitalio +import adafruit_max31856 +import RPi.GPIO as GPIO +import time + +# Create sensor object, communicating over the board's default SPI bus +spi = board.SPI() + +# allocate a CS pin and set the direction +cs = digitalio.DigitalInOut(board.D5) +cs.direction = digitalio.Direction.OUTPUT + +# create a thermocouple object with the above +thermocouple = adafruit_max31856.MAX31856(spi, cs) + +# print the temperature! +print(thermocouple.temperature) + +relay1 = 23 +relay2 = 24 +trigger1 = 20 +trigger2 = 21 + +GPIO.setmode(GPIO.BCM) +GPIO.setup(relay1, GPIO.OUT) +GPIO.setup(relay2, GPIO.OUT) +GPIO.setup(trigger1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) +GPIO.setup(trigger2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + +while True: + print(thermocouple.temperature) +# print("RELAY ON") +# GPIO.output(relay1, 0) #ON + GPIO.output(relay1, 1) #OFF + GPIO.output(relay2, 1) + time.sleep(5) +# print("RELAY OFF") +# GPIO.output(relay1, 0) + GPIO.output(relay2, 0) + time.sleep(5) diff --git a/lib/oven.py b/lib/oven.py index 35b7288..302de91 100644 --- a/lib/oven.py +++ b/lib/oven.py @@ -20,6 +20,7 @@ class Output(object): GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(config.gpio_heat, GPIO.OUT) + GPIO.setup(config.gpio_contactor, GPIO.OUT) self.active = True self.GPIO = GPIO except: @@ -38,6 +39,12 @@ class Output(object): self.GPIO.output(config.gpio_heat, self.GPIO.LOW) time.sleep(sleepfor) + def contactor_on(self): + self.GPIO.output(config.gpio_contactor, self.GPIO.LOW) #ON + + def contactor_off(self): + self.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF + # FIX - Board class needs to be completely removed class Board(object): def __init__(self): @@ -182,6 +189,7 @@ class Oven(threading.Thread): self.target = 0 self.heat = 0 self.pid = PID(ki=config.pid_ki, kd=config.pid_kd, kp=config.pid_kp) + self.output.contactor_off() def run_profile(self, profile, startat=0): self.reset() @@ -206,6 +214,7 @@ class Oven(threading.Thread): self.start_time = datetime.datetime.now() self.startat = startat * 60 log.info("Starting") + self.output.contactor_on() def abort_run(self): self.reset() @@ -391,6 +400,7 @@ class RealOven(Oven): def reset(self): super().reset() +# self.output.GPIO.output(config.gpio_contactor, self.GPIO.HIGH) #OFF self.output.cool(0) def heat_then_cool(self): diff --git a/public/assets/css/picoreflow_save.css b/public/assets/css/picoreflow_save.css new file mode 100644 index 0000000..8e77db7 --- /dev/null +++ b/public/assets/css/picoreflow_save.css @@ -0,0 +1,398 @@ +@font-face{ + font-family: "Digi"; + src: url('/picoreflow/assets/fonts/digital-7-webfont.eot'); + src: local("Digital 7"), + url('/picoreflow/assets/fonts/digital-7-webfont.woff') format("woff"), + url('/picoreflow/assets/fonts/digital-7-webfont.ttf') format("truetype"); +} + +@font-face{ + font-family: "Tables"; + src: url('/picoreflow/assets/fonts/tables.eot'); + src: local("Tables"), + url('/picoreflow/assets/fonts/tables.woff') format("woff"), + url('/picoreflow/assets/fonts/tables.ttf') format("truetype"); +} + +body { + background: #b9b6af; +} + +#status { + margin-top: 15px; + color: #d8d3c5; + font-weight: normal; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + border: 1px solid #ddd; + height: 80px; + -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55); + -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.55); + box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55); +} + +.display { + display: inline-block; + text-align: right; + padding-right: 5px; + font-size: 40px; + font-weight: normal; + height: 40px; + line-height: 40px; + vertical-align: middle; + color: #d8d3c5; + border-color: #000000; +} + +.ds-panel { + background: #3F3E3A url('/picoreflow/assets/images/panel_bg.png') repeat; + -moz-box-shadow: inset 0 0 42px 0 #000; + -webkit-box-shadow: inset 0 0 42px 0 #000; + box-shadow: inset 0 0 42px 0 #000; +} + +.ds-title-panel { + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + background-image: -webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8)); + background-image: -webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%); + background-image: -moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%); + background-image: linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0); + height: 18px; +} + +.ds-title { + display: inline-block; + font-size: 10px; + height: 18px; + line-height: 18px; + width: 100px; + border-right: 1px solid #b9b6af; + vertical-align: top; + text-align: center; + color: #8B8989; + text-shadow: 1px 1px 0px rgba(255, 255, 255, 0.75); +} + +.ds-num { + width: 100px; + font-family: "Digi"; + border-right: 1px solid #b9b6af; + white-space: nowrap; + text-shadow: 0 0 25px rgba(0, 0, 0, 1); +} + +.ds-input { + color: #d8d3c5; + font-family: "Digi"; + font-size: 24px; + text-shadow: 0 0 12px rgba(0, 0, 0, 1); + background: #3F3E3A url('/picoreflow/assets/images/panel_bg.png') repeat; + -moz-box-shadow: inset 0 0 12px 0 #000; + -webkit-box-shadow: inset 0 0 12px 0 #000; + box-shadow: inset 0 0 12px 0 #000; + text-align: right; + padding: 0; + padding-right: 7px; + +} + +.ds-unit { + font-family: "Arial"; + font-size: 22px; + vertical-align: top; + line-height: 32px; + margin-left: 4px; +} + +.ds-led { + font-family: "Tables"; + font-size: 38px; + text-align: center; + color: #1F1E1A; + text-shadow: 0 0 5px #000, 0 0 5px #000; + border-left: 1px solid #b9b6af; + height: 40px; + width: 42px; + display: inline-block; +} + + +.ds-led-hazard-active { + color: rgb(255, 204, 0); + background: -moz-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%, rgba(241,218,54,0.26) 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(242,195,67,1)), color-stop(100%,rgba(241,218,54,0.26))); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* IE10+ */ + background: radial-gradient(ellipse at center, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* W3C */ +} + +.ds-led-door-open { + color: rgb(214, 42, 0); + background: -moz-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%, rgba(241,218,54,0.26) 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(242,195,67,1)), color-stop(100%,rgba(241,218,54,0.26))); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* IE10+ */ + background: radial-gradient(ellipse at center, rgba(242,195,67,1) 0%,rgba(241,218,54,0.26) 100%); /* W3C */ +} + +.ds-led-cool-active { + color: rgb(74, 159, 255); + background: -moz-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%, rgba(48,144,209,0.26) 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(124,197,239,1)), color-stop(100%,rgba(48,144,209,0.26))); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* IE10+ */ + background: radial-gradient(ellipse at center, rgba(124,197,239,1) 0%,rgba(48,144,209,0.26) 100%); /* W3C */ +} + +.ds-led-heat-active { + color: rgb(214, 42, 0); + background: -moz-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%, rgba(214,42,0,0.26) 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(214,25,25,1)), color-stop(100%,rgba(214,42,0,0.26))); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* IE10+ */ + background: radial-gradient(ellipse at center, rgba(214,25,25,1) 0%,rgba(214,42,0,0.26) 100%); /* W3C */ +} + +.ds-led-air-active { + color: rgb(240, 240, 240); + background: -moz-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%, rgba(221,221,221,0.26) 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(221,221,221,1)), color-stop(100%,rgba(221,221,221,0.26))); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* IE10+ */ + background: radial-gradient(ellipse at center, rgba(221,221,221,1) 0%,rgba(221,221,221,0.26) 100%); /* W3C */ +} + +.ds-trend { + top: 0; + text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.25), -1px -1px 0 rgba(0, 0, 0, 0.4); + color: rgb(233, 233, 233); + font-size: 20px; +} + +.ds-target { + color: #75890c; +} + +.ds-state { + border: none; + width: initial; + text-align: center; + width: 168px; + padding: 0; +} + +.ds-state { + border: none; + width: initial; + text-align: center; + width: 210px; + padding: 0; +} + +.ds-text { + border: none; + width: initial; + font-family: sans-serif; + font-size: 32px; +} + +.progress { + -webkit-border-radius: 0; + -moz-border-radius: 0; + background: #3f3e3a; + border-color: #000000; + border-top: 1px solid #b9b6af; + margin: 0; + -webkit-border-bottom-left-radius: 7px; + -webkit-border-bottom-right-radius: 7px; + -moz-border-radius-bottomleft: 7px; + -moz-border-radius-bottomright: 7px; +} + +.progress-bar { + background-color: #75890c; + font-family: "Digi"; + font-size: 16px; +} + + +.panel-default { + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55); + -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.55); + box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.55); + margin-top: 15px; + background: #3F3E3A url('/picoreflow/assets/images/panel_bg.png') repeat; +} + +.panel-heading { + background: #fafafa url('/picoreflow/assets/images/page_bg.png') repeat-x; + overflow: hidden; + padding: 10px; + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} + +.panel-body { + -moz-box-shadow: inset 0 0 42px 0 #000; + -webkit-box-shadow: inset 0 0 42px 0 #000; + box-shadow: inset 0 0 42px 0 #000; + -webkit-border-bottom-left-radius: 7px; + -webkit-border-bottom-right-radius: 7px; + -moz-border-radius-bottomleft: 7px; + -moz-border-radius-bottomright: 7px; + background: rgba(0,0,0,0.2) +} + +#profile_selector { + border: 1px solid rgb(194, 194, 194); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + background: rgb(229,229,229); + background: -moz-linear-gradient(top, rgba(229,229,229,1) 0%, rgba(255,255,255,1) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(229,229,229,1)), color-stop(100%,rgba(255,255,255,1))); + background: -webkit-linear-gradient(top, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%); + background: -o-linear-gradient(top, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%); + background: -ms-linear-gradient(top, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%); + background: linear-gradient(to bottom, rgba(229,229,229,1) 0%,rgba(255,255,255,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e5e5e5', endColorstr='#ffffff',GradientType=0 ); + padding: 5px; + padding-bottom: 3px; + padding-top: 3px; + -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.05),inset 0 0 9px 2px #000; + -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.05),inset 0 0 0 0 #000; + box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.05),inset 0 0 0 0 #000; +} + +.select2-container { + position: relative; + top: -3px; + width: 190px; + height: 34px; +} + +.select2-container .select2-choice { + line-height: 32px; +} + +.graph { + width: 100%; + height: 300px; + font-size: 14px; + line-height: 1.2em; +} + +.edit-points { + margin-bottom: 5px; +} + +.edit-points h3 { + margin-top: 5px; + margin-bottom: 15px; +} + +.edit-points .row{ + margin-bottom: 5px; +} + +.btn-success { + background: rgb(164,179,87); + background: -moz-linear-gradient(top, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(164,179,87,1)), color-stop(100%,rgba(117,137,12,1))); + background: -webkit-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + background: -o-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + background: -ms-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + background: linear-gradient(to bottom, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a4b357', endColorstr='#75890c',GradientType=0 ); + background-color: #75890c; +} + +.modal-content { + background-image: linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%); +} + +.modal-body { + background: #fafafa; +} + +.modal-footer { + margin-top: 0; +} + +.modal-body .table { + margin-bottom: 0; +} + +.select2-container .select2-choice { + height: 34px; + margin-top: 1px; +} + +.modal.fade.in { + top: 10%; +} + +.alert { + background-image: -webkit-gradient(linear,left 0,left 100%,from(#f5f5f5),to(#e8e8e8)); + background-image: -webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%); + background-image: -moz-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%); + background-image: linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0); + -moz-box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.75); + -webkit-box-shadow: 0 0 1.5em 0 rgba(0,0,0,0.75); + box-shadow: 0 0 1.1em 0 rgba(0,0,0,0.75); +} + +.alert-success { + background: rgb(164,179,87); + background: -moz-linear-gradient(top, rgba(164,179,87,1) 0%, rgba(117,137,12,1) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(164,179,87,1)), color-stop(100%,rgba(117,137,12,1))); + background: -webkit-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + background: -o-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + background: -ms-linear-gradient(top, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + background: linear-gradient(to bottom, rgba(164,179,87,1) 0%,rgba(117,137,12,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a4b357', endColorstr='#75890c',GradientType=0 ); + color: #fff; +} + +.alert-error { + background: rgb(206,57,20); + background: -moz-linear-gradient(top, rgba(206,57,20,1) 0%, rgba(163,38,0,1) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(206,57,20,1)), color-stop(100%,rgba(163,38,0,1))); + background: -webkit-linear-gradient(top, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%); + background: -o-linear-gradient(top, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%); + background: -ms-linear-gradient(top, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%); + background: linear-gradient(to bottom, rgba(206,57,20,1) 0%,rgba(163,38,0,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ce3914', endColorstr='#a32600',GradientType=0 ); + color: #fff; +} + +.modal-body td { + width: 50%; +} + +.table-responsive { + overflow-x: hidden; + overflow-y: hidden; +} diff --git a/public/assets/js/picoreflow.js b/public/assets/js/picoreflow.js index 479b7b7..b9dcdb8 100644 --- a/public/assets/js/picoreflow.js +++ b/public/assets/js/picoreflow.js @@ -11,8 +11,8 @@ var time_scale_slope = "s"; var time_scale_profile = "s"; var time_scale_long = "Seconds"; var temp_scale_display = "C"; -var kwh_rate = 0.26; -var currency_type = "EUR"; +var kwh_rate = 0.1; +var currency_type = "$"; var protocol = 'ws:'; if (window.location.protocol == 'https:') { @@ -560,10 +560,7 @@ $(document).ready(function() $('#act_temp').html(parseInt(x.temperature)); - if (x.heat > 0.0) { - setTimeout(function() { $('#heat').addClass("ds-led-heat-active") }, 0 ) - setTimeout(function() { $('#heat').removeClass("ds-led-heat-active") }, (x.heat*1000.0)-5) - } + if (x.heat > 0.0) { $('#heat').addClass("ds-led-heat-active"); } else { $('#heat').removeClass("ds-led-heat-active"); } if (x.cool > 0.5) { $('#cool').addClass("ds-led-cool-active"); } else { $('#cool').removeClass("ds-led-cool-active"); } if (x.air > 0.5) { $('#air').addClass("ds-led-air-active"); } else { $('#air').removeClass("ds-led-air-active"); } if (x.temperature > hazardTemp()) { $('#hazard').addClass("ds-led-hazard-active"); } else { $('#hazard').removeClass("ds-led-hazard-active"); } diff --git a/public/assets/js/picoreflow_save.js b/public/assets/js/picoreflow_save.js new file mode 100644 index 0000000..479b7b7 --- /dev/null +++ b/public/assets/js/picoreflow_save.js @@ -0,0 +1,710 @@ +var state = "IDLE"; +var state_last = ""; +var graph = [ 'profile', 'live']; +var points = []; +var profiles = []; +var time_mode = 0; +var selected_profile = 0; +var selected_profile_name = 'cone-05-long-bisque.json'; +var temp_scale = "c"; +var time_scale_slope = "s"; +var time_scale_profile = "s"; +var time_scale_long = "Seconds"; +var temp_scale_display = "C"; +var kwh_rate = 0.26; +var currency_type = "EUR"; + +var protocol = 'ws:'; +if (window.location.protocol == 'https:') { + protocol = 'wss:'; +} +var host = "" + protocol + "//" + window.location.hostname + ":" + window.location.port; +var ws_status = new WebSocket(host+"/status"); +var ws_control = new WebSocket(host+"/control"); +var ws_config = new WebSocket(host+"/config"); +var ws_storage = new WebSocket(host+"/storage"); + + +if(window.webkitRequestAnimationFrame) window.requestAnimationFrame = window.webkitRequestAnimationFrame; + +graph.profile = +{ + label: "Profile", + data: [], + points: { show: false }, + color: "#75890c", + draggable: false +}; + +graph.live = +{ + label: "Live", + data: [], + points: { show: false }, + color: "#d8d3c5", + draggable: false +}; + + +function updateProfile(id) +{ + selected_profile = id; + selected_profile_name = profiles[id].name; + var job_seconds = profiles[id].data.length === 0 ? 0 : parseInt(profiles[id].data[profiles[id].data.length-1][0]); + var kwh = (3850*job_seconds/3600/1000).toFixed(2); + var cost = (kwh*kwh_rate).toFixed(2); + var job_time = new Date(job_seconds * 1000).toISOString().substr(11, 8); + $('#sel_prof').html(profiles[id].name); + $('#sel_prof_eta').html(job_time); + $('#sel_prof_cost').html(kwh + ' kWh ('+ currency_type +': '+ cost +')'); + graph.profile.data = profiles[id].data; + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions()); +} + +function deleteProfile() +{ + var profile = { "type": "profile", "data": "", "name": selected_profile_name }; + var delete_struct = { "cmd": "DELETE", "profile": profile }; + + var delete_cmd = JSON.stringify(delete_struct); + console.log("Delete profile:" + selected_profile_name); + + ws_storage.send(delete_cmd); + + ws_storage.send('GET'); + selected_profile_name = profiles[0].name; + + state="IDLE"; + $('#edit').hide(); + $('#profile_selector').show(); + $('#btn_controls').show(); + $('#status').slideDown(); + $('#profile_table').slideUp(); + $('#e2').select2('val', 0); + graph.profile.points.show = false; + graph.profile.draggable = false; + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions()); +} + + +function updateProgress(percentage) +{ + if(state=="RUNNING") + { + if(percentage > 100) percentage = 100; + $('#progressBar').css('width', percentage+'%'); + if(percentage>5) $('#progressBar').html(parseInt(percentage)+'%'); + } + else + { + $('#progressBar').css('width', 0+'%'); + $('#progressBar').html(''); + } +} + +function updateProfileTable() +{ + var dps = 0; + var slope = ""; + var color = ""; + + var html = '

Schedule Points

'; + html += ''; + + for(var i=0; i=1) dps = ((graph.profile.data[i][1]-graph.profile.data[i-1][1])/(graph.profile.data[i][0]-graph.profile.data[i-1][0]) * 10) / 10; + if (dps > 0) { slope = "up"; color="rgba(206, 5, 5, 1)"; } else + if (dps < 0) { slope = "down"; color="rgba(23, 108, 204, 1)"; dps *= -1; } else + if (dps == 0) { slope = "right"; color="grey"; } + + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + } + + html += '
#Target Time in ' + time_scale_long+ 'Target Temperature in °'+temp_scale_display+'Slope in °'+temp_scale_display+'/'+time_scale_slope+'

' + (i+1) + '

 
'; + + $('#profile_table').html(html); + + //Link table to graph + $(".form-control").change(function(e) + { + var id = $(this)[0].id; //e.currentTarget.attributes.id + var value = parseInt($(this)[0].value); + var fields = id.split("-"); + var col = parseInt(fields[1]); + var row = parseInt(fields[2]); + + if (graph.profile.data.length > 0) { + if (col == 0) { + graph.profile.data[row][col] = timeProfileFormatter(value,false); + } + else { + graph.profile.data[row][col] = value; + } + + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions()); + } + updateProfileTable(); + + }); +} + +function timeProfileFormatter(val, down) { + var rval = val + switch(time_scale_profile){ + case "m": + if (down) {rval = val / 60;} else {rval = val * 60;} + break; + case "h": + if (down) {rval = val / 3600;} else {rval = val * 3600;} + break; + } + return Math.round(rval); +} + +function formatDPS(val) { + var tval = val; + if (time_scale_slope == "m") { + tval = val * 60; + } + if (time_scale_slope == "h") { + tval = (val * 60) * 60; + } + return Math.round(tval); +} + +function hazardTemp(){ + + if (temp_scale == "f") { + return (1500 * 9 / 5) + 32 + } + else { + return 1500 + } +} + +function timeTickFormatter(val) +{ + if (val < 1800) + { + return val; + } + else + { + var hours = Math.floor(val / (3600)); + var div_min = val % (3600); + var minutes = Math.floor(div_min / 60); + + if (hours < 10) {hours = "0"+hours;} + if (minutes < 10) {minutes = "0"+minutes;} + + return hours+":"+minutes; + } +} + +function runTask() +{ + var cmd = + { + "cmd": "RUN", + "profile": profiles[selected_profile] + } + + graph.live.data = []; + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions()); + + ws_control.send(JSON.stringify(cmd)); + +} + +function runTaskSimulation() +{ + var cmd = + { + "cmd": "SIMULATE", + "profile": profiles[selected_profile] + } + + graph.live.data = []; + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions()); + + ws_control.send(JSON.stringify(cmd)); + +} + + +function abortTask() +{ + var cmd = {"cmd": "STOP"}; + ws_control.send(JSON.stringify(cmd)); +} + +function enterNewMode() +{ + state="EDIT" + $('#status').slideUp(); + $('#edit').show(); + $('#profile_selector').hide(); + $('#btn_controls').hide(); + $('#form_profile_name').attr('value', ''); + $('#form_profile_name').attr('placeholder', 'Please enter a name'); + graph.profile.points.show = true; + graph.profile.draggable = true; + graph.profile.data = []; + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions()); + updateProfileTable(); +} + +function enterEditMode() +{ + state="EDIT" + $('#status').slideUp(); + $('#edit').show(); + $('#profile_selector').hide(); + $('#btn_controls').hide(); + console.log(profiles); + $('#form_profile_name').val(profiles[selected_profile].name); + graph.profile.points.show = true; + graph.profile.draggable = true; + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions()); + updateProfileTable(); +} + +function leaveEditMode() +{ + selected_profile_name = $('#form_profile_name').val(); + ws_storage.send('GET'); + state="IDLE"; + $('#edit').hide(); + $('#profile_selector').show(); + $('#btn_controls').show(); + $('#status').slideDown(); + $('#profile_table').slideUp(); + graph.profile.points.show = false; + graph.profile.draggable = false; + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions()); +} + +function newPoint() +{ + if(graph.profile.data.length > 0) + { + var pointx = parseInt(graph.profile.data[graph.profile.data.length-1][0])+15; + } + else + { + var pointx = 0; + } + graph.profile.data.push([pointx, Math.floor((Math.random()*230)+25)]); + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions()); + updateProfileTable(); +} + +function delPoint() +{ + graph.profile.data.splice(-1,1) + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ], getOptions()); + updateProfileTable(); +} + +function toggleTable() +{ + if($('#profile_table').css('display') == 'none') + { + $('#profile_table').slideDown(); + } + else + { + $('#profile_table').slideUp(); + } +} + +function saveProfile() +{ + name = $('#form_profile_name').val(); + var rawdata = graph.plot.getData()[0].data + var data = []; + var last = -1; + + for(var i=0; i last) + { + data.push([rawdata[i][0], rawdata[i][1]]); + } + else + { + $.bootstrapGrowl(" ERROR 88:
An oven is not a time-machine", { + ele: 'body', // which element to append to + type: 'alert', // (null, 'info', 'error', 'success') + offset: {from: 'top', amount: 250}, // 'top', or 'bottom' + align: 'center', // ('left', 'right', or 'center') + width: 385, // (integer, or 'auto') + delay: 5000, + allow_dismiss: true, + stackup_spacing: 10 // spacing between consecutively stacked growls. + }); + + return false; + } + + last = rawdata[i][0]; + } + + var profile = { "type": "profile", "data": data, "name": name } + var put = { "cmd": "PUT", "profile": profile } + + var put_cmd = JSON.stringify(put); + + ws_storage.send(put_cmd); + + leaveEditMode(); +} + +function getOptions() +{ + + var options = + { + + series: + { + lines: + { + show: true + }, + + points: + { + show: true, + radius: 5, + symbol: "circle" + }, + + shadowSize: 3 + + }, + + xaxis: + { + min: 0, + tickColor: 'rgba(216, 211, 197, 0.2)', + tickFormatter: timeTickFormatter, + font: + { + size: 14, + lineHeight: 14, weight: "normal", + family: "Digi", + variant: "small-caps", + color: "rgba(216, 211, 197, 0.85)" + } + }, + + yaxis: + { + min: 0, + tickDecimals: 0, + draggable: false, + tickColor: 'rgba(216, 211, 197, 0.2)', + font: + { + size: 14, + lineHeight: 14, + weight: "normal", + family: "Digi", + variant: "small-caps", + color: "rgba(216, 211, 197, 0.85)" + } + }, + + grid: + { + color: 'rgba(216, 211, 197, 0.55)', + borderWidth: 1, + labelMargin: 10, + mouseActiveRadius: 50 + }, + + legend: + { + show: false + } + } + + return options; + +} + + + +$(document).ready(function() +{ + + if(!("WebSocket" in window)) + { + $('#chatLog, input, button, #examples').fadeOut("fast"); + $('

Oh no, you need a browser that supports WebSockets. How about Google Chrome?

').appendTo('#container'); + } + else + { + + // Status Socket //////////////////////////////// + + ws_status.onopen = function() + { + console.log("Status Socket has been opened"); + + $.bootstrapGrowl("Getting data from server", + { + ele: 'body', // which element to append to + type: 'success', // (null, 'info', 'error', 'success') + offset: {from: 'top', amount: 250}, // 'top', or 'bottom' + align: 'center', // ('left', 'right', or 'center') + width: 385, // (integer, or 'auto') + delay: 2500, + allow_dismiss: true, + stackup_spacing: 10 // spacing between consecutively stacked growls. + }); + }; + + ws_status.onclose = function() + { + $.bootstrapGrowl(" ERROR 1:
Status Websocket not available", { + ele: 'body', // which element to append to + type: 'error', // (null, 'info', 'error', 'success') + offset: {from: 'top', amount: 250}, // 'top', or 'bottom' + align: 'center', // ('left', 'right', or 'center') + width: 385, // (integer, or 'auto') + delay: 5000, + allow_dismiss: true, + stackup_spacing: 10 // spacing between consecutively stacked growls. + }); + }; + + ws_status.onmessage = function(e) + { + console.log("received status data") + console.log(e.data); + + x = JSON.parse(e.data); + if (x.type == "backlog") + { + if (x.profile) + { + selected_profile_name = x.profile.name; + $.each(profiles, function(i,v) { + if(v.name == x.profile.name) { + updateProfile(i); + $('#e2').select2('val', i); + } + }); + } + + $.each(x.log, function(i,v) { + graph.live.data.push([v.runtime, v.temperature]); + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions()); + }); + } + + if(state!="EDIT") + { + state = x.state; + + if (state!=state_last) + { + if(state_last == "RUNNING") + { + $('#target_temp').html('---'); + updateProgress(0); + $.bootstrapGrowl(" Run completed", { + ele: 'body', // which element to append to + type: 'success', // (null, 'info', 'error', 'success') + offset: {from: 'top', amount: 250}, // 'top', or 'bottom' + align: 'center', // ('left', 'right', or 'center') + width: 385, // (integer, or 'auto') + delay: 0, + allow_dismiss: true, + stackup_spacing: 10 // spacing between consecutively stacked growls. + }); + } + } + + if(state=="RUNNING") + { + $("#nav_start").hide(); + $("#nav_stop").show(); + + graph.live.data.push([x.runtime, x.temperature]); + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions()); + + left = parseInt(x.totaltime-x.runtime); + eta = new Date(left * 1000).toISOString().substr(11, 8); + + updateProgress(parseFloat(x.runtime)/parseFloat(x.totaltime)*100); + $('#state').html('' + eta + ''); + $('#target_temp').html(parseInt(x.target)); + + + } + else + { + $("#nav_start").show(); + $("#nav_stop").hide(); + $('#state').html('

'+state+'

'); + } + + $('#act_temp').html(parseInt(x.temperature)); + + if (x.heat > 0.0) { + setTimeout(function() { $('#heat').addClass("ds-led-heat-active") }, 0 ) + setTimeout(function() { $('#heat').removeClass("ds-led-heat-active") }, (x.heat*1000.0)-5) + } + if (x.cool > 0.5) { $('#cool').addClass("ds-led-cool-active"); } else { $('#cool').removeClass("ds-led-cool-active"); } + if (x.air > 0.5) { $('#air').addClass("ds-led-air-active"); } else { $('#air').removeClass("ds-led-air-active"); } + if (x.temperature > hazardTemp()) { $('#hazard').addClass("ds-led-hazard-active"); } else { $('#hazard').removeClass("ds-led-hazard-active"); } + if ((x.door == "OPEN") || (x.door == "UNKNOWN")) { $('#door').addClass("ds-led-door-open"); } else { $('#door').removeClass("ds-led-door-open"); } + + state_last = state; + + } + }; + + // Config Socket ///////////////////////////////// + + ws_config.onopen = function() + { + ws_config.send('GET'); + }; + + ws_config.onmessage = function(e) + { + console.log (e.data); + x = JSON.parse(e.data); + temp_scale = x.temp_scale; + time_scale_slope = x.time_scale_slope; + time_scale_profile = x.time_scale_profile; + kwh_rate = x.kwh_rate; + currency_type = x.currency_type; + + if (temp_scale == "c") {temp_scale_display = "C";} else {temp_scale_display = "F";} + + + $('#act_temp_scale').html('º'+temp_scale_display); + $('#target_temp_scale').html('º'+temp_scale_display); + + switch(time_scale_profile){ + case "s": + time_scale_long = "Seconds"; + break; + case "m": + time_scale_long = "Minutes"; + break; + case "h": + time_scale_long = "Hours"; + break; + } + + } + + // Control Socket //////////////////////////////// + + ws_control.onopen = function() + { + + }; + + ws_control.onmessage = function(e) + { + //Data from Simulation + console.log ("control socket has been opened") + console.log (e.data); + x = JSON.parse(e.data); + graph.live.data.push([x.runtime, x.temperature]); + graph.plot = $.plot("#graph_container", [ graph.profile, graph.live ] , getOptions()); + + } + + // Storage Socket /////////////////////////////// + + ws_storage.onopen = function() + { + ws_storage.send('GET'); + }; + + + ws_storage.onmessage = function(e) + { + message = JSON.parse(e.data); + + if(message.resp) + { + if(message.resp == "FAIL") + { + if (confirm('Overwrite?')) + { + message.force=true; + console.log("Sending: " + JSON.stringify(message)); + ws_storage.send(JSON.stringify(message)); + } + else + { + //do nothing + } + } + + return; + } + + //the message is an array of profiles + //FIXME: this should be better, maybe a {"profiles": ...} container? + profiles = message; + //delete old options in select + $('#e2').find('option').remove().end(); + // check if current selected value is a valid profile name + // if not, update with first available profile name + var valid_profile_names = profiles.map(function(a) {return a.name;}); + if ( + valid_profile_names.length > 0 && + $.inArray(selected_profile_name, valid_profile_names) === -1 + ) { + selected_profile = 0; + selected_profile_name = valid_profile_names[0]; + } + + // fill select with new options from websocket + for (var i=0; i'+profile.name+''); + + if (profile.name == selected_profile_name) + { + selected_profile = i; + $('#e2').select2('val', i); + updateProfile(i); + } + } + }; + + + $("#e2").select2( + { + placeholder: "Select Profile", + allowClear: true, + minimumResultsForSearch: -1 + }); + + + $("#e2").on("change", function(e) + { + updateProfile(e.val); + }); + + } +}); diff --git a/storage/profiles/B05 BQ1000 .json b/storage/profiles/B05 BQ1000 .json new file mode 100644 index 0000000..c32a0b5 --- /dev/null +++ b/storage/profiles/B05 BQ1000 .json @@ -0,0 +1 @@ +{"type": "profile", "data": [[0, 30], [2520, 120], [6120, 120], [23400, 945], [26700, 1000], [27600, 1000]], "name": "B05 BQ1000 "} \ No newline at end of file diff --git a/storage/profiles/C6 drop and soak DF.json b/storage/profiles/C6 drop and soak DF.json new file mode 100644 index 0000000..333c382 --- /dev/null +++ b/storage/profiles/C6 drop and soak DF.json @@ -0,0 +1 @@ +{"type": "profile", "data": [[0, 30], [7200, 121], [16800, 121], [36000, 1148], [39360, 1204], [39960, 1204], [40380, 1148], [42180, 1148]], "name": "C6 drop and soak DF"} \ No newline at end of file diff --git a/storage/profiles/lizzy .json b/storage/profiles/lizzy .json new file mode 100644 index 0000000..5f61810 --- /dev/null +++ b/storage/profiles/lizzy .json @@ -0,0 +1 @@ +{"type": "profile", "data": [[0, 125], [240, 130], [360, 150], [2400, 600]], "name": "lizzy "} \ No newline at end of file diff --git a/storage/profiles/marcTestRun (Low).json b/storage/profiles/marcTestRun (Low).json new file mode 100644 index 0000000..fee7c1e --- /dev/null +++ b/storage/profiles/marcTestRun (Low).json @@ -0,0 +1 @@ +{"type": "profile", "data": [[0, 175], [300, 175], [600, 225], [900, 225], [1200, 250], [1500, 250]], "name": "marcTestRun (Low)"} \ No newline at end of file diff --git a/tempTest1.py b/tempTest1.py new file mode 100644 index 0000000..3a55879 --- /dev/null +++ b/tempTest1.py @@ -0,0 +1,36 @@ + +import board +import digitalio +import adafruit_max31856 +import RPi.GPIO as GPIO +import time + +# Create sensor object, communicating over the board's default SPI bus +spi = board.SPI() + +# allocate a CS pin and set the direction +cs = digitalio.DigitalInOut(board.D5) +cs.direction = digitalio.Direction.OUTPUT + +# create a thermocouple object with the above +thermocouple = adafruit_max31856.MAX31856(spi, cs) + +# print the temperature! +print(thermocouple.temperature) + +relay1 = 23 +relay2 = 24 +trigger1 = 20 +trigger2 = 21 + +GPIO.setmode(GPIO.BCM) +GPIO.setup(relay1, GPIO.OUT) +GPIO.setup(relay2, GPIO.OUT) +GPIO.setup(trigger1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) +GPIO.setup(trigger2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) + +GPIO.output(relay1, 1) #OFF + +while True: + print(thermocouple.temperature) + time.sleep(5) diff --git a/zn.csv b/zn.csv new file mode 100644 index 0000000..3c7a429 --- /dev/null +++ b/zn.csv @@ -0,0 +1,1639 @@ +time,temperature +1631991961.4819157,17.6875 +1631991962.4848793,17.65625 +1631991963.4878922,17.663541666666667 +1631991964.4912767,17.652853260869566 +1631991965.4940536,17.651822916666667 +1631991966.4974234,17.654810855263158 +1631991967.506486,17.6505859375 +1631991968.509278,17.651171875 +1631991969.5127475,17.6548828125 +1631991970.5161455,17.659375 +1631991971.519493,17.6671875 +1631991972.527164,17.6810546875 +1631991973.5305448,17.7015625 +1631991974.5339723,17.713671875 +1631991975.536756,17.744140625 +1631991976.5401807,17.7732421875 +1631991977.5512495,17.80234375 +1631991978.554439,17.84140625 +1631991979.5571961,17.8857421875 +1631991980.5605488,17.92890625 +1631991981.5640576,17.98671875 +1631991982.572401,18.0451171875 +1631991983.5752158,18.1162109375 +1631991984.5785875,18.1892578125 +1631991985.5851483,18.283203125 +1631991986.5879302,18.3666015625 +1631991987.596732,18.4634765625 +1631991988.6005838,18.5841796875 +1631991989.6040263,18.69609375 +1631991990.606839,18.824609375 +1631991991.6101997,18.9400390625 +1631991992.6184785,19.0623046875 +1631991993.6218944,19.211328125 +1631991994.625273,19.337109375 +1631991995.628676,19.497265625 +1631991996.6320536,19.6380859375 +1631991997.6461933,19.7908203125 +1631991998.6495907,19.9671875 +1631991999.6530485,20.118359375 +1631992000.6564806,20.3072265625 +1631992001.6592743,20.4841796875 +1631992002.6731508,20.666015625 +1631992003.6765356,20.8775390625 +1631992004.6793392,21.07109375 +1631992005.682915,21.3087890625 +1631992006.6862347,21.5154296875 +1631992007.6934533,21.7615234375 +1631992008.6968472,21.98203125 +1631992009.7002277,22.2251953125 +1631992010.7037528,22.501953125 +1631992011.7065494,22.7603515625 +1631992012.715075,23.0634765625 +1631992013.718541,23.344140625 +1631992014.7205255,23.65390625 +1631992015.7240174,23.9255859375 +1631992016.72744,24.2048828125 +1631992017.7357569,24.5326171875 +1631992018.7385464,24.81953125 +1631992019.7419333,25.15546875 +1631992020.745271,25.4638671875 +1631992021.7480838,25.76640625 +1631992022.7568815,26.1255859375 +1631992023.7602031,26.4419921875 +1631992024.763626,26.813671875 +1631992025.7663987,27.149609375 +1631992026.7689912,27.4927734375 +1631992027.782006,27.9015625 +1631992028.7847967,28.258203125 +1631992029.7882125,28.654296875 +1631992030.791599,29.01484375 +1631992031.793377,29.4208984375 +1631992032.8041136,29.765625 +1631992033.8074934,30.1162109375 +1631992034.809237,30.5091796875 +1631992035.8124309,30.8658203125 +1631992036.8158655,31.266796875 +1631992037.8241591,31.6162109375 +1631992038.826985,32.0349609375 +1631992039.8304007,32.4197265625 +1631992040.8340266,32.8025390625 +1631992041.8357863,33.2375 +1631992042.8448598,33.6296875 +1631992043.8515446,34.079296875 +1631992044.8543682,34.472265625 +1631992045.857765,34.86171875 +1631992046.8615925,35.320703125 +1631992047.8636024,35.7220703125 +1631992048.8669841,36.1921875 +1631992049.870427,36.5998046875 +1631992050.8765616,37.0748046875 +1631992051.8799672,37.4890625 +1631992052.883471,37.9060546875 +1631992053.8917787,38.3974609375 +1631992054.8946126,38.8240234375 +1631992055.900655,39.323828125 +1631992056.904239,39.765234375 +1631992057.9073815,40.2052734375 +1631992058.920707,40.7029296875 +1631992059.924182,41.138671875 +1631992060.9259517,41.647265625 +1631992061.9293263,42.0916015625 +1631992062.9328802,42.5970703125 +1631992063.9416668,43.051171875 +1631992064.9497664,43.514453125 +1631992065.953262,44.034765625 +1631992066.9565918,44.4865234375 +1631992067.9594197,45.0087890625 +1631992068.9672322,45.4681640625 +1631992069.9705422,45.9919921875 +1631992070.9733527,46.4416015625 +1631992071.9767497,46.9615234375 +1631992072.980154,47.434375 +1631992073.9885259,47.9033203125 +1631992074.9914098,48.4173828125 +1631992075.994738,48.87578125 +1631992076.998074,49.416015625 +1631992078.0008657,49.9 +1631992079.0092995,50.44453125 +1631992080.0128171,50.933203125 +1631992081.0161128,51.4263671875 +1631992082.0189335,51.984765625 +1631992083.0224295,52.4689453125 +1631992084.031087,53.0125 +1631992085.0338726,53.48671875 +1631992086.0372262,54.0400390625 +1631992087.0407176,54.535546875 +1631992088.048988,55.027734375 +1631992089.0577528,55.6037109375 +1631992090.0612462,56.1140625 +1631992091.0646067,56.6927734375 +1631992092.0674434,57.2125 +1631992093.0707989,57.80703125 +1631992094.0789552,58.3142578125 +1631992095.0820796,58.823828125 +1631992096.0855074,59.3990234375 +1631992097.0889328,59.8841796875 +1631992098.0919225,60.431640625 +1631992099.1012468,60.92109375 +1631992100.1046102,61.4076171875 +1631992101.1079807,61.974609375 +1631992102.1108131,62.476171875 +1631992103.1144228,63.05703125 +1631992104.1250741,63.5732421875 +1631992105.1284466,64.08828125 +1631992106.1312299,64.6904296875 +1631992107.1346345,65.2287109375 +1631992108.1380508,65.8447265625 +1631992109.1463952,66.3767578125 +1631992110.1551065,66.9087890625 +1631992111.158494,67.5123046875 +1631992112.1618545,68.0330078125 +1631992113.1649287,68.6259765625 +1631992114.173388,69.139453125 +1631992115.1767404,69.7380859375 +1631992116.1795638,70.261328125 +1631992117.183033,70.78515625 +1631992118.1863654,71.380078125 +1631992119.1881418,71.8986328125 +1631992120.1952083,72.48828125 +1631992121.1985667,73.0078125 +1631992122.2019029,73.53359375 +1631992123.2046833,74.1220703125 +1631992124.2080424,74.659375 +1631992125.216316,75.254296875 +1631992126.2190902,75.7810546875 +1631992127.2225795,76.3060546875 +1631992128.2259839,76.910546875 +1631992129.2277613,77.4337890625 +1631992130.2362163,78.0369140625 +1631992131.2396085,78.5625 +1631992132.2430286,79.079296875 +1631992133.2458942,79.665625 +1631992134.2492874,80.1779296875 +1631992135.2572846,80.7568359375 +1631992136.2606568,81.251171875 +1631992137.263907,81.8294921875 +1631992138.2673333,82.3537109375 +1631992139.2707655,82.875390625 +1631992140.2803257,83.4732421875 +1631992141.2838018,84.0169921875 +1631992142.307143,84.5611328125 +1631992143.310981,85.17421875 +1631992144.3144884,85.70234375 +1631992145.3228045,86.3078125 +1631992146.3261585,86.840234375 +1631992147.3279636,87.4501953125 +1631992148.331378,87.989453125 +1631992149.3340752,88.53203125 +1631992150.3473072,89.1484375 +1631992151.3504074,89.6849609375 +1631992152.3539734,90.2982421875 +1631992153.3574204,90.8359375 +1631992154.3594646,91.4494140625 +1631992155.368728,92.00078125 +1631992156.37212,92.5546875 +1631992157.3754191,93.176171875 +1631992158.378231,93.6998046875 +1631992159.3816354,94.3142578125 +1631992160.3902512,94.8416015625 +1631992161.3920314,95.4279296875 +1631992162.3954055,95.9396484375 +1631992163.3987486,96.4646484375 +1631992164.4021046,97.0693359375 +1631992165.4092326,97.5791015625 +1631992166.4128637,98.1736328125 +1631992167.4162197,98.7166015625 +1631992168.419014,99.25 +1631992169.422524,99.8419921875 +1631992170.4308228,100.3708984375 +1631992171.433703,100.98125 +1631992172.437108,101.50078125 +1631992173.4457738,102.023828125 +1631992174.4491308,102.6404296875 +1631992175.456208,103.1646484375 +1631992176.459601,103.7779296875 +1631992177.4631157,104.307421875 +1631992178.4649289,104.9154296875 +1631992179.4683368,105.4482421875 +1631992180.4768386,105.9982421875 +1631992181.4797707,106.6197265625 +1631992182.4822686,107.1583984375 +1631992183.4851465,107.7751953125 +1631992184.4880445,108.3005859375 +1631992185.4948773,108.888671875 +1631992186.4981613,109.40078125 +1631992187.5015533,109.9173828125 +1631992188.5048952,110.498828125 +1631992189.5077055,111.017578125 +1631992190.5159092,111.616796875 +1631992191.519392,112.1357421875 +1631992192.5228827,112.7212890625 +1631992193.525682,113.2431640625 +1631992194.5290468,113.7625 +1631992195.5373948,114.3376953125 +1631992196.5401814,114.852734375 +1631992197.5437174,115.4416015625 +1631992198.547135,115.9517578125 +1631992199.5504582,116.5337890625 +1631992200.558599,117.059375 +1631992201.5614157,117.5751953125 +1631992202.5648005,118.1666015625 +1631992203.5675824,118.6859375 +1631992204.5742853,119.2814453125 +1631992205.5827498,119.8064453125 +1631992206.5860999,120.337109375 +1631992207.5889308,120.9384765625 +1631992208.5923786,121.4623046875 +1631992209.5957584,122.0603515625 +1631992210.604329,122.57890625 +1631992211.6077058,123.17265625 +1631992212.6111226,123.6869140625 +1631992213.6144724,124.194140625 +1631992214.6162405,124.7623046875 +1631992215.627045,125.274609375 +1631992216.6304307,125.8580078125 +1631992217.6338584,126.368359375 +1631992218.6419303,126.8806640625 +1631992219.645347,127.47421875 +1631992220.6542308,127.9833984375 +1631992221.6576264,128.562890625 +1631992222.6612191,129.069921875 +1631992223.6646228,129.64140625 +1631992224.6681106,130.138671875 +1631992225.6701353,130.6416015625 +1631992226.6738312,131.2087890625 +1631992227.677224,131.7025390625 +1631992228.6805315,132.2748046875 +1631992229.683401,132.776953125 +1631992230.6921248,133.272265625 +1631992231.7015524,133.8427734375 +1631992232.704955,134.3376953125 +1631992233.7077878,134.907421875 +1631992234.7113335,135.40625 +1631992235.7146962,135.9783203125 +1631992236.7216678,136.473828125 +1631992237.7303524,136.9763671875 +1631992238.733838,137.54453125 +1631992239.7371898,138.035546875 +1631992240.7399864,138.609765625 +1631992241.7483819,139.1126953125 +1631992242.7518635,139.683984375 +1631992243.7552133,140.182421875 +1631992244.7579658,140.681640625 +1631992245.7613566,141.2392578125 +1631992246.7693102,141.7341796875 +1631992247.7711678,142.2841796875 +1631992248.7745864,142.7673828125 +1631992249.7775738,143.2482421875 +1631992250.7809396,143.8037109375 +1631992251.788429,144.28203125 +1631992252.7918105,144.8328125 +1631992253.7952123,145.3185546875 +1631992254.7970028,145.8875 +1631992255.8004813,146.3720703125 +1631992256.808823,146.86484375 +1631992257.8123994,147.4228515625 +1631992258.815213,147.911328125 +1631992259.8186066,148.4451171875 +1631992260.8213482,148.914453125 +1631992261.8233745,149.4544921875 +1631992262.8268352,149.9201171875 +1631992263.8314047,150.3904296875 +1631992264.8366072,150.9330078125 +1631992265.8400207,151.406640625 +1631992266.8435905,151.9392578125 +1631992267.851503,152.4083984375 +1631992268.853053,152.87421875 +1631992269.8570247,153.3951171875 +1631992270.8609533,153.84921875 +1631992271.8644917,154.37265625 +1631992272.8723083,154.8220703125 +1631992273.8756588,155.276953125 +1631992274.878999,155.7990234375 +1631992275.8812385,156.2576171875 +1631992276.884622,156.7857421875 +1631992277.8928525,157.2583984375 +1631992278.8956401,157.7900390625 +1631992279.8990035,158.248046875 +1631992280.902546,158.705078125 +1631992281.9059663,159.2193359375 +1631992282.9140399,159.662109375 +1631992283.9173832,160.1666015625 +1631992284.9207077,160.6146484375 +1631992285.9284348,161.1181640625 +1631992286.9318364,161.5634765625 +1631992287.9401348,162.0125 +1631992288.9437082,162.525 +1631992289.9468076,162.973046875 +1631992290.950234,163.42109375 +1631992291.9537864,163.936328125 +1631992292.9612877,164.3822265625 +1631992293.9646652,164.8978515625 +1631992294.9681334,165.347265625 +1631992295.970109,165.85234375 +1631992296.9735813,166.28984375 +1631992297.9817514,166.719140625 +1631992298.9850688,167.1990234375 +1631992299.9878542,167.62265625 +1631992300.9912937,168.0970703125 +1631992301.9947069,168.523828125 +1631992303.0048282,169.0220703125 +1631992304.0079443,169.462890625 +1631992305.011247,169.90078125 +1631992306.014641,170.3935546875 +1631992307.0164206,170.8318359375 +1631992308.0253718,171.3173828125 +1631992309.0295172,171.747265625 +1631992310.0329785,172.1763671875 +1631992311.0357869,172.6640625 +1631992312.0391722,173.0861328125 +1631992313.0479324,173.5708984375 +1631992314.0512645,173.997265625 +1631992315.0540729,174.48359375 +1631992316.0574813,174.9166015625 +1631992317.0608065,175.3486328125 +1631992318.0627387,175.83984375 +1631992319.066155,176.2626953125 +1631992320.0748103,176.68359375 +1631992321.0782294,177.1501953125 +1631992322.0812607,177.5666015625 +1631992323.0846899,178.033203125 +1631992324.0927522,178.4392578125 +1631992325.0959806,178.899609375 +1631992326.0993729,179.300390625 +1631992327.102825,179.7041015625 +1631992328.105703,180.1712890625 +1631992329.1141534,180.5896484375 +1631992330.1175315,181.075 +1631992331.1203108,181.495703125 +1631992332.129249,181.9080078125 +1631992333.1327212,182.375 +1631992334.1411092,182.778515625 +1631992335.1439254,183.2255859375 +1631992336.1472747,183.6244140625 +1631992337.1540449,184.0779296875 +1631992338.1568491,184.47578125 +1631992339.165203,184.86953125 +1631992340.1686504,185.307421875 +1631992341.1706464,185.6900390625 +1631992342.1742318,186.125 +1631992343.177598,186.5017578125 +1631992344.186039,186.892578125 +1631992345.188837,187.336328125 +1631992346.1923354,187.7271484375 +1631992347.1956663,188.1701171875 +1631992348.1984718,188.55625 +1631992349.2123928,188.93125 +1631992350.21571,189.3578125 +1631992351.219552,189.7375 +1631992352.2230802,190.169921875 +1631992353.2264652,190.54453125 +1631992354.2401702,190.972265625 +1631992355.2430942,191.349609375 +1631992356.2465165,191.715234375 +1631992357.2499235,192.147265625 +1631992358.2533596,192.525390625 +1631992359.2603726,192.96796875 +1631992360.2638538,193.3474609375 +1631992361.267279,193.7365234375 +1631992362.270644,194.179296875 +1631992363.2734933,194.555078125 +1631992364.2843661,194.97890625 +1631992365.2877712,195.345703125 +1631992366.2911851,195.7708984375 +1631992367.2941961,196.1130859375 +1631992368.2975843,196.4654296875 +1631992369.3058546,196.878125 +1631992370.3086865,197.2390625 +1631992371.3152964,197.6431640625 +1631992372.3186936,198.00390625 +1631992373.3219926,198.37265625 +1631992374.3292296,198.7908203125 +1631992375.3327446,199.1603515625 +1631992376.3353887,199.526953125 +1631992377.3371768,199.955078125 +1631992378.3406026,200.3259765625 +1631992379.3490596,200.756640625 +1631992380.3508208,201.1236328125 +1631992381.3549397,201.5294921875 +1631992382.3588178,201.895703125 +1631992383.362341,202.2662109375 +1631992384.3747947,202.677734375 +1631992385.3782136,203.030859375 +1631992386.3817186,203.446484375 +1631992387.3850777,203.8080078125 +1631992388.3884306,204.2216796875 +1631992389.3968146,204.5900390625 +1631992390.3997917,204.9541015625 +1631992391.4038455,205.36796875 +1631992392.4072485,205.7234375 +1631992393.4106064,206.1056640625 +1631992394.4186773,206.440625 +1631992395.4217691,206.8248046875 +1631992396.4251332,207.169921875 +1631992397.4285674,207.5150390625 +1631992398.4319053,207.9197265625 +1631992399.439207,208.2681640625 +1631992400.445293,208.6619140625 +1631992401.448705,209.0134765625 +1631992402.4506738,209.35859375 +1631992403.4542596,209.75078125 +1631992404.4631846,210.100390625 +1631992405.4666154,210.4974609375 +1631992406.4700985,210.840234375 +1631992407.4726763,211.180078125 +1631992408.4761314,211.573046875 +1631992409.483694,211.9201171875 +1631992410.48706,212.3169921875 +1631992411.490388,212.66484375 +1631992412.493245,213.0603515625 +1631992413.4966078,213.402734375 +1631992414.5050485,213.7412109375 +1631992415.5078883,214.1197265625 +1631992416.5112824,214.446484375 +1631992417.5146422,214.8216796875 +1631992418.5174131,215.141015625 +1631992419.52578,215.5171875 +1631992420.529132,215.8525390625 +1631992421.5366116,216.1921875 +1631992422.5399876,216.5763671875 +1631992423.5434384,216.91484375 +1631992424.5508912,217.2998046875 +1631992425.554566,217.6291015625 +1631992426.5569448,217.9447265625 +1631992427.5587137,218.29921875 +1631992428.5612845,218.6251953125 +1631992429.5697744,218.9703125 +1631992430.5717943,219.2638671875 +1631992431.575186,219.5947265625 +1631992432.5785797,219.87734375 +1631992433.5812588,220.1642578125 +1631992434.5885634,220.4865234375 +1631992435.5919762,220.7767578125 +1631992436.595445,221.077734375 +1631992437.5972118,221.4314453125 +1631992438.6011765,221.745703125 +1631992439.6100614,222.096484375 +1631992440.6135,222.42265625 +1631992441.617731,222.7822265625 +1631992442.6211386,223.096484375 +1631992443.6245387,223.395703125 +1631992444.6335173,223.733203125 +1631992445.6366792,224.0349609375 +1631992446.640081,224.3814453125 +1631992447.6435447,224.6765625 +1631992448.6468503,224.987890625 +1631992449.66006,225.34609375 +1631992450.6635437,225.656640625 +1631992451.6668715,226.009765625 +1631992452.6696894,226.3189453125 +1631992453.675009,226.658984375 +1631992454.6835418,226.9560546875 +1631992455.6868412,227.261328125 +1631992456.689582,227.591796875 +1631992457.693107,227.8884765625 +1631992458.6964715,228.236328125 +1631992459.7038364,228.54140625 +1631992460.707216,228.892578125 +1631992461.7106287,229.2017578125 +1631992462.7179985,229.5609375 +1631992463.7214622,229.8705078125 +1631992464.729914,230.1779296875 +1631992465.7334137,230.532421875 +1631992466.7366104,230.844140625 +1631992467.7435129,231.2060546875 +1631992468.7468915,231.525 +1631992469.7487955,231.84453125 +1631992470.752505,232.2162109375 +1631992471.7563787,232.5357421875 +1631992472.7632403,232.88125 +1631992473.766052,233.183984375 +1631992474.7694237,233.4720703125 +1631992475.7780483,233.79375 +1631992476.7813911,234.0767578125 +1631992477.7842185,234.407421875 +1631992478.7876062,234.695703125 +1631992479.790995,234.9716796875 +1631992480.7994428,235.3015625 +1631992481.8026972,235.58125 +1631992482.8061037,235.89375 +1631992483.8094788,236.1767578125 +1631992484.8126342,236.50390625 +1631992485.8209329,236.795703125 +1631992486.8244286,237.08359375 +1631992487.826214,237.42578125 +1631992488.8294818,237.7208984375 +1631992489.8330693,238.0712890625 +1631992490.8413079,238.3693359375 +1631992491.8494284,238.6767578125 +1631992492.853046,239.0251953125 +1631992493.8564878,239.326953125 +1631992494.8584573,239.6607421875 +1631992495.8674269,239.9583984375 +1631992496.8738286,240.2892578125 +1631992497.877316,240.5681640625 +1631992498.8793178,240.837109375 +1631992499.8828013,241.14375 +1631992500.8936148,241.410546875 +1631992501.9074132,241.7025390625 +1631992502.9102209,241.9666015625 +1631992503.9137316,242.226171875 +1631992504.917148,242.5255859375 +1631992505.9189126,242.7822265625 +1631992506.9228892,243.0771484375 +1631992507.9267988,243.3423828125 +1631992508.9285524,243.6544921875 +1631992509.93196,243.929296875 +1631992510.9353516,244.2044921875 +1631992511.943829,244.5275390625 +1631992512.9466505,244.8083984375 +1631992513.950061,245.127734375 +1631992514.9535747,245.4091796875 +1631992515.9603963,245.722265625 +1631992516.9678178,245.973046875 +1631992517.9712353,246.2337890625 +1631992518.9746656,246.5302734375 +1631992519.9780555,246.783984375 +1631992520.980863,247.0701171875 +1631992521.9892645,247.352734375 +1631992522.9928358,247.63671875 +1631992523.9956512,247.93359375 +1631992524.9990659,248.1939453125 +1631992526.0028434,248.4876953125 +1631992527.011165,248.7384765625 +1631992528.0139954,248.9765625 +1631992529.0174038,249.2615234375 +1631992530.0208604,249.5197265625 +1631992531.024381,249.8291015625 +1631992532.0316474,250.0998046875 +1631992533.0403528,250.376171875 +1631992534.0439303,250.700390625 +1631992535.0467308,250.9888671875 +1631992536.0500975,251.304296875 +1631992537.0584278,251.578125 +1631992538.0612452,251.89453125 +1631992539.0646167,252.159765625 +1631992540.0733132,252.4220703125 +1631992541.0767086,252.7134765625 +1631992542.0850549,252.963671875 +1631992543.0884736,253.2583984375 +1631992544.091855,253.517578125 +1631992545.0971253,253.8197265625 +1631992546.100109,254.0888671875 +1631992547.1080503,254.3509765625 +1631992548.110523,254.6494140625 +1631992549.1135173,254.9080078125 +1631992550.1169116,255.18203125 +1631992551.1202753,255.4275390625 +1631992552.1274846,255.683984375 +1631992553.130909,255.97578125 +1631992554.1343293,256.2365234375 +1631992555.136116,256.5263671875 +1631992556.1395044,256.7880859375 +1631992557.1480308,257.0328125 +1631992558.1514182,257.3169921875 +1631992559.1545877,257.5677734375 +1631992560.157962,257.8615234375 +1631992561.1613345,258.1271484375 +1631992562.163153,258.4255859375 +1631992563.1665492,258.689453125 +1631992564.1737268,258.9458984375 +1631992565.177686,259.2283203125 +1631992566.1810184,259.4642578125 +1631992567.1845767,259.7423828125 +1631992568.1930292,259.9857421875 +1631992569.1958277,260.25078125 +1631992570.199219,260.498828125 +1631992571.2026613,260.7525390625 +1631992572.2044208,261.028125 +1631992573.2129152,261.278515625 +1631992574.2191293,261.5677734375 +1631992575.2226887,261.8185546875 +1631992576.2257822,262.0671875 +1631992577.2291455,262.348828125 +1631992578.237501,262.5935546875 +1631992579.2408843,262.8736328125 +1631992580.2443366,263.11796875 +1631992581.247659,263.3642578125 +1631992582.2494526,263.6501953125 +1631992583.2575846,263.8888671875 +1631992584.2609673,264.1591796875 +1631992585.2644024,264.3884765625 +1631992586.2671468,264.614453125 +1631992587.2705493,264.85703125 +1631992588.2790754,265.0828125 +1631992589.2826097,265.344140625 +1631992590.2854033,265.57734375 +1631992591.2887375,265.8541015625 +1631992592.2912478,266.1078125 +1631992593.2930832,266.3556640625 +1631992594.2961395,266.6189453125 +1631992595.2995389,266.8576171875 +1631992596.3030603,267.1328125 +1631992597.3058896,267.3625 +1631992598.3146007,267.584375 +1631992599.3232782,267.8576171875 +1631992600.3266263,268.1125 +1631992601.3294437,268.3791015625 +1631992602.3329039,268.6146484375 +1631992603.3362992,268.8951171875 +1631992604.3447816,269.1416015625 +1631992605.3532667,269.3806640625 +1631992606.3566551,269.6484375 +1631992607.3600736,269.884375 +1631992608.3636158,270.1505859375 +1631992609.3710968,270.376171875 +1631992610.3744462,270.6298828125 +1631992611.3778944,270.8509765625 +1631992612.379866,271.0765625 +1631992613.383392,271.3328125 +1631992614.3941243,271.5525390625 +1631992615.3974495,271.8123046875 +1631992616.4002788,272.0396484375 +1631992617.409135,272.2626953125 +1631992618.4126365,272.5146484375 +1631992619.4209554,272.7435546875 +1631992620.4239168,273.0083984375 +1631992621.431536,273.21328125 +1631992622.4335513,273.4646484375 +1631992623.4368577,273.6806640625 +1631992624.4512765,273.8931640625 +1631992625.454656,274.1341796875 +1631992626.4579532,274.3662109375 +1631992627.4612925,274.6283203125 +1631992628.4640727,274.853125 +1631992629.4762628,275.11875 +1631992630.4793253,275.356640625 +1631992631.4821184,275.594140625 +1631992632.4855444,275.858203125 +1631992633.4889948,276.1005859375 +1631992634.496313,276.3427734375 +1631992635.4996772,276.616796875 +1631992636.5031655,276.8451171875 +1631992637.5065157,277.122265625 +1631992638.509446,277.3576171875 +1631992639.513024,277.62578125 +1631992640.5206444,277.8599609375 +1631992641.5235915,278.078515625 +1631992642.5269637,278.3314453125 +1631992643.534419,278.5361328125 +1631992644.538331,278.7716796875 +1631992645.5468202,278.9638671875 +1631992646.5502114,279.17734375 +1631992647.5537405,279.41953125 +1631992648.5555077,279.646484375 +1631992649.5594292,279.896875 +1631992650.5684092,280.130859375 +1631992651.5717595,280.359375 +1631992652.5745776,280.6044921875 +1631992653.5779586,280.8087890625 +1631992654.58138,281.0458984375 +1631992655.589854,281.2482421875 +1631992656.593316,281.4591796875 +1631992657.5971124,281.658984375 +1631992658.6009583,281.8615234375 +1631992659.6042757,282.0953125 +1631992660.6126838,282.3033203125 +1631992661.616054,282.5640625 +1631992662.6188812,282.7927734375 +1631992663.6243165,283.06484375 +1631992664.6276374,283.3009765625 +1631992665.6359737,283.515234375 +1631992666.6388037,283.7494140625 +1631992667.642315,283.9318359375 +1631992668.646773,284.131640625 +1631992669.6500442,284.3001953125 +1631992670.6570113,284.4724609375 +1631992671.6604123,284.687109375 +1631992672.6639066,284.8865234375 +1631992673.66728,285.1212890625 +1631992674.670602,285.3541015625 +1631992675.679457,285.5724609375 +1631992676.683036,285.8189453125 +1631992677.685851,286.0388671875 +1631992678.6892655,286.2791015625 +1631992679.6927204,286.475390625 +1631992680.6942728,286.666796875 +1631992681.6981926,286.8951171875 +1631992682.702093,287.09140625 +1631992683.705454,287.315234375 +1631992684.708538,287.5041015625 +1631992685.7166502,287.722265625 +1631992686.7251272,287.9255859375 +1631992687.7285264,288.137109375 +1631992688.7313323,288.3798828125 +1631992689.7347455,288.5759765625 +1631992690.7381008,288.7974609375 +1631992691.7459886,288.9859375 +1631992692.7486248,289.1634765625 +1631992693.7520459,289.3611328125 +1631992694.755446,289.5548828125 +1631992695.758816,289.790234375 +1631992696.7674222,290.0099609375 +1631992697.7708194,290.2169921875 +1631992698.7727373,290.4650390625 +1631992699.7761395,290.6748046875 +1631992700.7794926,290.90546875 +1631992701.7879086,291.1015625 +1631992702.7907066,291.3279296875 +1631992703.7941997,291.532421875 +1631992704.7975519,291.7404296875 +1631992705.799998,291.9822265625 +1631992706.8083217,292.19609375 +1631992707.812263,292.4361328125 +1631992708.815416,292.6353515625 +1631992709.8188221,292.8296875 +1631992710.822201,293.0353515625 +1631992711.8331132,293.201171875 +1631992712.8359373,293.4033203125 +1631992713.8393753,293.59296875 +1631992714.8476532,293.8052734375 +1631992715.8504293,293.99140625 +1631992716.8593304,294.178125 +1631992717.8628125,294.408984375 +1631992718.8656034,294.5990234375 +1631992719.8690224,294.828515625 +1631992720.8724654,295.0484375 +1631992721.8742585,295.2650390625 +1631992722.8777165,295.5130859375 +1631992723.8813086,295.72421875 +1631992724.8833196,295.9474609375 +1631992725.8867307,296.1287109375 +1631992726.8900797,296.2994140625 +1631992727.9043677,296.50390625 +1631992728.9061406,296.673828125 +1631992729.9095397,296.873828125 +1631992730.9130328,297.0525390625 +1631992731.9164488,297.240234375 +1631992732.9250789,297.4529296875 +1631992733.9284446,297.624609375 +1631992734.9312437,297.8322265625 +1631992735.9340277,298.01171875 +1631992736.9374287,298.2009765625 +1631992737.9458337,298.418359375 +1631992738.9486117,298.6154296875 +1631992739.9519777,298.848046875 +1631992740.9553308,299.059765625 +1631992741.9586816,299.259765625 +1631992742.9661076,299.483984375 +1631992743.9694827,299.6740234375 +1631992744.9729416,299.89765625 +1631992745.9757357,300.0849609375 +1631992746.9791348,300.26953125 +1631992747.9876485,300.4728515625 +1631992748.9910176,300.660546875 +1631992749.9938796,300.8705078125 +1631992750.9972465,301.055859375 +1631992752.0006294,301.24921875 +1631992753.0024807,301.4759765625 +1631992754.0059404,301.683203125 +1631992755.0093393,301.9205078125 +1631992756.0128226,302.1328125 +1631992757.0156205,302.378125 +1631992758.0190024,302.591015625 +1631992759.0273743,302.801953125 +1631992760.0291784,303.0287109375 +1631992761.0327153,303.2181640625 +1631992762.036137,303.410546875 +1631992763.0394862,303.571484375 +1631992764.0479622,303.761328125 +1631992765.051362,303.9236328125 +1631992766.0547469,304.0734375 +1631992767.0581288,304.246484375 +1631992768.060922,304.395703125 +1631992769.0697896,304.5810546875 +1631992770.0732996,304.7326171875 +1631992771.076099,304.9185546875 +1631992772.0794616,305.0935546875 +1631992773.0830107,305.2861328125 +1631992774.0911596,305.4849609375 +1631992775.0939605,305.64296875 +1631992776.0973363,305.8451171875 +1631992777.1007292,306.026953125 +1631992778.1042283,306.194140625 +1631992779.117253,306.3931640625 +1631992780.120626,306.57265625 +1631992781.1241827,306.785546875 +1631992782.1273508,306.9576171875 +1631992783.1360328,307.1408203125 +1631992784.1445875,307.349609375 +1631992785.1463485,307.5197265625 +1631992786.1497486,307.7181640625 +1631992787.1532502,307.8841796875 +1631992788.1550002,308.082421875 +1631992789.1636832,308.251953125 +1631992790.1667929,308.4265625 +1631992791.169978,308.6291015625 +1631992792.172906,308.817578125 +1631992793.176432,309.026171875 +1631992794.1848066,309.1970703125 +1631992795.1881976,309.40390625 +1631992796.1915615,309.5919921875 +1631992797.1949494,309.7853515625 +1631992798.1983612,309.995703125 +1631992799.2063448,310.1927734375 +1631992800.209759,310.41953125 +1631992801.213146,310.60234375 +1631992802.2159216,310.7958984375 +1631992803.2193258,311.019140625 +1631992804.2277365,311.2146484375 +1631992805.2311413,311.4287109375 +1631992806.233936,311.6265625 +1631992807.2372992,311.813671875 +1631992808.240638,312.0087890625 +1631992809.2484257,312.1701171875 +1631992810.2519057,312.345703125 +1631992811.2552514,312.4947265625 +1631992812.2580204,312.675390625 +1631992813.2613354,312.833203125 +1631992814.269484,313.0107421875 +1631992815.273037,313.2177734375 +1631992816.275839,313.406640625 +1631992817.2793157,313.6271484375 +1631992818.2829196,313.83828125 +1631992819.2849584,314.0333984375 +1631992820.2884123,314.2578125 +1631992821.2917902,314.4412109375 +1631992822.2950482,314.6216796875 +1631992823.296895,314.8171875 +1631992824.3002658,314.9732421875 +1631992825.3090096,315.174609375 +1631992826.3124764,315.348046875 +1631992827.3153162,315.5431640625 +1631992828.318712,315.7099609375 +1631992829.322093,315.8771484375 +1631992830.3353047,316.0703125 +1631992831.3381157,316.2189453125 +1631992832.3415234,316.4103515625 +1631992833.3449132,316.5955078125 +1631992834.3499362,316.79140625 +1631992835.3583498,316.959765625 +1631992836.3613226,317.1451171875 +1631992837.3646505,317.345703125 +1631992838.3674273,317.5158203125 +1631992839.3708284,317.72109375 +1631992840.379443,317.894921875 +1631992841.3829527,318.072265625 +1631992842.3860586,318.2798828125 +1631992843.3894296,318.45390625 +1631992844.3929403,318.646484375 +1631992845.400102,318.80546875 +1631992846.408891,318.969140625 +1631992847.4113886,319.1525390625 +1631992848.4147274,319.3189453125 +1631992849.4181583,319.5087890625 +1631992850.4266,319.684765625 +1631992851.4299097,319.896875 +1631992852.4331677,320.0705078125 +1631992853.4365594,320.2490234375 +1631992854.4399102,320.4578125 +1631992855.447192,320.640625 +1631992856.4506059,320.8564453125 +1631992857.4540784,321.0490234375 +1631992858.4558952,321.2517578125 +1631992859.4593163,321.4134765625 +1631992860.468191,321.5759765625 +1631992861.4715238,321.7400390625 +1631992862.4742887,321.8853515625 +1631992863.4777102,322.0515625 +1631992864.481164,322.209765625 +1631992865.4893537,322.3533203125 +1631992866.4911516,322.5205078125 +1631992867.4945066,322.6720703125 +1631992868.5031683,322.8162109375 +1631992869.506526,322.9951171875 +1631992870.5138905,323.1583984375 +1631992871.5172734,323.346875 +1631992872.5207243,323.508984375 +1631992873.524673,323.696484375 +1631992874.5281386,323.8439453125 +1631992875.5417395,323.987890625 +1631992876.5450943,324.16015625 +1631992877.547913,324.3232421875 +1631992878.5513198,324.5052734375 +1631992879.5547016,324.68125 +1631992880.5620263,324.9 +1631992881.5654058,325.0900390625 +1631992882.5687797,325.2650390625 +1631992883.5705783,325.4681640625 +1631992884.5740864,325.636328125 +1631992885.581279,325.8107421875 +1631992886.5841987,325.9591796875 +1631992887.5859885,326.1369140625 +1631992888.5889513,326.293359375 +1631992889.591934,326.455859375 +1631992890.5997937,326.6462890625 +1631992891.6025774,326.8033203125 +1631992892.6055284,326.9890625 +1631992893.60889,327.158984375 +1631992894.611693,327.3220703125 +1631992895.6249444,327.5095703125 +1631992896.628335,327.6666015625 +1631992897.631731,327.8638671875 +1631992898.6348615,328.0283203125 +1631992899.6378214,328.2048828125 +1631992900.651315,328.38515625 +1631992901.6541207,328.559765625 +1631992902.6575055,328.7501953125 +1631992903.660926,328.91796875 +1631992904.664384,329.0994140625 +1631992905.6720536,329.269140625 +1631992906.6754973,329.4404296875 +1631992907.678919,329.6435546875 +1631992908.6817129,329.815234375 +1631992909.6851125,330.021484375 +1631992910.697581,330.203515625 +1631992911.7014937,330.40625 +1631992912.7048833,330.5732421875 +1631992913.7082431,330.7328125 +1631992914.711614,330.9134765625 +1631992915.7200117,331.06484375 +1631992916.7235725,331.2330078125 +1631992917.726885,331.378515625 +1631992918.7296689,331.521484375 +1631992919.7332015,331.6736328125 +1631992920.7417612,331.80703125 +1631992921.7451558,331.9720703125 +1631992922.7479627,332.114453125 +1631992923.7512982,332.268359375 +1631992924.7544692,332.473046875 +1631992925.7562497,332.657421875 +1631992926.7601843,332.8560546875 +1631992927.7642443,333.0388671875 +1631992928.7660067,333.21484375 +1631992929.7694404,333.4017578125 +1631992930.7729373,333.559765625 +1631992931.7812648,333.749609375 +1631992932.7840555,333.9099609375 +1631992933.7874372,334.07578125 +1631992934.790771,334.280859375 +1631992935.7936685,334.4349609375 +1631992936.8317778,334.6150390625 +1631992937.8351927,334.778125 +1631992938.8369753,334.9609375 +1631992939.840466,335.111328125 +1631992940.8439548,335.2509765625 +1631992941.8528392,335.4166015625 +1631992942.854602,335.555859375 +1631992943.8580217,335.7205078125 +1631992944.8614173,335.8716796875 +1631992945.8642519,336.0482421875 +1631992946.8760304,336.2646484375 +1631992947.8794081,336.4587890625 +1631992948.882938,336.67421875 +1631992949.8857586,336.8560546875 +1631992950.8891482,337.055078125 +1631992951.8984058,337.2146484375 +1631992952.9002986,337.3615234375 +1631992953.9043632,337.5169921875 +1631992954.9082859,337.6533203125 +1631992955.9116564,337.8083984375 +1631992956.9184313,337.9482421875 +1631992957.921851,338.12890625 +1631992958.9252443,338.2857421875 +1631992959.9270341,338.4390625 +1631992960.9304547,338.6068359375 +1631992961.9388413,338.7451171875 +1631992962.9424052,338.9111328125 +1631992963.9452398,339.0478515625 +1631992964.9486485,339.1908203125 +1631992965.9520042,339.3625 +1631992966.9590926,339.5306640625 +1631992967.9625692,339.722265625 +1631992968.965947,339.884765625 +1631992969.9692867,340.0513671875 +1631992970.9710193,340.2443359375 +1631992971.979631,340.40546875 +1631992972.9830935,340.573828125 +1631992973.9864192,340.7275390625 +1631992974.9892228,340.885546875 +1631992975.9927633,341.0669921875 +1631992977.001204,341.2373046875 +1631992978.0045874,341.4435546875 +1631992979.0079541,341.61875 +1631992980.0112379,341.7994140625 +1631992981.0146277,341.9908203125 +1631992982.0219913,342.1478515625 +1631992983.0253837,342.3091796875 +1631992984.0287323,342.4349609375 +1631992985.031488,342.586328125 +1631992986.0341425,342.732421875 +1631992987.0425892,342.8751953125 +1631992988.045997,343.0439453125 +1631992989.0492916,343.2150390625 +1631992990.052086,343.398828125 +1631992991.0555089,343.543359375 +1631992992.0659742,343.71171875 +1631992993.068719,343.852734375 +1631992994.0712914,343.97890625 +1631992995.07469,344.128125 +1631992996.0764577,344.2607421875 +1631992997.0868592,344.405078125 +1631992998.0902689,344.5419921875 +1631992999.0988944,344.6837890625 +1631993000.1017091,344.844921875 +1631993001.1051016,344.983984375 +1631993002.113678,345.1513671875 +1631993003.1170287,345.309375 +1631993004.1211815,345.4927734375 +1631993005.1246657,345.644921875 +1631993006.1280293,345.808203125 +1631993007.135276,345.98515625 +1631993008.1386967,346.1365234375 +1631993009.1426322,346.312890625 +1631993010.145454,346.48046875 +1631993011.1488535,346.637109375 +1631993012.1571798,346.817578125 +1631993013.1601326,346.9771484375 +1631993014.1631222,347.15625 +1631993015.1665046,347.3 +1631993016.1750753,347.4439453125 +1631993017.1822739,347.6123046875 +1631993018.1857824,347.758203125 +1631993019.189151,347.91796875 +1631993020.1919436,348.0662109375 +1631993021.1953583,348.246484375 +1631993022.203714,348.415234375 +1631993023.2073734,348.6109375 +1631993024.210145,348.788671875 +1631993025.2136395,348.9642578125 +1631993026.217091,349.1642578125 +1631993027.2190928,349.33203125 +1631993028.2226322,349.511328125 +1631993029.226064,349.67890625 +1631993030.2294254,349.8294921875 +1631993031.2312288,349.99296875 +1631993032.2346165,350.123046875 +1631993033.242997,350.2791015625 +1631993034.2463357,350.3951171875 +1631993035.2491372,350.5404296875 +1631993036.2526948,350.6748046875 +1631993037.2561314,350.8072265625 +1631993038.264436,350.969921875 +1631993039.2672253,351.1177734375 +1631993040.270602,351.28125 +1631993041.2742267,351.4251953125 +1631993042.2760162,351.5642578125 +1631993043.2845917,351.7162109375 +1631993044.287929,351.8544921875 +1631993045.2913077,352.0216796875 +1631993046.2941494,352.1779296875 +1631993047.3028576,352.344140625 +1631993048.3134382,352.5455078125 +1631993049.316243,352.7150390625 +1631993050.3196595,352.8873046875 +1631993051.3231869,353.034375 +1631993052.3284914,353.203515625 +1631993053.335816,353.3462890625 +1631993054.3392534,353.4849609375 +1631993055.3427782,353.6662109375 +1631993056.3456087,353.828125 +1631993057.352966,354.0080078125 +1631993058.3611887,354.1654296875 +1631993059.364568,354.3298828125 +1631993060.3675308,354.5123046875 +1631993061.370896,354.659765625 +1631993062.374394,354.8236328125 +1631993063.381298,354.9630859375 +1631993064.384709,355.099609375 +1631993065.3880825,355.2572265625 +1631993066.390849,355.398828125 +1631993067.3942995,355.571484375 +1631993068.402696,355.7111328125 +1631993069.4097495,355.8556640625 +1631993070.413279,356.0216796875 +1631993071.4166594,356.163671875 +1631993072.419991,356.322265625 +1631993073.4273086,356.473828125 +1631993074.430635,356.625390625 +1631993075.4343264,356.78984375 +1631993076.4374552,356.9388671875 +1631993077.4408567,357.123828125 +1631993078.449115,357.2849609375 +1631993079.4511817,357.4736328125 +1631993080.4545732,357.628515625 +1631993081.4579058,357.7974609375 +1631993082.461435,357.9763671875 +1631993083.4634876,358.1263671875 +1631993084.4669182,358.3017578125 +1631993085.4703069,358.458203125 +1631993086.4737911,358.6154296875 +1631993087.4766307,358.7953125 +1631993088.4800024,358.948828125 +1631993089.4886177,359.1177734375 +1631993090.4914134,359.2671875 +1631993091.4948468,359.408984375 +1631993092.4982681,359.5611328125 +1631993093.5014927,359.6990234375 +1631993094.5087671,359.868359375 +1631993095.5113387,360.0021484375 +1631993096.5147512,360.1392578125 +1631993097.5165489,360.3013671875 +1631993098.5199313,360.4388671875 +1631993099.5282578,360.5921875 +1631993100.531197,360.7333984375 +1631993101.5393107,360.8716796875 +1631993102.5428112,361.0306640625 +1631993103.5461047,361.169140625 +1631993104.5535343,361.329296875 +1631993105.5569587,361.4615234375 +1631993106.560445,361.5978515625 +1631993107.5633497,361.76875 +1631993108.566651,361.9255859375 +1631993109.5767684,362.1021484375 +1631993110.58064,362.2705078125 +1631993111.5899656,362.4236328125 +1631993112.593509,362.604296875 +1631993113.5968583,362.7599609375 +1631993114.5986629,362.9345703125 +1631993115.6021185,363.071875 +1631993116.6054978,363.216015625 +1631993117.6072845,363.3828125 +1631993118.610592,363.5234375 +1631993119.6142843,363.6875 +1631993120.62281,363.84453125 +1631993121.6296842,364.0302734375 +1631993122.6332107,364.189453125 +1631993123.6366282,364.348046875 +1631993124.6383817,364.5205078125 +1631993125.6470582,364.656640625 +1631993126.6524847,364.805859375 +1631993127.66344,364.9314453125 +1631993128.6668425,365.066015625 +1631993129.670227,365.229296875 +1631993130.6784303,365.368359375 +1631993131.6812599,365.5400390625 +1631993132.6846554,365.678515625 +1631993133.6916456,365.831640625 +1631993134.6944282,365.9630859375 +1631993135.7029665,366.099609375 +1631993136.70643,366.2626953125 +1631993137.7084515,366.3998046875 +1631993138.711838,366.5591796875 +1631993139.7151916,366.6955078125 +1631993140.7282147,366.8470703125 +1631993141.731017,366.9734375 +1631993142.7344558,367.10625 +1631993143.7378395,367.2669921875 +1631993144.7412207,367.410546875 +1631993145.7515771,367.5705078125 +1631993146.7548857,367.712109375 +1631993147.758264,367.853125 +1631993148.7600493,368.0150390625 +1631993149.763558,368.1494140625 +1631993150.7712615,368.3091796875 +1631993151.7730548,368.44921875 +1631993152.7764132,368.6171875 +1631993153.7798398,368.75078125 +1631993154.781871,368.884375 +1631993155.7951636,369.035546875 +1631993156.79911,369.1576171875 +1631993157.8027284,369.2908203125 +1631993158.805606,369.4203125 +1631993159.8089933,369.5490234375 +1631993160.8223054,369.695703125 +1631993161.825113,369.836328125 +1631993162.8285306,370.015234375 +1631993163.831916,370.168359375 +1631993164.8352613,370.3458984375 +1631993165.8429878,370.5076171875 +1631993166.8463824,370.6666015625 +1631993167.8498058,370.848828125 +1631993168.8512764,370.9966796875 +1631993169.8551347,371.16484375 +1631993170.863841,371.30859375 +1631993171.8672044,371.47109375 +1631993172.8700309,371.60078125 +1631993173.8735442,371.7365234375 +1631993174.8769617,371.896875 +1631993175.8853152,372.02890625 +1631993176.8881247,372.1822265625 +1631993177.891526,372.32734375 +1631993178.8949625,372.4591796875 +1631993179.8969839,372.6060546875 +1631993180.9050074,372.7271484375 +1631993181.9084036,372.8611328125 +1631993182.9118662,372.988671875 +1631993183.9146974,373.11875 +1631993184.918098,373.27421875 +1631993185.9270632,373.4224609375 +1631993186.9304187,373.595703125 +1631993187.9340541,373.7513671875 +1631993188.9374776,373.9080078125 +1631993189.9408362,374.0783203125 +1631993190.9481013,374.2271484375 +1631993191.9514818,374.3953125 +1631993192.954812,374.5310546875 +1631993193.9576178,374.65546875 +1631993194.961194,374.790625 +1631993195.9695203,374.918359375 +1631993196.973055,375.0623046875 +1631993197.9758575,375.185546875 +1631993198.979277,375.30390625 +1631993199.9827802,375.4423828125 +1631993200.9899595,375.5626953125 +1631993201.9934678,375.70703125 +1631993202.9969182,375.845703125 +1631993203.9989228,376.0212890625 +1631993205.002435,376.1814453125 +1631993206.0108197,376.340625 +1631993207.014326,376.526171875 +1631993208.0171344,376.6666015625 +1631993209.0206747,376.8220703125 +1631993210.0242872,376.9380859375 +1631993211.0352466,377.0734375 +1631993212.038051,377.1828125 +1631993213.041479,377.2865234375 +1631993214.0448687,377.4037109375 +1631993215.04769,377.517578125 +1631993216.0560756,377.6646484375 +1631993217.0594928,377.8021484375 +1631993218.0629852,377.94140625 +1631993219.0657828,378.1234375 +1631993220.069185,378.2875 +1631993221.0773034,378.4609375 +1631993222.0800657,378.6033203125 +1631993223.0837224,378.74296875 +1631993224.0871317,378.8939453125 +1631993225.0904582,379.01484375 +1631993226.0977974,379.14296875 +1631993227.1011508,379.24921875 +1631993228.1045423,379.35390625 +1631993229.1063166,379.480078125 +1631993230.109735,379.596875 +1631993231.1179821,379.7359375 +1631993232.1212897,379.876171875 +1631993233.124031,380.0484375 +1631993234.1273885,380.190234375 +1631993235.1307328,380.33046875 +1631993236.138076,380.5013671875 +1631993237.1414785,380.650390625 +1631993238.1524858,380.793359375 +1631993239.158564,380.9171875 +1631993240.1619487,381.0474609375 +1631993241.1703749,381.1873046875 +1631993242.1738133,381.3125 +1631993243.1766276,381.4638671875 +1631993244.180047,381.603125 +1631993245.1888185,381.7478515625 +1631993246.1988356,381.906640625 +1631993247.2019691,382.04140625 +1631993248.2053435,382.2044921875 +1631993249.2087047,382.3544921875 +1631993250.2115333,382.51484375 +1631993251.2219996,382.6541015625 +1631993252.2306588,382.7869140625 +1631993253.2342954,382.9275390625 +1631993254.2374687,383.0384765625 +1631993255.241277,383.1646484375 +1631993256.2496552,383.272265625 +1631993257.2514107,383.41171875 +1631993258.254792,383.5392578125 +1631993259.2635374,383.681640625 +1631993260.2668436,383.84296875 +1631993261.27425,383.9896484375 +1631993262.2776434,384.1611328125 +1631993263.281103,384.3140625 +1631993264.284531,384.480078125 +1631993265.2878976,384.6240234375 +1631993266.2963548,384.761328125 +1631993267.299736,384.9185546875 +1631993268.3027306,385.04296875 +1631993269.306175,385.1828125 +1631993270.3094883,385.302734375 +1631993271.3219936,385.4287109375 +1631993272.3254058,385.57109375 +1631993273.3287432,385.6916015625 +1631993274.3315246,385.8404296875 +1631993275.334968,385.9673828125 +1631993276.3434892,386.11171875 +1631993277.3468196,386.2431640625 +1631993278.349689,386.37890625 +1631993279.3532684,386.5330078125 +1631993280.3566487,386.671875 +1631993281.358437,386.8359375 +1631993282.3618565,386.98203125 +1631993283.3653316,387.129296875 +1631993284.3687422,387.27734375 +1631993285.3712385,387.4109375 +1631993286.374688,387.5677734375 +1631993287.383193,387.698828125 +1631993288.3865914,387.8255859375 +1631993289.3893929,387.971875 +1631993290.3929262,388.1013671875 +1631993291.3987586,388.24296875 +1631993292.4059138,388.3724609375 +1631993293.409326,388.483984375 +1631993294.4127975,388.6263671875 +1631993295.416157,388.7619140625 +1631993296.4189374,388.919140625 +1631993297.4272835,389.051953125 +1631993298.430336,389.187890625 +1631993299.4338071,389.3470703125 +1631993300.4373314,389.4849609375 +1631993301.44067,389.6310546875 +1631993302.4490952,389.753125 +1631993303.4530046,389.88828125 +1631993304.4563649,389.9958984375 +1631993305.4598572,390.112109375 +1631993306.4632416,390.234765625 +1631993307.4705708,390.34609375 +1631993308.474096,390.4900390625 +1631993309.4774165,390.616015625 +1631993310.4802148,390.7498046875 +1631993311.4837143,390.9025390625 +1631993312.4930525,391.038671875 +1631993313.495878,391.1955078125 +1631993314.4993231,391.335546875 +1631993315.5027976,391.47734375 +1631993316.5061598,391.641015625 +1631993317.513283,391.78515625 +1631993318.5167062,391.94296875 +1631993319.520187,392.069140625 +1631993320.5221963,392.2140625 +1631993321.5255764,392.342578125 +1631993322.5381758,392.494140625 +1631993323.5415208,392.633203125 +1631993324.5443113,392.7802734375 +1631993325.5476897,392.944140625 +1631993326.551095,393.092578125 +1631993327.5546222,393.25546875 +1631993328.5580726,393.387890625 +1631993329.561379,393.5169921875 +1631993330.564732,393.662109375 +1631993331.5675247,393.7904296875 +1631993332.57089,393.934765625 +1631993333.5793362,394.06015625 +1631993334.5813236,394.194140625 +1631993335.5847769,394.3369140625 +1631993336.5882123,394.4630859375 +1631993337.5915813,394.6046875 +1631993338.599151,394.7322265625 +1631993339.60271,394.8541015625 +1631993340.6061203,394.998828125 +1631993341.6079037,395.12890625 +1631993342.6113253,395.2880859375 +1631993343.6194782,395.4291015625 +1631993344.6229455,395.5818359375 +1631993345.625764,395.71640625 +1631993346.6291623,395.845703125 +1631993347.6326425,395.989453125 +1631993348.6451278,396.108203125 +1631993349.648545,396.253125 +1631993350.6519513,396.3830078125 +1631993351.6553116,396.5166015625 +1631993352.6581602,396.66875 +1631993353.6664872,396.80625 +1631993354.6698456,396.968359375 +1631993355.673335,397.116015625 +1631993356.676201,397.28125 +1631993357.6795576,397.42578125 +1631993358.6876419,397.5669921875 +1631993359.6914012,397.72578125 +1631993360.6947424,397.8515625 +1631993361.6981647,397.9978515625 +1631993362.7014568,398.1232421875 +1631993363.7085705,398.265625 +1631993364.7112634,398.38359375 +1631993365.7147007,398.501953125 +1631993366.716624,398.6306640625 +1631993367.7200124,398.746484375 +1631993368.7284367,398.88125 +1631993369.7312613,399.003125 +1631993370.7330463,399.148828125 +1631993371.736451,399.28125 +1631993372.7398221,399.4197265625 +1631993373.7477572,399.578125 +1631993374.7516255,399.7119140625 +1631993375.755035,399.866015625 +1631993376.7584152,399.9916015625 +1631993377.7612634,400.113671875 +1631993378.7690706,400.2482421875 +1631993379.772604,400.369921875 +1631993380.7760103,400.5080078125 +1631993381.7788117,400.631640625 +1631993382.7823477,400.7654296875 +1631993383.790533,400.9177734375 +1631993384.7939973,401.0490234375 +1631993385.7968047,401.2044921875 +1631993386.8001852,401.340234375 +1631993387.8036582,401.4650390625 +1631993388.8119576,401.6078125 +1631993389.8153477,401.7298828125 +1631993390.818773,401.869140625 +1631993391.8221414,401.9943359375 +1631993392.8249588,402.137109375 +1631993393.833345,402.258984375 +1631993394.8366094,402.3876953125 +1631993395.8399596,402.537109375 +1631993396.842821,402.6712890625 +1631993397.846214,402.82734375 +1631993398.8570352,402.9611328125 +1631993399.8596525,403.0978515625 +1631993400.862521,403.252734375 +1631993401.865946,403.383984375 +1631993402.8693624,403.537890625 +1631993403.8775306,403.6779296875 +1631993404.8847969,403.834765625 +1631993405.8881712,403.9662109375 +1631993406.8915443,404.1037109375 +1631993407.8943737,404.2580078125 +1631993408.9028199,404.3849609375 +1631993409.9062424,404.5234375 +1631993410.9096146,404.6482421875 +1631993411.9178107,404.771484375 +1631993412.9212391,404.9123046875 +1631993413.9296222,405.03359375 +1631993414.9313555,405.17890625 +1631993415.9347527,405.304296875 +1631993416.938103,405.451171875 +1631993417.9414785,405.5771484375 +1631993418.9491456,405.7107421875 +1631993419.952679,405.8662109375 +1631993420.9560611,405.99609375 +1631993421.9588654,406.149609375 +1631993422.9622917,406.2814453125 +1631993423.970421,406.4048828125 +1631993424.9722772,406.5533203125 +1631993425.9761806,406.680078125 +1631993426.9800565,406.8291015625 +1631993427.983627,406.9619140625 +1631993428.9919412,407.1078125 +1631993429.9953015,407.233984375 +1631993430.9987628,407.3478515625 +1631993432.000777,407.48359375 +1631993433.0042021,407.5919921875 +1631993434.0121455,407.7275390625 +1631993435.0155046,407.8310546875 +1631993436.021821,407.966015625 +1631993437.0251362,408.0826171875 +1631993438.0284994,408.2033203125 +1631993439.0303218,408.3431640625 +1631993440.033839,408.4681640625 +1631993441.0425293,408.6021484375 +1631993442.0458336,408.75078125 +1631993443.0486498,408.8779296875 +1631993444.052056,409.024609375 +1631993445.0614052,409.1564453125 +1631993446.0642025,409.30546875 +1631993447.0675917,409.430078125 +1631993448.070987,409.5666015625 +1631993449.0745792,409.7146484375 +1631993450.0832145,409.8443359375 +1631993451.0866158,409.9861328125 +1631993452.0899148,410.1208984375 +1631993453.0927973,410.2529296875 +1631993454.0962286,410.3998046875 +1631993455.1046708,410.5349609375 +1631993456.106669,410.683984375 +1631993457.110064,410.8123046875 +1631993458.1128025,410.937890625 +1631993459.11622,411.0740234375 +1631993460.1246758,411.208203125 +1631993461.1281111,411.3517578125 +1631993462.1314864,411.4677734375 +1631993463.1332777,411.58515625 +1631993464.136682,411.72421875 +1631993465.1451423,411.840625 +1631993466.1485095,411.9646484375 +1631993467.151342,412.0873046875 +1631993468.1547022,412.2189453125 +1631993469.1585174,412.331640625 +1631993470.1716864,412.4482421875 +1631993471.1744838,412.573828125 +1631993472.1778598,412.6845703125 +1631993473.181237,412.8189453125 +1631993474.1840384,412.94375 +1631993475.1936824,413.093359375 +1631993476.1970398,413.2150390625 +1631993477.200395,413.35703125 +1631993478.2044363,413.5138671875 +1631993479.2078345,413.6490234375 +1631993480.2161236,413.8064453125 +1631993481.2189188,413.9392578125 +1631993482.2223742,414.0740234375 +1631993483.2258036,414.2228515625 +1631993484.2277365,414.345703125 +1631993485.236786,414.4873046875 +1631993486.240011,414.6103515625 +1631993487.2435293,414.734375 +1631993488.2463286,414.8759765625 +1631993489.249843,415.000390625 +1631993490.258444,415.15 +1631993491.2603133,415.2791015625 +1631993492.2691143,415.4115234375 +1631993493.2727058,415.566015625 +1631993494.276069,415.691015625 +1631993495.283434,415.8431640625 +1631993496.2868571,415.9720703125 +1631993497.2946086,416.107421875 +1631993498.2980077,416.2244140625 +1631993499.3012679,416.3466796875 +1631993500.309667,416.483984375 +1631993501.3132074,416.612890625 +1631993502.3152008,416.7619140625 +1631993503.3186178,416.8873046875 +1631993504.326539,417.0208984375 +1631993505.334758,417.17578125 +1631993506.3367586,417.305859375 +1631993507.340133,417.44375 +1631993508.3436182,417.5783203125 +1631993509.352261,417.7083984375 +1631993510.3600705,417.848828125 +1631993511.3635385,417.9736328125 +1631993512.3669047,418.1244140625 +1631993513.370253,418.256640625 +1631993514.3735332,418.4009765625 +1631993515.3817744,418.5244140625 +1631993516.3851068,418.64453125 +1631993517.3878949,418.765625 +1631993518.3912861,418.8771484375 +1631993519.3946955,419.0123046875 +1631993520.4032104,419.1267578125 +1631993521.4063487,419.2734375 +1631993522.4096909,419.39765625 +1631993523.4131722,419.52421875 +1631993524.4149225,419.6748046875 +1631993525.4234576,419.7966796875 +1631993526.4268887,419.9357421875 +1631993527.430232,420.065234375 +1631993528.4333992,420.194140625 +1631993529.4368155,420.3369140625 +1631993530.4454167,420.465625 +1631993531.448839,420.6150390625 +1631993532.452323,420.73828125 +1631993533.4585314,420.8798828125 +1631993534.4618726,421.00234375 +1631993535.4690397,421.127734375 +1631993536.472741,421.2751953125 +1631993537.476097,421.4048828125 +1631993538.4802914,421.55234375 +1631993539.4831746,421.68359375 +1631993540.4912057,421.8146484375 +1631993541.494598,421.9587890625 +1631993542.4979742,422.0810546875 +1631993543.5011864,422.215234375 +1631993544.5045526,422.337109375 +1631993545.5426602,422.4763671875 +1631993546.5454836,422.5974609375 +1631993547.5542188,422.725 +1631993548.5577369,422.8693359375 +1631993549.5612683,423.0052734375 +1631993550.5694633,423.1552734375 +1631993551.5729237,423.280078125 +1631993552.5773337,423.42109375 +1631993553.580689,423.5517578125 +1631993554.5838761,423.680859375 +1631993555.5969312,423.82734375 +1631993556.6003075,423.9478515625 +1631993557.6020818,424.09296875 +1631993558.605476,424.2244140625 +1631993559.6089802,424.355859375 +1631993560.6107664,424.498828125 +1631993561.6142478,424.6203125 +1631993562.6176548,424.7546875 +1631993563.6209872,424.8697265625 +1631993564.6291313,424.9845703125 +1631993565.6326873,425.1197265625 +1631993566.6411457,425.241015625 +1631993567.6429086,425.38046875 +1631993568.646304,425.5072265625 +1631993569.6521583,425.6419921875 +1631993570.6554873,425.76328125 +1631993571.6686363,425.8861328125 +1631993572.6720235,426.027734375 +1631993573.6753988,426.1443359375 +1631993574.677173,426.282421875 +1631993575.6805573,426.4095703125 +1631993576.6939726,426.5287109375 +1631993577.6972895,426.6595703125 +1631993578.7004158,426.7724609375 +1631993579.704028,426.905859375 +1631993580.7073722,427.0224609375 +1631993581.7148724,427.1470703125 +1631993582.7182374,427.2669921875 +1631993583.7213678,427.3955078125 +1631993584.724205,427.534375 +1631993585.727579,427.6640625 +1631993586.7359324,427.8083984375 +1631993587.7392914,427.936328125 +1631993588.7420635,428.07265625 +1631993589.74546,428.19765625 +1631993590.748861,428.31015625 +1631993591.7506802,428.4357421875 +1631993592.7544057,428.537890625 +1631993593.7578337,428.6548828125 +1631993594.759817,428.762890625 +1631993595.7686012,428.874609375 +1631993596.7719963,429.0005859375 +1631993597.7803774,429.118359375 +1631993598.7821846,429.26171875 +1631993599.7855446,429.384375 +1631993600.788924,429.523046875 +1631993601.792467,429.6458984375 +1631993602.7945285,429.7720703125 +1631993603.7979887,429.9099609375 +1631993604.80136,430.030078125 +1631993605.8047209,430.166796875