Initial commit

This commit is contained in:
RunasSudo 2018-12-31 20:26:36 +11:00
commit ab5ee7de04
Signed by: RunasSudo
GPG Key ID: 7234E476BF21C61A
4 changed files with 708 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
__pycache__
test.py
config.py

115
virtual_metro/__init__.py Executable file
View File

@ -0,0 +1,115 @@
#!/usr/bin/env python3
import flask
app = flask.Flask(__name__)
from . import config
import hashlib
import hmac
import json
import pytz
from binascii import hexlify
from datetime import datetime
from urllib.parse import urlencode
from urllib.request import Request, urlopen
def do_request(endpoint, args=None):
url = endpoint + '?devid=' + config.PTV_USER_ID
if args:
url += '&' + urlencode(args)
# Generate signature
signature = hexlify(hmac.digest(config.PTV_API_KEY.encode('ascii'), url.encode('ascii'), 'sha1')).decode('ascii')
req = Request('https://timetableapi.ptv.vic.gov.au' + url + '&signature=' + signature, headers={'User-Agent': 'virtual-metro/0.1'})
resp = urlopen(req)
return json.load(resp)
def dest_to_service_name(dest):
if dest == 'Parliament':
return 'City Loop'
return dest
def parse_date(dtstring):
return pytz.utc.localize(datetime.strptime(dtstring, '%Y-%m-%dT%H:%M:%SZ')).astimezone(timezone)
STOP_ID = 1099 # Huntingdale Station
PLAT_ID = 1
ROUTE_TYPE = 0
timezone = pytz.timezone('Australia/Melbourne')
@app.route('/')
def index():
return app.send_static_file('index.html')
@app.route('/latest')
def latest():
timenow = pytz.utc.localize(datetime.utcnow()).astimezone(timezone)
result = {}
departures = do_request('/v3/departures/route_type/{}/stop/{}'.format(ROUTE_TYPE, STOP_ID), {'platform_numbers': str(PLAT_ID), 'max_results': '5', 'expand': 'all'})
departures['departures'].sort(key=lambda x: x['scheduled_departure_utc'])
# Next train
for i, departure in enumerate(departures['departures']):
if parse_date(departure['estimated_departure_utc'] or departure['scheduled_departure_utc']) < timenow:
continue
# This is the next train
result['dest'] = dest_to_service_name(departures['runs'][str(departure['run_id'])]['destination_name'])
result['sch'] = parse_date(departure['scheduled_departure_utc']).strftime('%I:%M').lstrip('0')
mins = (parse_date(departure['estimated_departure_utc'] or departure['scheduled_departure_utc']) - timenow).total_seconds() / 60
if mins < 0.5:
result['now'] = 'NOW'
else:
result['min'] = round(mins)
# Get stopping pattern
result['stops'] = []
pattern = do_request('/v3/pattern/run/{}/route_type/{}'.format(departure['run_id'], ROUTE_TYPE), {'expand': 'all'})
pattern_stops = set(x['stop_id'] for x in pattern['departures'])
# Get all stops on route
stops = do_request('/v3/stops/route/{}/route_type/{}'.format(departure['route_id'], ROUTE_TYPE), {'direction_id': departure['direction_id']})
stops['stops'].sort(key=lambda x: x['stop_sequence'])
# Calculate stopping pattern until city loop
for j, stop in enumerate(stops['stops']):
if stop['stop_id'] == STOP_ID:
break
for stop in stops['stops'][j+1:]:
if stop['stop_id'] in pattern_stops:
result['stops'].append(stop['stop_name'].replace('Station', '').strip())
else:
result['stops'].append('---')
if stop['stop_id'] == departures['runs'][str(departure['run_id'])]['final_stop_id']:
break
if stop['stop_id'] == 1155 or stop['stop_id'] == 1120 or stop['stop_id'] == 1068 or stop['stop_id'] == 1181 or stop['stop_id'] == 1071: # Parliament, MCS, Flagstaff, SXS, Flinders St
break
# Calculate stopping pattern in city loop
pattern['departures'].sort(key=lambda x: x['scheduled_departure_utc'])
for k, stop2 in enumerate(pattern['departures']):
if stop2['stop_id'] == stop['stop_id']:
break
for stop in pattern['departures'][k+1:]:
result['stops'].append(pattern['stops'][str(stop['stop_id'])]['stop_name'].replace('Station', '').strip())
break
# Next trains
result['next'] = []
for departure in departures['departures'][i+1:i+3]:
result['next'].append({})
result['next'][-1]['dest'] = dest_to_service_name(departures['runs'][str(departure['run_id'])]['destination_name'])
result['next'][-1]['desc'] = 'Express' if departures['runs'][str(departure['run_id'])]['express_stop_count'] > 4 else 'Limited Express'
result['next'][-1]['sch'] = parse_date(departure['scheduled_departure_utc']).strftime('%I:%M').lstrip('0')
result['next'][-1]['min'] = '{} mins'.format(round((parse_date(departure['estimated_departure_utc'] or departure['scheduled_departure_utc']) - timenow).total_seconds() / 60))
return flask.jsonify(result)
...

View File

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#mainsvg {
width: 100vw;
height: 100vh;
max-width: 100vw;
max-height: 100vh;
}
body, html {
background-color: black;
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/nunjucks/3.0.1/nunjucks.min.js"></script>
<script>
function start() {
var svg = document.getElementById("mainsvg").getSVGDocument().querySelector("svg");
var template = svg.innerHTML;
svg.innerHTML = nunjucks.renderString(template, {});
function tick() {
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function() {
svg.innerHTML = nunjucks.renderString(template, JSON.parse(xhr.responseText));
});
xhr.open("GET", "latest");
xhr.send();
}
tick();
window.setInterval(tick, 30000);
}
</script>
<object id="mainsvg" data="static/template.svg" type="image/svg+xml" onload="start();"></object>
</body>
</html>

View File

@ -0,0 +1,545 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="699.86865mm"
height="190.5mm"
viewBox="0 0 699.86865 190.5"
version="1.1"
id="svg8"
inkscape:version="0.92.2 2405546, 2018-03-11"
sodipodi:docname="template.svg"
inkscape:export-filename="Clayton-Flinders.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="989.80651"
inkscape:cy="258.31501"
inkscape:document-units="mm"
inkscape:current-layer="layer2"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"
style="display:inline"
transform="translate(49.370571,-81.888306)">
<rect
y="81.888306"
x="-49.370571"
height="190.5"
width="699.86865"
id="rect1053"
style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.80859768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.44121933px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.47671759"
x="-29.698626"
y="118.90399"
id="text828"><tspan
sodipodi:role="line"
id="tspan826"
x="-29.698626"
y="118.90399"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:35.44121933px;font-family:'Arial';-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:1.47671759">{{dest}}</tspan></text>
<path
style="display:inline;fill:none;stroke:#019fe9;stroke-width:0.80859768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M -27.426898,128.78074 H 417.43553"
id="path849"
inkscape:connector-curvature="0" />
<text
id="text853"
y="118.9901"
x="266.55832"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.62312508px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10929692"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.62312508px;font-family:Arial;-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:1.10929692"
y="118.9901"
x="266.55832"
id="tspan851"
sodipodi:role="line">{{sch}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.87647152px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.49485174"
x="391.81189"
y="113.70733"
id="text861"><tspan
sodipodi:role="line"
id="tspan859"
x="391.81189"
y="113.70733"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11.87647152px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.49485174">{% if min %}mins{% endif %}</tspan></text>
<text
id="text865"
y="92.865433"
x="352.62292"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34284163px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30595097"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34284163px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.30595097"
y="92.865433"
x="352.62292"
id="tspan863"
sodipodi:role="line">Departing</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34284163px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.30595097"
x="265.88861"
y="92.865433"
id="text869"><tspan
sodipodi:role="line"
id="tspan867"
x="265.88861"
y="92.865433"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.34284163px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.30595097">Schedule</tspan></text>
<text
id="text943"
y="146.35385"
x="-29.251959"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="146.35385"
x="-29.251959"
sodipodi:role="line"
id="tspan891">{{stops[0]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="-29.251959"
y="165.3709"
id="text947"><tspan
sodipodi:role="line"
id="tspan945"
x="-29.251959"
y="165.3709"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[1]}}</tspan></text>
<text
id="text951"
y="184.38792"
x="-29.251959"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="184.38792"
x="-29.251959"
id="tspan949"
sodipodi:role="line">{{stops[2]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="-29.251959"
y="203.40497"
id="text955"><tspan
sodipodi:role="line"
id="tspan953"
x="-29.251959"
y="203.40497"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[3]}}</tspan></text>
<text
id="text959"
y="222.422"
x="-29.251959"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="222.422"
x="-29.251959"
id="tspan957"
sodipodi:role="line">{{stops[4]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="-29.251959"
y="241.43904"
id="text963"><tspan
sodipodi:role="line"
id="tspan961"
x="-29.251959"
y="241.43904"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[5]}}</tspan></text>
<text
id="text967"
y="260.45605"
x="-29.251959"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="260.45605"
x="-29.251959"
id="tspan965"
sodipodi:role="line">{{stops[6]}}</tspan></text>
<rect
style="opacity:1;vector-effect:none;fill:#019fe9;fill-opacity:1;stroke:none;stroke-width:0.80859768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers"
id="rect999"
width="14.576808"
height="190.5"
x="-49.370571"
y="81.888306" />
<rect
y="81.888306"
x="423.19763"
height="190.5"
width="14.576808"
id="rect1001"
style="opacity:1;vector-effect:none;fill:#019fe9;fill-opacity:1;stroke:none;stroke-width:0.80859768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" />
<text
id="text1005"
y="92.045784"
x="445.34607"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.7079401px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.23783025"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.7079401px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.23783025"
y="92.045784"
x="445.34607"
id="tspan1003"
sodipodi:role="line">Schedule</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.7079401px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.23783025"
x="481.36502"
y="92.045784"
id="text1009"><tspan
sodipodi:role="line"
id="tspan1007"
x="481.36502"
y="92.045784"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.7079401px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.23783025">Train To</tspan></text>
<text
id="text1013"
y="92.045784"
x="594.70459"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.7079401px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.23783025"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.7079401px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.23783025"
y="92.045784"
x="594.70459"
id="tspan1011"
sodipodi:role="line">Departing</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52761269"
x="444.99631"
y="114.90017"
id="text1017"><tspan
sodipodi:role="line"
id="tspan1015"
x="444.99631"
y="114.90017"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.52761269">{{next[0].sch}}</tspan></text>
<text
id="text1021"
y="153.88506"
x="444.99631"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52761269"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.52761269"
y="153.88506"
x="444.99631"
id="tspan1019"
sodipodi:role="line">{{next[1].sch}}</tspan></text>
<text
id="text1025"
y="114.90017"
x="480.65323"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52761269"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.52761269"
y="114.90017"
x="480.65323"
id="tspan1023"
sodipodi:role="line">{{next[0].dest}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52761269"
x="480.65323"
y="153.88506"
id="text1029"><tspan
sodipodi:role="line"
id="tspan1027"
x="480.65323"
y="153.88506"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66273594px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.52761269">{{next[1].dest}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.44260502px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.39344093"
x="480.91739"
y="130.15756"
id="text1033"><tspan
sodipodi:role="line"
id="tspan1031"
x="480.91739"
y="130.15756"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.44260502px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.39344093">{{next[0].desc}}</tspan></text>
<text
id="text1037"
y="168.66704"
x="480.91739"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.44260502px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.39344093"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.44260502px;font-family:'Arial';-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.39344093"
y="168.66704"
x="480.91739"
id="tspan1035"
sodipodi:role="line">{{next[1].desc}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66260591px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52761269;"
x="594.75537"
y="114.90017"
id="text1041"><tspan
sodipodi:role="line"
id="tspan905">{{next[0].min}}</tspan></text>
<text
id="text1045"
y="153.88506"
x="594.75537"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.66260624px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.52761269"
xml:space="preserve"><tspan
sodipodi:role="line"
id="tspan908"
x="594.75537"
y="153.88506">{{next[1].min}}</tspan></text>
<path
inkscape:connector-curvature="0"
id="path1047"
d="M 444.18083,236.87609 H 644.59485"
style="display:inline;fill:none;stroke:#019fe9;stroke-width:0.80859768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
style="display:inline;fill:none;stroke:#019fe9;stroke-width:0.80859768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 120.99536,130.62734 V 264.76655"
id="path885"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path889"
d="M 269.01329,130.62734 V 264.76655"
style="display:inline;fill:none;stroke:#019fe9;stroke-width:0.80859768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="125.3554"
y="146.35385"
id="text897"><tspan
id="tspan895"
sodipodi:role="line"
x="125.3554"
y="146.35385"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[7]}}</tspan></text>
<text
id="text901"
y="165.3709"
x="125.3554"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="165.3709"
x="125.3554"
id="tspan899"
sodipodi:role="line">{{stops[8]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="125.3554"
y="184.38792"
id="text905"><tspan
sodipodi:role="line"
id="tspan903"
x="125.3554"
y="184.38792"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[9]}}</tspan></text>
<text
id="text909"
y="203.40497"
x="125.3554"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="203.40497"
x="125.3554"
id="tspan907"
sodipodi:role="line">{{stops[10]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="125.3554"
y="222.422"
id="text913"><tspan
sodipodi:role="line"
id="tspan911"
x="125.3554"
y="222.422"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[11]}}</tspan></text>
<text
id="text917"
y="241.43904"
x="125.3554"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="241.43904"
x="125.3554"
id="tspan915"
sodipodi:role="line">{{stops[12]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="125.3554"
y="260.45605"
id="text921"><tspan
sodipodi:role="line"
id="tspan919"
x="125.3554"
y="260.45605"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[13]}}</tspan></text>
<text
id="text925"
y="146.35385"
x="273.37332"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="146.35385"
x="273.37332"
sodipodi:role="line"
id="tspan923">{{stops[14]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="273.37332"
y="165.3709"
id="text929"><tspan
sodipodi:role="line"
id="tspan927"
x="273.37332"
y="165.3709"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[15]}}</tspan></text>
<text
id="text933"
y="184.38792"
x="273.37332"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="184.38792"
x="273.37332"
id="tspan931"
sodipodi:role="line">{{stops[16]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="273.37332"
y="203.40497"
id="text937"><tspan
sodipodi:role="line"
id="tspan935"
x="273.37332"
y="203.40497"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[17]}}</tspan></text>
<text
id="text941"
y="222.422"
x="273.37332"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="222.422"
x="273.37332"
id="tspan939"
sodipodi:role="line">{{stops[18]}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
x="273.37332"
y="241.43904"
id="text945"><tspan
sodipodi:role="line"
id="tspan943"
x="273.37332"
y="241.43904"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886">{{stops[19]}}</tspan></text>
<text
id="text949"
y="260.45605"
x="273.37332"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.69666886"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.72009468px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;stroke-width:0.69666886"
y="260.45605"
x="273.37332"
id="tspan947"
sodipodi:role="line">{{stops[20]}}</tspan></text>
<text
id="text972"
y="118.9901"
x="389.68814"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.62308311px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10929692"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.62308311px;font-family:Arial;-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end;fill:#ffffff;stroke-width:1.10929692"
y="118.9901"
x="389.68814"
id="tspan970"
sodipodi:role="line">{{min}}</tspan></text>
<text
id="text994"
y="266.71338"
x="543.94397"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.3508606px;line-height:1.25;font-family:'Arial';-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.13961673"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.3508606px;font-family:'Arial';-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;stroke-width:1.13961673"
y="266.71338"
x="543.94397"
id="tspan992"
sodipodi:role="line">{{time}}</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.62308311px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.10929692"
x="416.49408"
y="118.9901"
id="text903"><tspan
sodipodi:role="line"
id="tspan901"
x="416.49408"
y="118.9901"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.62308311px;font-family:Arial;-inkscape-font-specification:'Arial, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end;fill:#ffffff;stroke-width:1.10929692">{{now}}</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 46 KiB