diff --git a/README.md b/README.md index faf483e..c8b3b63 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,39 @@ Zur Kontrolle: `node tools/debug-svg.mjs` zeichnet die extrahierte Geometrie als SVG-Draufsicht, `node tools/inspect-colors.mjs` listet die Planfarben mit den nächstgelegenen Beschriftungen. +### Ebene Beläge statt gewelltem Gelände + +Gebaute Flächen sind eben. Für jeden Belag wird aus den Höhenkoten darin und +knapp daneben eine Ebene bestimmt – Gefälle auf 5 % begrenzt, am Schwerpunkt der +Koten aufgehängt, und nur Koten derselben Geländezone. Das Geländeraster wird in +diesen Feldern auf die Ebene gezwungen und dort **nicht** geglättet. Im Rendering +bekommt jeder Belag eine senkrechte Sichtkante zum angrenzenden Gelände – erst +dadurch wirkt eine Terrasse gebaut und nicht aufgemalt. Wachsende Flächen +(Rasen, Schotterwiese, Beet) folgen weiterhin dem Gelände. + +### Bauteile statt hochgezogener Flächen + +Der Plan nennt vier verschiedene Konstruktionen, und sie sehen auch verschieden +aus (`src/scene/walls.ts`): + +- **Travertinmauer / Sitzmauern** – Schichtmauerwerk aus einzelnen Blöcken mit + versetzten Stossfugen und überstehender Abdeckplatte. +- **Winkelelemente aus Beton** – Fertigteile von 1 m Breite, einzeln versetzt, + mit Stossfugen, nach unten dicker werdendem Stiel und Fussplatte. +- **Betonmauer Nachbar** – Ortbeton in Schaltafelfeldern mit abgefaster Krone. +- **Lamellenwand** – senkrechte Bretter im Rhythmus des Plans (10 cm breit, + 35 cm tief, 90 cm Achsabstand) vor dem gedeckten Sitzplatz. +- **Holzscheiterwand** – Stahlrahmen, gefüllt mit gestapelten Scheitern. + +Die **Eibenhecke** entsteht nicht aus Einzelkugeln: die Pflanzstandorte des Plans +werden zu Reihen verkettet, begradigt, an scharfen Knicken getrennt und als +geschnittener Heckenkörper mit gerundetem Querschnitt aufgezogen. Ebenso die +Ligusterhecke (170 cm hoch, 75 cm breit). Das ist der eigentliche Sichtschutz +im Garten. + +Die **Travertinplatten 40 × 60 × 3 cm** liegen laut Plan einzeln im Dekorkies – +30 Platten, exakt an den Planpositionen, als erhabene Platten auf dem Kiesbett. + ### Warum Zonen statt eines einzigen Geländes Das Grundstück fällt über rund 3.5 m ab, die Sprünge liegen aber nicht im @@ -117,7 +150,8 @@ src/ scene/geometry.ts Polygone auf das Gelände legen, Mauern extrudieren scene/terrain.ts Geländeraster und Umland scene/surfaces.ts Beläge - scene/structures.ts Mauern, Stelen, Objekte, Leuchten + scene/walls.ts Mauern als Bauteile: Schichtmauerwerk, Winkelelemente, Lamellen + scene/structures.ts Stelen, Objekte, Leuchten scene/vegetation.ts Gehölze, Hecken, Gräser, Stauden scene/building.ts Wohnhaus 9a und Nachbargebäude scene/environment.ts Himmel, Sonnenstand, Licht diff --git a/docs/bilder/abendstimmung.png b/docs/bilder/abendstimmung.png deleted file mode 100644 index eb15aeb..0000000 Binary files a/docs/bilder/abendstimmung.png and /dev/null differ diff --git a/docs/bilder/bedienoberflaeche.png b/docs/bilder/bedienoberflaeche.png deleted file mode 100644 index 17e310c..0000000 Binary files a/docs/bilder/bedienoberflaeche.png and /dev/null differ diff --git a/docs/bilder/flammengrill.png b/docs/bilder/flammengrill.png index 7830211..c06d055 100644 Binary files a/docs/bilder/flammengrill.png and b/docs/bilder/flammengrill.png differ diff --git a/docs/bilder/gedeckter-sitzplatz.png b/docs/bilder/gedeckter-sitzplatz.png index 247eb4f..82794a3 100644 Binary files a/docs/bilder/gedeckter-sitzplatz.png and b/docs/bilder/gedeckter-sitzplatz.png differ diff --git a/docs/bilder/hauptsitzplatz.png b/docs/bilder/hauptsitzplatz.png index c908a26..8176990 100644 Binary files a/docs/bilder/hauptsitzplatz.png and b/docs/bilder/hauptsitzplatz.png differ diff --git a/docs/bilder/mobil.png b/docs/bilder/mobil.png deleted file mode 100644 index 444d829..0000000 Binary files a/docs/bilder/mobil.png and /dev/null differ diff --git a/docs/bilder/nachbarschaft.png b/docs/bilder/nachbarschaft.png new file mode 100644 index 0000000..e366972 Binary files /dev/null and b/docs/bilder/nachbarschaft.png differ diff --git a/docs/bilder/sichtschutz-eibenhecke.png b/docs/bilder/sichtschutz-eibenhecke.png new file mode 100644 index 0000000..34e7322 Binary files /dev/null and b/docs/bilder/sichtschutz-eibenhecke.png differ diff --git a/docs/bilder/uebersicht.png b/docs/bilder/uebersicht.png index 550443a..384345e 100644 Binary files a/docs/bilder/uebersicht.png and b/docs/bilder/uebersicht.png differ diff --git a/docs/bilder/westterrasse.png b/docs/bilder/westterrasse.png index 28c7c32..750fe03 100644 Binary files a/docs/bilder/westterrasse.png and b/docs/bilder/westterrasse.png differ diff --git a/public/data/site.json b/public/data/site.json index 0702f2f..3fbfc46 100644 --- a/public/data/site.json +++ b/public/data/site.json @@ -1 +1 @@ -{"meta":{"source":"Gartenplan 1 Jasmin und Damian Kellenberger.pdf","scale":"1:100","ptToM":0.035277777777777776,"gridAngleDeg":-28.8385,"northBearingOfSiteX":61.1615,"originLabel":"0.00 Fixpunkt","originAbsoluteMasl":651.17,"note":"X = Hausachse ENE, Z = SSE, Ursprung = Fixpunkt 0.00 beim Eingang","generated":"2026-09-08","location":{"name":"Egglihaldenstrasse 9a, 9030 Abtwil SG","lat":47.4206,"lon":9.2903,"northBearingOfSiteX":61.1615,"groundMasl":651.17},"plan":"Gartenplan 1, Garten Design AG, 14.08.2026, Massstab 1:100","architecture":"Haus 9a, EHLE Architekten AG, Projektplaene 27.04.2021"},"terrain":{"grid":{"x0":-26,"z0":-14.5,"cell":0.25,"nx":141,"nz":107},"heights":[-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.742,-1.743,-1.744,-1.745,-1.745,-1.746,-1.747,-1.747,-1.748,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.748,-1.747,-1.746,-1.745,-1.744,-1.742,-1.739,-1.735,-1.731,-1.726,-1.72,-1.714,-1.707,-1.7,-1.693,-1.686,-1.679,-1.673,-1.668,-1.664,-1.662,-1.66,-1.659,-1.66,-1.661,-1.664,-1.666,-1.67,-1.673,-1.677,-1.681,-1.684,-1.687,-1.689,-1.692,-1.693,-1.695,-1.696,-1.697,-1.697,-1.698,-1.698,-1.698,-1.699,-1.699,-1.698,-1.698,-1.698,-1.697,-1.697,-1.696,-1.694,-1.692,-1.69,-1.686,-1.682,-1.677,-1.67,-1.662,-1.653,-1.643,-1.631,-1.62,-1.609,-1.599,-1.591,-1.585,-1.581,-1.58,-1.58,-1.583,-1.587,-1.591,-1.596,-1.601,-1.607,-1.611,-1.615,-1.619,-1.622,-1.625,-1.627,-1.629,-1.63,-1.63,-1.63,-1.63,-1.629,-1.7,-1.7,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.302,-1.641,-1.735,-1.744,-1.745,-1.746,-1.746,-1.747,-1.748,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.748,-1.747,-1.746,-1.744,-1.742,-1.739,-1.736,-1.732,-1.726,-1.72,-1.713,-1.706,-1.698,-1.691,-1.684,-1.677,-1.671,-1.666,-1.662,-1.659,-1.658,-1.657,-1.658,-1.66,-1.662,-1.665,-1.669,-1.673,-1.677,-1.681,-1.684,-1.687,-1.69,-1.692,-1.694,-1.695,-1.697,-1.697,-1.698,-1.698,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.698,-1.697,-1.697,-1.695,-1.693,-1.691,-1.688,-1.683,-1.678,-1.671,-1.663,-1.653,-1.642,-1.631,-1.619,-1.607,-1.597,-1.589,-1.583,-1.579,-1.578,-1.579,-1.583,-1.587,-1.592,-1.598,-1.604,-1.609,-1.614,-1.619,-1.623,-1.626,-1.629,-1.631,-1.632,-1.633,-1.634,-1.634,-1.634,-1.61,-1.266,-0.293,0.48,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.632,-1.735,-1.744,-1.745,-1.746,-1.747,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.749,-1.748,-1.748,-1.747,-1.745,-1.743,-1.74,-1.736,-1.732,-1.726,-1.72,-1.713,-1.705,-1.697,-1.689,-1.681,-1.674,-1.668,-1.663,-1.659,-1.656,-1.655,-1.655,-1.655,-1.657,-1.66,-1.664,-1.668,-1.672,-1.677,-1.681,-1.684,-1.688,-1.69,-1.693,-1.695,-1.696,-1.697,-1.698,-1.698,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.698,-1.697,-1.696,-1.694,-1.692,-1.689,-1.684,-1.679,-1.672,-1.663,-1.653,-1.642,-1.629,-1.617,-1.605,-1.594,-1.585,-1.579,-1.576,-1.576,-1.578,-1.582,-1.587,-1.593,-1.6,-1.606,-1.612,-1.617,-1.622,-1.626,-1.629,-1.632,-1.634,-1.636,-1.637,-1.637,-1.637,-1.638,-1.544,-0.914,0.129,0.515,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.633,-1.735,-1.745,-1.746,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.749,-1.748,-1.747,-1.746,-1.743,-1.741,-1.737,-1.732,-1.726,-1.719,-1.711,-1.703,-1.694,-1.686,-1.678,-1.671,-1.664,-1.659,-1.655,-1.653,-1.652,-1.652,-1.653,-1.655,-1.658,-1.662,-1.667,-1.671,-1.676,-1.68,-1.684,-1.688,-1.691,-1.693,-1.695,-1.697,-1.698,-1.698,-1.699,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.699,-1.698,-1.697,-1.695,-1.693,-1.69,-1.685,-1.68,-1.673,-1.664,-1.653,-1.641,-1.628,-1.614,-1.601,-1.59,-1.581,-1.575,-1.573,-1.573,-1.576,-1.581,-1.587,-1.594,-1.601,-1.608,-1.614,-1.62,-1.625,-1.629,-1.633,-1.635,-1.637,-1.639,-1.64,-1.64,-1.64,-1.605,-1.265,-0.211,0.445,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.633,-1.735,-1.745,-1.746,-1.747,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.747,-1.746,-1.744,-1.741,-1.737,-1.732,-1.725,-1.718,-1.709,-1.701,-1.691,-1.682,-1.674,-1.667,-1.66,-1.655,-1.652,-1.649,-1.648,-1.648,-1.65,-1.652,-1.656,-1.66,-1.665,-1.67,-1.675,-1.68,-1.684,-1.688,-1.691,-1.694,-1.695,-1.697,-1.698,-1.699,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.697,-1.696,-1.694,-1.69,-1.686,-1.68,-1.673,-1.663,-1.652,-1.639,-1.625,-1.611,-1.597,-1.586,-1.577,-1.571,-1.568,-1.569,-1.573,-1.579,-1.586,-1.594,-1.602,-1.61,-1.617,-1.623,-1.628,-1.632,-1.636,-1.638,-1.64,-1.641,-1.642,-1.643,-1.643,-1.608,-1.197,0.07,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.633,-1.735,-1.745,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.744,-1.741,-1.736,-1.731,-1.724,-1.716,-1.707,-1.697,-1.688,-1.678,-1.67,-1.662,-1.656,-1.651,-1.647,-1.645,-1.644,-1.645,-1.646,-1.649,-1.653,-1.657,-1.663,-1.668,-1.674,-1.679,-1.684,-1.688,-1.691,-1.694,-1.696,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.691,-1.686,-1.68,-1.672,-1.663,-1.651,-1.637,-1.622,-1.607,-1.592,-1.58,-1.571,-1.565,-1.563,-1.565,-1.57,-1.576,-1.585,-1.594,-1.602,-1.611,-1.618,-1.625,-1.63,-1.635,-1.638,-1.641,-1.643,-1.644,-1.645,-1.645,-1.645,-1.61,-1.198,0.104,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.633,-1.735,-1.745,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.744,-1.74,-1.736,-1.73,-1.722,-1.713,-1.704,-1.693,-1.683,-1.673,-1.665,-1.657,-1.651,-1.646,-1.643,-1.641,-1.64,-1.641,-1.643,-1.646,-1.65,-1.654,-1.66,-1.666,-1.672,-1.678,-1.683,-1.687,-1.691,-1.694,-1.696,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.691,-1.686,-1.68,-1.672,-1.661,-1.648,-1.634,-1.618,-1.601,-1.586,-1.573,-1.564,-1.558,-1.557,-1.559,-1.565,-1.573,-1.582,-1.592,-1.602,-1.612,-1.62,-1.627,-1.633,-1.637,-1.64,-1.643,-1.645,-1.646,-1.646,-1.647,-1.647,-1.612,-1.2,0.104,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.633,-1.735,-1.745,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.743,-1.74,-1.735,-1.728,-1.719,-1.71,-1.699,-1.688,-1.678,-1.668,-1.659,-1.652,-1.646,-1.641,-1.638,-1.636,-1.636,-1.637,-1.639,-1.642,-1.646,-1.651,-1.657,-1.663,-1.67,-1.676,-1.681,-1.686,-1.69,-1.693,-1.696,-1.697,-1.698,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.691,-1.686,-1.679,-1.67,-1.659,-1.645,-1.63,-1.612,-1.595,-1.579,-1.565,-1.555,-1.55,-1.549,-1.552,-1.559,-1.569,-1.579,-1.59,-1.601,-1.612,-1.621,-1.628,-1.634,-1.639,-1.642,-1.645,-1.646,-1.647,-1.648,-1.648,-1.648,-1.613,-1.201,0.104,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.633,-1.735,-1.745,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.743,-1.739,-1.733,-1.725,-1.716,-1.705,-1.694,-1.682,-1.671,-1.661,-1.653,-1.646,-1.64,-1.636,-1.633,-1.632,-1.632,-1.633,-1.635,-1.638,-1.642,-1.647,-1.653,-1.66,-1.667,-1.674,-1.68,-1.685,-1.689,-1.693,-1.695,-1.697,-1.698,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.69,-1.685,-1.678,-1.668,-1.656,-1.641,-1.624,-1.606,-1.587,-1.57,-1.555,-1.545,-1.54,-1.54,-1.544,-1.552,-1.563,-1.575,-1.587,-1.6,-1.611,-1.621,-1.629,-1.635,-1.64,-1.644,-1.646,-1.647,-1.648,-1.649,-1.649,-1.649,-1.614,-1.202,0.104,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.632,-1.735,-1.744,-1.746,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.748,-1.747,-1.745,-1.742,-1.737,-1.73,-1.721,-1.711,-1.7,-1.687,-1.675,-1.664,-1.654,-1.646,-1.64,-1.635,-1.63,-1.628,-1.627,-1.628,-1.629,-1.631,-1.634,-1.638,-1.643,-1.649,-1.656,-1.663,-1.671,-1.677,-1.683,-1.688,-1.692,-1.695,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.693,-1.689,-1.684,-1.676,-1.665,-1.652,-1.636,-1.617,-1.597,-1.577,-1.559,-1.544,-1.533,-1.528,-1.528,-1.534,-1.543,-1.555,-1.568,-1.582,-1.596,-1.609,-1.62,-1.629,-1.636,-1.641,-1.645,-1.647,-1.648,-1.649,-1.649,-1.649,-1.649,-1.615,-1.202,0.103,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.632,-1.734,-1.744,-1.745,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.748,-1.746,-1.744,-1.74,-1.734,-1.726,-1.717,-1.705,-1.692,-1.68,-1.667,-1.656,-1.647,-1.639,-1.633,-1.627,-1.616,-1.612,-1.614,-1.622,-1.625,-1.627,-1.63,-1.634,-1.639,-1.645,-1.652,-1.659,-1.667,-1.674,-1.681,-1.686,-1.691,-1.694,-1.696,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.698,-1.697,-1.695,-1.692,-1.688,-1.681,-1.673,-1.661,-1.647,-1.629,-1.609,-1.587,-1.565,-1.546,-1.53,-1.519,-1.514,-1.515,-1.521,-1.531,-1.544,-1.56,-1.575,-1.591,-1.605,-1.618,-1.628,-1.636,-1.641,-1.645,-1.647,-1.649,-1.649,-1.649,-1.649,-1.649,-1.615,-1.202,0.103,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.631,-1.734,-1.744,-1.745,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.747,-1.745,-1.742,-1.737,-1.73,-1.721,-1.71,-1.697,-1.684,-1.671,-1.658,-1.648,-1.639,-1.632,-1.627,-1.614,-1.584,-1.575,-1.583,-1.611,-1.621,-1.624,-1.626,-1.63,-1.635,-1.64,-1.647,-1.655,-1.663,-1.67,-1.678,-1.684,-1.689,-1.692,-1.695,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.691,-1.686,-1.679,-1.669,-1.656,-1.64,-1.62,-1.598,-1.575,-1.551,-1.53,-1.514,-1.502,-1.497,-1.498,-1.505,-1.516,-1.531,-1.548,-1.566,-1.583,-1.599,-1.614,-1.625,-1.634,-1.641,-1.645,-1.647,-1.649,-1.649,-1.649,-1.649,-1.649,-1.615,-1.202,0.103,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.631,-1.733,-1.743,-1.744,-1.745,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.743,-1.739,-1.733,-1.725,-1.715,-1.702,-1.688,-1.674,-1.661,-1.649,-1.639,-1.632,-1.626,-1.621,-1.608,-1.573,-1.563,-1.573,-1.607,-1.619,-1.621,-1.623,-1.626,-1.63,-1.636,-1.642,-1.649,-1.658,-1.666,-1.674,-1.68,-1.686,-1.69,-1.694,-1.696,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.697,-1.695,-1.693,-1.689,-1.683,-1.675,-1.664,-1.649,-1.631,-1.61,-1.585,-1.56,-1.535,-1.512,-1.495,-1.482,-1.477,-1.478,-1.485,-1.497,-1.513,-1.532,-1.552,-1.572,-1.591,-1.607,-1.621,-1.631,-1.639,-1.644,-1.647,-1.648,-1.649,-1.649,-1.649,-1.649,-1.615,-1.202,0.103,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.31,-1.63,-1.732,-1.742,-1.743,-1.744,-1.745,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.746,-1.744,-1.741,-1.735,-1.728,-1.718,-1.706,-1.692,-1.677,-1.663,-1.65,-1.639,-1.631,-1.624,-1.62,-1.617,-1.605,-1.571,-1.562,-1.572,-1.606,-1.617,-1.619,-1.621,-1.623,-1.627,-1.631,-1.637,-1.644,-1.652,-1.66,-1.669,-1.676,-1.683,-1.688,-1.692,-1.694,-1.696,-1.698,-1.698,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.698,-1.697,-1.696,-1.694,-1.69,-1.686,-1.679,-1.669,-1.657,-1.641,-1.62,-1.597,-1.57,-1.543,-1.516,-1.492,-1.472,-1.459,-1.453,-1.454,-1.461,-1.474,-1.491,-1.511,-1.533,-1.556,-1.577,-1.597,-1.613,-1.626,-1.636,-1.642,-1.646,-1.648,-1.649,-1.649,-1.649,-1.649,-1.615,-1.202,0.103,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.309,-1.629,-1.731,-1.741,-1.742,-1.743,-1.744,-1.745,-1.746,-1.747,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.747,-1.746,-1.744,-1.741,-1.736,-1.73,-1.721,-1.709,-1.695,-1.68,-1.665,-1.651,-1.639,-1.629,-1.623,-1.618,-1.615,-1.613,-1.603,-1.571,-1.562,-1.571,-1.605,-1.616,-1.618,-1.62,-1.621,-1.624,-1.628,-1.632,-1.639,-1.646,-1.654,-1.663,-1.671,-1.678,-1.684,-1.689,-1.692,-1.695,-1.696,-1.697,-1.698,-1.698,-1.699,-1.699,-1.699,-1.698,-1.698,-1.697,-1.696,-1.694,-1.691,-1.687,-1.682,-1.674,-1.663,-1.648,-1.63,-1.607,-1.581,-1.552,-1.522,-1.493,-1.468,-1.447,-1.433,-1.426,-1.426,-1.433,-1.445,-1.463,-1.484,-1.508,-1.533,-1.558,-1.581,-1.601,-1.617,-1.629,-1.638,-1.643,-1.646,-1.648,-1.648,-1.649,-1.649,-1.614,-1.201,0.104,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.309,-1.628,-1.73,-1.74,-1.741,-1.742,-1.743,-1.744,-1.745,-1.746,-1.746,-1.747,-1.747,-1.748,-1.748,-1.748,-1.748,-1.748,-1.747,-1.747,-1.745,-1.744,-1.741,-1.737,-1.73,-1.722,-1.711,-1.698,-1.683,-1.667,-1.652,-1.639,-1.628,-1.621,-1.616,-1.613,-1.612,-1.611,-1.602,-1.571,-1.562,-1.572,-1.606,-1.617,-1.618,-1.619,-1.62,-1.622,-1.624,-1.628,-1.633,-1.64,-1.648,-1.656,-1.665,-1.673,-1.679,-1.685,-1.689,-1.692,-1.694,-1.696,-1.697,-1.697,-1.698,-1.698,-1.698,-1.697,-1.697,-1.695,-1.694,-1.692,-1.688,-1.683,-1.676,-1.667,-1.654,-1.638,-1.617,-1.592,-1.563,-1.531,-1.499,-1.468,-1.44,-1.418,-1.403,-1.394,-1.393,-1.398,-1.41,-1.428,-1.45,-1.475,-1.502,-1.53,-1.557,-1.581,-1.602,-1.618,-1.63,-1.638,-1.643,-1.645,-1.647,-1.647,-1.647,-1.612,-1.2,0.104,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.309,-1.627,-1.728,-1.738,-1.739,-1.741,-1.742,-1.743,-1.744,-1.744,-1.745,-1.746,-1.746,-1.746,-1.747,-1.747,-1.746,-1.746,-1.745,-1.744,-1.742,-1.74,-1.736,-1.73,-1.722,-1.712,-1.699,-1.684,-1.668,-1.653,-1.638,-1.627,-1.618,-1.613,-1.61,-1.609,-1.609,-1.61,-1.601,-1.571,-1.562,-1.572,-1.607,-1.618,-1.62,-1.62,-1.62,-1.621,-1.622,-1.625,-1.629,-1.634,-1.641,-1.649,-1.658,-1.666,-1.674,-1.68,-1.685,-1.689,-1.691,-1.693,-1.695,-1.695,-1.696,-1.696,-1.696,-1.695,-1.694,-1.693,-1.691,-1.688,-1.684,-1.678,-1.669,-1.658,-1.643,-1.624,-1.601,-1.573,-1.541,-1.507,-1.473,-1.439,-1.41,-1.386,-1.369,-1.358,-1.355,-1.359,-1.369,-1.385,-1.406,-1.432,-1.46,-1.491,-1.522,-1.551,-1.577,-1.598,-1.615,-1.627,-1.635,-1.639,-1.642,-1.643,-1.643,-1.608,-1.196,0.105,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.308,-1.625,-1.726,-1.736,-1.737,-1.739,-1.74,-1.741,-1.742,-1.743,-1.743,-1.744,-1.744,-1.745,-1.745,-1.745,-1.744,-1.743,-1.742,-1.741,-1.738,-1.734,-1.729,-1.722,-1.712,-1.7,-1.685,-1.669,-1.653,-1.638,-1.625,-1.616,-1.609,-1.606,-1.605,-1.605,-1.607,-1.609,-1.602,-1.571,-1.562,-1.573,-1.609,-1.621,-1.622,-1.621,-1.621,-1.621,-1.621,-1.622,-1.625,-1.629,-1.635,-1.642,-1.65,-1.659,-1.667,-1.674,-1.679,-1.684,-1.687,-1.69,-1.692,-1.693,-1.693,-1.693,-1.693,-1.692,-1.691,-1.689,-1.687,-1.683,-1.678,-1.67,-1.66,-1.647,-1.63,-1.609,-1.582,-1.551,-1.517,-1.48,-1.443,-1.408,-1.376,-1.35,-1.331,-1.318,-1.313,-1.313,-1.321,-1.334,-1.353,-1.377,-1.406,-1.438,-1.471,-1.505,-1.536,-1.564,-1.587,-1.605,-1.618,-1.626,-1.631,-1.633,-1.634,-1.598,-1.188,0.107,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.308,-1.623,-1.724,-1.734,-1.735,-1.736,-1.738,-1.739,-1.74,-1.74,-1.741,-1.741,-1.742,-1.742,-1.742,-1.742,-1.741,-1.74,-1.738,-1.735,-1.732,-1.727,-1.718,-1.709,-1.697,-1.684,-1.668,-1.652,-1.637,-1.623,-1.613,-1.605,-1.601,-1.6,-1.6,-1.603,-1.606,-1.609,-1.602,-1.571,-1.562,-1.573,-1.613,-1.625,-1.625,-1.624,-1.623,-1.621,-1.62,-1.62,-1.622,-1.624,-1.629,-1.635,-1.643,-1.651,-1.659,-1.666,-1.673,-1.678,-1.682,-1.685,-1.687,-1.689,-1.69,-1.69,-1.689,-1.689,-1.687,-1.685,-1.681,-1.677,-1.67,-1.661,-1.649,-1.634,-1.614,-1.59,-1.561,-1.527,-1.489,-1.45,-1.411,-1.373,-1.34,-1.312,-1.29,-1.275,-1.266,-1.264,-1.267,-1.276,-1.292,-1.312,-1.338,-1.369,-1.403,-1.439,-1.476,-1.51,-1.54,-1.565,-1.585,-1.598,-1.607,-1.613,-1.614,-1.58,-1.173,0.111,0.516,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.208,-1.307,-1.621,-1.722,-1.731,-1.733,-1.734,-1.735,-1.736,-1.737,-1.737,-1.738,-1.738,-1.739,-1.739,-1.738,-1.738,-1.736,-1.735,-1.732,-1.729,-1.724,-1.713,-1.686,-1.673,-1.662,-1.65,-1.638,-1.625,-1.613,-1.603,-1.596,-1.591,-1.589,-1.589,-1.59,-1.593,-1.597,-1.6,-1.595,-1.57,-1.562,-1.575,-1.617,-1.63,-1.63,-1.628,-1.625,-1.623,-1.621,-1.62,-1.619,-1.621,-1.624,-1.629,-1.635,-1.642,-1.65,-1.658,-1.665,-1.671,-1.676,-1.679,-1.682,-1.684,-1.685,-1.685,-1.685,-1.683,-1.681,-1.678,-1.674,-1.668,-1.66,-1.65,-1.636,-1.618,-1.595,-1.568,-1.536,-1.499,-1.459,-1.417,-1.376,-1.337,-1.302,-1.272,-1.247,-1.229,-1.217,-1.21,-1.209,-1.213,-1.223,-1.238,-1.259,-1.286,-1.317,-1.353,-1.391,-1.43,-1.467,-1.501,-1.529,-1.55,-1.566,-1.576,-1.581,-1.55,-1.15,0.117,0.517,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.222,-1.197,-1.197,-1.197,-1.197,-1.205,-1.303,-1.608,-1.707,-1.717,-1.718,-1.719,-1.72,-1.721,-1.722,-1.741,-1.741,-1.741,-1.741,-1.74,-1.733,-1.732,-1.73,-1.728,-1.724,-1.72,-1.711,-1.682,-1.615,-1.591,-1.586,-1.582,-1.579,-1.576,-1.573,-1.57,-1.569,-1.568,-1.567,-1.567,-1.568,-1.568,-1.569,-1.571,-1.57,-1.562,-1.561,-1.576,-1.623,-1.636,-1.635,-1.632,-1.629,-1.625,-1.622,-1.619,-1.618,-1.618,-1.619,-1.623,-1.628,-1.634,-1.642,-1.649,-1.656,-1.663,-1.668,-1.672,-1.675,-1.677,-1.678,-1.679,-1.678,-1.677,-1.674,-1.67,-1.665,-1.658,-1.648,-1.636,-1.62,-1.599,-1.574,-1.544,-1.508,-1.469,-1.427,-1.383,-1.34,-1.299,-1.262,-1.23,-1.203,-1.182,-1.166,-1.155,-1.149,-1.148,-1.151,-1.16,-1.173,-1.193,-1.218,-1.25,-1.286,-1.326,-1.368,-1.409,-1.446,-1.478,-1.503,-1.522,-1.535,-1.511,-1.121,0.124,0.517,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.408,-1.205,-1.155,-1.155,-1.155,-1.163,-1.245,-1.483,-1.565,-1.574,-1.575,-1.576,-1.577,-1.578,-1.615,-1.78,-1.814,-1.812,-1.81,-1.796,-1.74,-1.726,-1.723,-1.72,-1.715,-1.709,-1.699,-1.667,-1.589,-1.564,-1.562,-1.562,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.561,-1.56,-1.561,-1.578,-1.629,-1.644,-1.642,-1.637,-1.632,-1.627,-1.623,-1.619,-1.616,-1.615,-1.616,-1.618,-1.622,-1.627,-1.633,-1.64,-1.647,-1.654,-1.659,-1.664,-1.667,-1.669,-1.671,-1.671,-1.67,-1.668,-1.665,-1.661,-1.654,-1.646,-1.634,-1.62,-1.601,-1.578,-1.55,-1.517,-1.479,-1.437,-1.392,-1.347,-1.302,-1.26,-1.222,-1.188,-1.159,-1.136,-1.116,-1.101,-1.09,-1.083,-1.08,-1.081,-1.087,-1.098,-1.116,-1.14,-1.171,-1.209,-1.252,-1.299,-1.346,-1.391,-1.43,-1.462,-1.486,-1.472,-1.095,0.13,0.518,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.571,-2.045,-1.299,-1.05,-1.025,-1.025,-1.025,-1.041,-1.115,-1.131,-1.131,-1.132,-1.132,-1.132,-1.151,-1.334,-1.861,-2.035,-2.046,-2.034,-1.968,-1.788,-1.724,-1.714,-1.71,-1.704,-1.697,-1.686,-1.656,-1.584,-1.562,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.562,-1.58,-1.637,-1.652,-1.648,-1.642,-1.635,-1.629,-1.623,-1.619,-1.615,-1.613,-1.612,-1.613,-1.616,-1.62,-1.625,-1.632,-1.638,-1.644,-1.65,-1.654,-1.658,-1.66,-1.662,-1.662,-1.661,-1.658,-1.655,-1.649,-1.641,-1.631,-1.618,-1.601,-1.58,-1.554,-1.524,-1.488,-1.447,-1.403,-1.357,-1.31,-1.265,-1.222,-1.182,-1.147,-1.117,-1.09,-1.068,-1.05,-1.034,-1.022,-1.013,-1.008,-1.007,-1.01,-1.019,-1.035,-1.059,-1.092,-1.135,-1.186,-1.244,-1.304,-1.361,-1.41,-1.449,-1.446,-1.08,0.134,0.518,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.576,-2.234,-1.309,-1.008,-0.983,-0.983,-0.983,-0.983,-0.992,-0.992,-0.992,-0.992,-0.992,-0.992,-1.01,-1.226,-1.89,-2.098,-2.109,-2.098,-2.021,-1.792,-1.715,-1.704,-1.699,-1.692,-1.683,-1.672,-1.643,-1.581,-1.562,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.562,-1.582,-1.644,-1.66,-1.655,-1.646,-1.638,-1.63,-1.623,-1.618,-1.614,-1.611,-1.609,-1.609,-1.611,-1.614,-1.618,-1.623,-1.629,-1.635,-1.64,-1.645,-1.648,-1.651,-1.652,-1.652,-1.65,-1.647,-1.642,-1.636,-1.627,-1.615,-1.6,-1.581,-1.557,-1.529,-1.496,-1.457,-1.415,-1.369,-1.322,-1.274,-1.228,-1.184,-1.144,-1.108,-1.076,-1.048,-1.024,-1.002,-0.983,-0.967,-0.954,-0.944,-0.937,-0.934,-0.936,-0.944,-0.962,-0.989,-1.03,-1.085,-1.153,-1.231,-1.309,-1.378,-1.433,-1.44,-1.078,0.134,0.518,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.579,-2.258,-1.306,-1.005,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.998,-1.21,-1.882,-2.089,-2.103,-2.094,-2.019,-1.782,-1.705,-1.693,-1.687,-1.679,-1.669,-1.657,-1.632,-1.578,-1.561,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.562,-1.583,-1.648,-1.665,-1.659,-1.649,-1.639,-1.63,-1.622,-1.616,-1.611,-1.608,-1.606,-1.605,-1.606,-1.608,-1.612,-1.616,-1.621,-1.626,-1.63,-1.635,-1.638,-1.64,-1.641,-1.64,-1.638,-1.635,-1.629,-1.621,-1.611,-1.597,-1.58,-1.559,-1.533,-1.502,-1.466,-1.426,-1.382,-1.335,-1.287,-1.239,-1.192,-1.149,-1.108,-1.072,-1.039,-1.01,-0.984,-0.96,-0.939,-0.921,-0.904,-0.89,-0.88,-0.872,-0.869,-0.873,-0.884,-0.906,-0.943,-0.999,-1.077,-1.173,-1.275,-1.366,-1.435,-1.449,-1.087,0.132,0.518,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.58,-2.259,-1.306,-1.005,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.207,-1.871,-2.078,-2.094,-2.087,-2.011,-1.773,-1.694,-1.682,-1.674,-1.666,-1.656,-1.643,-1.62,-1.575,-1.561,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.562,-1.582,-1.645,-1.665,-1.659,-1.649,-1.638,-1.628,-1.62,-1.614,-1.609,-1.605,-1.603,-1.602,-1.602,-1.603,-1.606,-1.609,-1.613,-1.617,-1.621,-1.625,-1.628,-1.629,-1.63,-1.628,-1.626,-1.621,-1.614,-1.605,-1.593,-1.578,-1.559,-1.535,-1.507,-1.474,-1.437,-1.395,-1.35,-1.302,-1.253,-1.205,-1.159,-1.116,-1.076,-1.039,-1.006,-0.976,-0.949,-0.924,-0.902,-0.882,-0.864,-0.848,-0.835,-0.826,-0.82,-0.819,-0.825,-0.841,-0.872,-0.927,-1.011,-1.125,-1.253,-1.367,-1.449,-1.465,-1.1,0.128,0.518,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.58,-2.259,-1.306,-1.005,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.205,-1.864,-2.071,-2.088,-2.082,-2.006,-1.764,-1.683,-1.67,-1.662,-1.653,-1.642,-1.63,-1.61,-1.572,-1.561,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.561,-1.579,-1.633,-1.655,-1.653,-1.643,-1.633,-1.623,-1.616,-1.609,-1.605,-1.601,-1.599,-1.598,-1.598,-1.598,-1.6,-1.603,-1.606,-1.609,-1.613,-1.615,-1.617,-1.618,-1.618,-1.616,-1.613,-1.607,-1.599,-1.589,-1.575,-1.558,-1.537,-1.512,-1.482,-1.447,-1.408,-1.365,-1.318,-1.27,-1.222,-1.174,-1.129,-1.086,-1.046,-1.01,-0.977,-0.947,-0.919,-0.894,-0.872,-0.851,-0.832,-0.816,-0.802,-0.792,-0.784,-0.781,-0.783,-0.794,-0.818,-0.866,-0.951,-1.081,-1.236,-1.374,-1.466,-1.483,-1.112,0.125,0.517,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.577,-2.257,-1.306,-1.005,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.205,-1.861,-2.067,-2.085,-2.078,-2.001,-1.755,-1.672,-1.658,-1.649,-1.64,-1.63,-1.618,-1.6,-1.57,-1.561,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.561,-1.573,-1.613,-1.635,-1.638,-1.632,-1.624,-1.616,-1.609,-1.604,-1.6,-1.597,-1.595,-1.594,-1.594,-1.594,-1.595,-1.597,-1.6,-1.602,-1.605,-1.607,-1.608,-1.608,-1.607,-1.604,-1.6,-1.593,-1.584,-1.572,-1.557,-1.538,-1.515,-1.488,-1.456,-1.42,-1.379,-1.335,-1.289,-1.241,-1.193,-1.146,-1.102,-1.059,-1.021,-0.985,-0.952,-0.922,-0.895,-0.87,-0.848,-0.827,-0.809,-0.792,-0.779,-0.768,-0.76,-0.756,-0.756,-0.762,-0.779,-0.818,-0.897,-1.036,-1.217,-1.381,-1.482,-1.497,-1.121,0.123,0.517,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.572,-2.254,-1.305,-1.005,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.204,-1.859,-2.066,-2.083,-2.077,-1.998,-1.746,-1.662,-1.645,-1.627,-1.618,-1.609,-1.601,-1.587,-1.567,-1.561,-1.56,-1.56,-1.56,-1.56,-1.56,-1.559,-1.559,-1.559,-1.559,-1.559,-1.559,-1.559,-1.558,-1.558,-1.559,-1.559,-1.56,-1.566,-1.59,-1.61,-1.617,-1.616,-1.611,-1.605,-1.601,-1.597,-1.594,-1.592,-1.591,-1.59,-1.589,-1.59,-1.591,-1.592,-1.594,-1.596,-1.597,-1.599,-1.599,-1.598,-1.596,-1.592,-1.587,-1.579,-1.568,-1.555,-1.538,-1.518,-1.493,-1.464,-1.431,-1.394,-1.352,-1.308,-1.262,-1.214,-1.167,-1.121,-1.078,-1.037,-0.999,-0.964,-0.932,-0.903,-0.876,-0.851,-0.829,-0.809,-0.791,-0.776,-0.763,-0.753,-0.745,-0.741,-0.74,-0.743,-0.754,-0.783,-0.852,-0.99,-1.193,-1.381,-1.491,-1.505,-1.125,0.122,0.517,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.564,-2.247,-1.304,-1.005,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.204,-1.859,-2.065,-2.082,-2.075,-1.995,-1.738,-1.65,-1.626,-1.59,-1.576,-1.573,-1.57,-1.567,-1.561,-1.56,-1.56,-1.558,-1.556,-1.555,-1.554,-1.553,-1.552,-1.55,-1.549,-1.547,-1.545,-1.542,-1.54,-1.54,-1.542,-1.546,-1.55,-1.554,-1.566,-1.581,-1.592,-1.595,-1.595,-1.594,-1.592,-1.59,-1.588,-1.587,-1.586,-1.585,-1.585,-1.586,-1.586,-1.588,-1.589,-1.59,-1.591,-1.591,-1.591,-1.589,-1.586,-1.581,-1.574,-1.565,-1.553,-1.539,-1.52,-1.498,-1.472,-1.442,-1.408,-1.369,-1.327,-1.283,-1.237,-1.19,-1.144,-1.099,-1.057,-1.017,-0.98,-0.946,-0.915,-0.887,-0.861,-0.837,-0.816,-0.796,-0.779,-0.765,-0.752,-0.743,-0.736,-0.733,-0.732,-0.734,-0.741,-0.761,-0.817,-0.948,-1.162,-1.372,-1.493,-1.507,-1.126,0.122,0.517,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.551,-2.238,-1.301,-1.005,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.204,-1.859,-2.065,-2.082,-2.075,-1.992,-1.709,-1.62,-1.597,-1.563,-1.55,-1.547,-1.545,-1.544,-1.541,-1.54,-1.537,-1.531,-1.526,-1.521,-1.516,-1.511,-1.506,-1.501,-1.495,-1.488,-1.48,-1.471,-1.464,-1.462,-1.469,-1.482,-1.494,-1.504,-1.517,-1.533,-1.547,-1.555,-1.559,-1.561,-1.561,-1.561,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.561,-1.562,-1.562,-1.562,-1.561,-1.56,-1.557,-1.553,-1.548,-1.54,-1.53,-1.517,-1.501,-1.481,-1.458,-1.431,-1.4,-1.366,-1.327,-1.286,-1.243,-1.198,-1.154,-1.11,-1.067,-1.027,-0.989,-0.955,-0.923,-0.893,-0.867,-0.843,-0.82,-0.801,-0.783,-0.767,-0.754,-0.744,-0.736,-0.73,-0.728,-0.727,-0.73,-0.735,-0.75,-0.794,-0.911,-1.122,-1.343,-1.475,-1.492,-1.113,0.104,0.498,0.531,0.531,0.531,0.531,0.531,0.531,0.532,0.533,0.534,0.536,0.538,0.54,0.541,0.542,0.542,0.542,0.543,0.543,0.543,0.543,0.543,0.543,0.55,-2.532,-2.223,-1.297,-1.004,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.204,-1.858,-2.065,-2.081,-2.074,-1.947,-1.492,-1.362,-1.347,-1.331,-1.324,-1.319,-1.314,-1.308,-1.303,-1.298,-1.293,-1.287,-1.28,-1.273,-1.266,-1.259,-1.253,-1.247,-1.242,-1.237,-1.23,-1.223,-1.217,-1.214,-1.217,-1.227,-1.237,-1.248,-1.262,-1.277,-1.289,-1.297,-1.301,-1.303,-1.303,-1.302,-1.301,-1.299,-1.298,-1.296,-1.295,-1.293,-1.292,-1.29,-1.289,-1.287,-1.285,-1.282,-1.279,-1.275,-1.269,-1.263,-1.254,-1.244,-1.232,-1.218,-1.201,-1.182,-1.16,-1.135,-1.107,-1.077,-1.046,-1.013,-0.98,-0.948,-0.916,-0.886,-0.859,-0.833,-0.811,-0.791,-0.774,-0.758,-0.746,-0.735,-0.726,-0.719,-0.714,-0.71,-0.709,-0.709,-0.711,-0.714,-0.718,-0.722,-0.728,-0.74,-0.772,-0.859,-1.024,-1.207,-1.321,-1.335,-1.017,-0.056,0.273,0.303,0.302,0.301,0.301,0.303,0.307,0.314,0.325,0.343,0.366,0.392,0.414,0.431,0.442,0.448,0.451,0.453,0.454,0.455,0.455,0.454,0.469,0.55,-2.505,-2.202,-1.292,-1.004,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.204,-1.858,-2.064,-2.081,-2.051,-1.755,-0.877,-0.581,-0.549,-0.535,-0.531,-0.53,-0.528,-0.526,-0.524,-0.522,-0.519,-0.515,-0.509,-0.502,-0.493,-0.485,-0.479,-0.477,-0.478,-0.482,-0.486,-0.491,-0.494,-0.496,-0.498,-0.501,-0.504,-0.509,-0.521,-0.527,-0.527,-0.524,-0.519,-0.514,-0.507,-0.5,-0.493,-0.486,-0.479,-0.471,-0.464,-0.457,-0.449,-0.442,-0.435,-0.427,-0.42,-0.412,-0.405,-0.398,-0.39,-0.383,-0.377,-0.37,-0.364,-0.358,-0.353,-0.348,-0.343,-0.339,-0.336,-0.334,-0.333,-0.333,-0.335,-0.338,-0.343,-0.349,-0.358,-0.369,-0.383,-0.398,-0.415,-0.434,-0.455,-0.478,-0.502,-0.527,-0.553,-0.579,-0.605,-0.63,-0.652,-0.672,-0.688,-0.701,-0.711,-0.718,-0.727,-0.749,-0.793,-0.844,-0.873,-0.882,-0.806,-0.478,-0.411,-0.42,-0.426,-0.429,-0.428,-0.421,-0.406,-0.379,-0.333,-0.262,-0.171,-0.071,0.018,0.084,0.126,0.151,0.165,0.172,0.176,0.177,0.177,0.184,0.263,0.55,-2.468,-2.173,-1.285,-1.003,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.204,-1.858,-2.064,-2.079,-2.048,-1.709,-0.664,-0.327,-0.286,-0.25,-0.237,-0.236,-0.234,-0.234,-0.234,-0.234,-0.233,-0.232,-0.231,-0.228,-0.226,-0.224,-0.222,-0.222,-0.223,-0.224,-0.226,-0.228,-0.23,-0.231,-0.231,-0.232,-0.233,-0.243,-0.27,-0.286,-0.284,-0.278,-0.27,-0.261,-0.252,-0.243,-0.234,-0.225,-0.217,-0.208,-0.199,-0.19,-0.18,-0.171,-0.162,-0.153,-0.144,-0.135,-0.126,-0.117,-0.109,-0.102,-0.096,-0.09,-0.086,-0.082,-0.08,-0.08,-0.081,-0.083,-0.088,-0.094,-0.102,-0.112,-0.124,-0.138,-0.154,-0.172,-0.192,-0.214,-0.238,-0.264,-0.291,-0.321,-0.352,-0.385,-0.419,-0.455,-0.491,-0.527,-0.563,-0.596,-0.627,-0.654,-0.677,-0.693,-0.705,-0.712,-0.716,-0.719,-0.723,-0.727,-0.729,-0.728,-0.713,-0.642,-0.643,-0.656,-0.665,-0.67,-0.669,-0.662,-0.647,-0.615,-0.559,-0.468,-0.344,-0.208,-0.089,-0.006,0.043,0.07,0.084,0.091,0.094,0.095,0.094,0.1,0.193,0.55,-2.42,-2.134,-1.275,-1.003,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.204,-1.857,-2.061,-2.074,-2.042,-1.702,-0.641,-0.306,-0.263,-0.216,-0.201,-0.198,-0.188,-0.186,-0.186,-0.186,-0.186,-0.186,-0.186,-0.185,-0.185,-0.185,-0.185,-0.185,-0.185,-0.185,-0.185,-0.186,-0.186,-0.186,-0.186,-0.186,-0.186,-0.193,-0.229,-0.254,-0.257,-0.251,-0.242,-0.233,-0.224,-0.215,-0.207,-0.198,-0.189,-0.181,-0.172,-0.163,-0.154,-0.144,-0.135,-0.125,-0.116,-0.107,-0.098,-0.089,-0.081,-0.073,-0.067,-0.061,-0.056,-0.053,-0.051,-0.05,-0.052,-0.055,-0.059,-0.066,-0.074,-0.085,-0.097,-0.112,-0.128,-0.146,-0.166,-0.188,-0.212,-0.238,-0.266,-0.295,-0.326,-0.359,-0.394,-0.43,-0.467,-0.505,-0.542,-0.579,-0.613,-0.643,-0.668,-0.688,-0.702,-0.71,-0.715,-0.716,-0.717,-0.717,-0.716,-0.714,-0.7,-0.663,-0.667,-0.683,-0.694,-0.699,-0.699,-0.694,-0.682,-0.654,-0.598,-0.501,-0.362,-0.208,-0.078,0.007,0.054,0.076,0.086,0.091,0.092,0.093,0.092,0.097,0.19,0.55,-2.358,-2.085,-1.263,-1.002,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.202,-1.851,-2.052,-2.063,-2.028,-1.688,-0.637,-0.305,-0.263,-0.215,-0.199,-0.187,-0.156,-0.145,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.144,-0.146,-0.165,-0.223,-0.248,-0.246,-0.239,-0.231,-0.223,-0.215,-0.207,-0.199,-0.191,-0.183,-0.174,-0.166,-0.157,-0.148,-0.139,-0.129,-0.12,-0.111,-0.101,-0.092,-0.083,-0.075,-0.067,-0.06,-0.054,-0.05,-0.046,-0.044,-0.043,-0.043,-0.046,-0.05,-0.056,-0.064,-0.074,-0.086,-0.1,-0.115,-0.133,-0.152,-0.173,-0.196,-0.221,-0.247,-0.275,-0.305,-0.337,-0.37,-0.405,-0.442,-0.479,-0.517,-0.555,-0.592,-0.625,-0.654,-0.678,-0.695,-0.706,-0.712,-0.714,-0.715,-0.715,-0.715,-0.712,-0.697,-0.66,-0.669,-0.688,-0.699,-0.705,-0.706,-0.703,-0.693,-0.669,-0.617,-0.517,-0.366,-0.196,-0.058,0.026,0.067,0.085,0.092,0.095,0.096,0.096,0.095,0.101,0.192,0.55,-2.281,-2.024,-1.247,-1.001,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.997,-1.199,-1.837,-2.034,-2.041,-2.002,-1.664,-0.63,-0.304,-0.262,-0.215,-0.199,-0.185,-0.145,-0.132,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.131,-0.133,-0.152,-0.208,-0.227,-0.226,-0.221,-0.215,-0.209,-0.203,-0.196,-0.189,-0.182,-0.175,-0.167,-0.159,-0.151,-0.142,-0.133,-0.124,-0.114,-0.105,-0.095,-0.086,-0.077,-0.069,-0.061,-0.054,-0.047,-0.042,-0.038,-0.036,-0.034,-0.035,-0.037,-0.041,-0.046,-0.054,-0.063,-0.074,-0.087,-0.102,-0.119,-0.137,-0.157,-0.179,-0.202,-0.227,-0.253,-0.282,-0.311,-0.343,-0.376,-0.411,-0.447,-0.484,-0.523,-0.56,-0.597,-0.63,-0.658,-0.68,-0.695,-0.705,-0.709,-0.711,-0.712,-0.71,-0.706,-0.688,-0.649,-0.663,-0.686,-0.7,-0.706,-0.708,-0.707,-0.7,-0.679,-0.629,-0.528,-0.368,-0.185,-0.042,0.04,0.076,0.09,0.095,0.097,0.097,0.097,0.097,0.102,0.194,0.55,-2.19,-1.951,-1.229,-0.999,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.996,-1.193,-1.811,-1.999,-2.002,-1.959,-1.626,-0.619,-0.301,-0.261,-0.215,-0.199,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.131,-0.142,-0.178,-0.193,-0.197,-0.197,-0.196,-0.193,-0.189,-0.184,-0.179,-0.173,-0.167,-0.159,-0.152,-0.144,-0.135,-0.126,-0.117,-0.108,-0.098,-0.089,-0.08,-0.071,-0.062,-0.054,-0.047,-0.04,-0.035,-0.03,-0.027,-0.026,-0.026,-0.028,-0.031,-0.036,-0.043,-0.052,-0.062,-0.075,-0.088,-0.104,-0.121,-0.14,-0.16,-0.182,-0.205,-0.23,-0.256,-0.283,-0.312,-0.342,-0.374,-0.408,-0.443,-0.479,-0.517,-0.554,-0.59,-0.623,-0.65,-0.672,-0.686,-0.695,-0.699,-0.7,-0.698,-0.69,-0.667,-0.624,-0.644,-0.676,-0.694,-0.702,-0.706,-0.707,-0.702,-0.683,-0.636,-0.534,-0.367,-0.178,-0.031,0.048,0.081,0.092,0.096,0.097,0.098,0.098,0.098,0.104,0.195,0.55,-2.084,-1.867,-1.207,-0.998,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.996,-1.181,-1.765,-1.94,-1.939,-1.892,-1.568,-0.602,-0.298,-0.259,-0.214,-0.199,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.133,-0.144,-0.156,-0.166,-0.172,-0.175,-0.175,-0.174,-0.172,-0.168,-0.163,-0.158,-0.151,-0.144,-0.136,-0.128,-0.119,-0.11,-0.101,-0.092,-0.082,-0.073,-0.064,-0.055,-0.046,-0.039,-0.032,-0.026,-0.022,-0.019,-0.017,-0.017,-0.018,-0.021,-0.025,-0.032,-0.04,-0.05,-0.061,-0.074,-0.089,-0.105,-0.122,-0.141,-0.161,-0.183,-0.205,-0.229,-0.253,-0.279,-0.306,-0.334,-0.363,-0.394,-0.426,-0.459,-0.494,-0.529,-0.564,-0.595,-0.622,-0.643,-0.657,-0.665,-0.667,-0.663,-0.653,-0.625,-0.579,-0.605,-0.65,-0.679,-0.694,-0.701,-0.704,-0.7,-0.682,-0.635,-0.532,-0.365,-0.174,-0.027,0.051,0.082,0.093,0.096,0.097,0.098,0.098,0.098,0.104,0.195,0.55,-1.967,-1.774,-1.183,-0.996,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.994,-1.164,-1.695,-1.851,-1.845,-1.797,-1.488,-0.578,-0.292,-0.255,-0.213,-0.199,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.126,-0.119,-0.127,-0.139,-0.149,-0.156,-0.159,-0.16,-0.16,-0.157,-0.153,-0.149,-0.143,-0.136,-0.129,-0.121,-0.112,-0.103,-0.094,-0.084,-0.075,-0.065,-0.056,-0.047,-0.039,-0.031,-0.024,-0.018,-0.013,-0.01,-0.007,-0.007,-0.008,-0.01,-0.014,-0.02,-0.028,-0.037,-0.047,-0.06,-0.073,-0.088,-0.104,-0.122,-0.14,-0.16,-0.18,-0.201,-0.222,-0.245,-0.267,-0.29,-0.314,-0.339,-0.364,-0.39,-0.418,-0.447,-0.472,-0.501,-0.528,-0.551,-0.569,-0.581,-0.585,-0.586,-0.575,-0.55,-0.514,-0.545,-0.602,-0.648,-0.676,-0.691,-0.697,-0.693,-0.675,-0.626,-0.524,-0.36,-0.174,-0.03,0.048,0.081,0.092,0.096,0.097,0.098,0.098,0.098,0.104,0.195,0.55,-1.845,-1.676,-1.158,-0.994,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.992,-1.139,-1.599,-1.731,-1.721,-1.672,-1.385,-0.547,-0.283,-0.243,-0.21,-0.199,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.129,-0.129,-0.122,-0.106,-0.109,-0.121,-0.132,-0.14,-0.145,-0.148,-0.148,-0.147,-0.144,-0.14,-0.134,-0.128,-0.121,-0.113,-0.104,-0.096,-0.086,-0.077,-0.067,-0.058,-0.048,-0.039,-0.03,-0.022,-0.015,-0.009,-0.004,0,0.002,0.003,0.003,0.001,-0.003,-0.008,-0.015,-0.023,-0.033,-0.045,-0.057,-0.071,-0.086,-0.102,-0.119,-0.136,-0.154,-0.173,-0.191,-0.21,-0.229,-0.247,-0.265,-0.282,-0.299,-0.316,-0.332,-0.342,-0.329,-0.339,-0.357,-0.373,-0.387,-0.397,-0.411,-0.444,-0.449,-0.443,-0.445,-0.478,-0.535,-0.595,-0.642,-0.67,-0.682,-0.679,-0.659,-0.609,-0.509,-0.353,-0.177,-0.039,0.041,0.077,0.09,0.095,0.097,0.098,0.098,0.097,0.103,0.195,0.55,-1.723,-1.578,-1.133,-0.992,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.99,-1.109,-1.482,-1.584,-1.57,-1.523,-1.263,-0.509,-0.265,-0.22,-0.202,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.121,-0.119,-0.113,-0.098,-0.1,-0.11,-0.12,-0.128,-0.134,-0.137,-0.138,-0.137,-0.135,-0.131,-0.126,-0.12,-0.113,-0.105,-0.097,-0.088,-0.078,-0.069,-0.059,-0.049,-0.04,-0.031,-0.022,-0.014,-0.006,0,0.005,0.01,0.012,0.014,0.014,0.012,0.009,0.004,-0.002,-0.01,-0.019,-0.03,-0.041,-0.054,-0.068,-0.083,-0.098,-0.114,-0.13,-0.146,-0.161,-0.177,-0.191,-0.205,-0.217,-0.227,-0.236,-0.243,-0.244,-0.216,-0.132,-0.104,-0.104,-0.108,-0.112,-0.118,-0.153,-0.236,-0.278,-0.321,-0.388,-0.428,-0.47,-0.526,-0.584,-0.628,-0.65,-0.652,-0.632,-0.582,-0.487,-0.344,-0.184,-0.052,0.028,0.068,0.086,0.093,0.095,0.096,0.097,0.096,0.103,0.194,0.55,-1.61,-1.487,-1.109,-0.99,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.987,-1.076,-1.352,-1.423,-1.406,-1.363,-1.133,-0.469,-0.253,-0.209,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.129,-0.121,-0.097,-0.089,-0.09,-0.089,-0.096,-0.105,-0.113,-0.12,-0.125,-0.128,-0.129,-0.128,-0.126,-0.122,-0.117,-0.111,-0.104,-0.097,-0.088,-0.079,-0.07,-0.06,-0.051,-0.041,-0.031,-0.022,-0.013,-0.004,0.003,0.01,0.015,0.02,0.023,0.025,0.025,0.024,0.021,0.017,0.011,0.004,-0.005,-0.014,-0.025,-0.037,-0.05,-0.063,-0.077,-0.092,-0.106,-0.12,-0.133,-0.146,-0.157,-0.167,-0.174,-0.179,-0.181,-0.18,-0.174,-0.143,-0.059,-0.033,-0.031,-0.031,-0.031,-0.032,-0.041,-0.078,-0.112,-0.207,-0.348,-0.399,-0.425,-0.464,-0.518,-0.568,-0.601,-0.61,-0.594,-0.547,-0.46,-0.333,-0.191,-0.069,0.012,0.056,0.078,0.088,0.092,0.094,0.095,0.095,0.102,0.194,0.55,-1.513,-1.409,-1.089,-0.988,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.985,-1.042,-1.223,-1.263,-1.244,-1.205,-1.005,-0.428,-0.242,-0.206,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.129,-0.119,-0.09,-0.082,-0.084,-0.089,-0.096,-0.103,-0.11,-0.115,-0.119,-0.121,-0.122,-0.121,-0.118,-0.114,-0.109,-0.103,-0.096,-0.089,-0.08,-0.071,-0.062,-0.052,-0.042,-0.032,-0.022,-0.012,-0.003,0.005,0.013,0.02,0.026,0.03,0.034,0.036,0.036,0.035,0.033,0.029,0.024,0.017,0.01,0.001,-0.01,-0.021,-0.032,-0.045,-0.058,-0.07,-0.083,-0.096,-0.107,-0.118,-0.126,-0.133,-0.137,-0.138,-0.136,-0.131,-0.121,-0.097,-0.042,-0.026,-0.025,-0.025,-0.025,-0.025,-0.026,-0.034,-0.054,-0.149,-0.326,-0.385,-0.401,-0.425,-0.464,-0.51,-0.546,-0.561,-0.55,-0.508,-0.431,-0.32,-0.196,-0.086,-0.007,0.041,0.068,0.081,0.088,0.091,0.093,0.095,0.103,0.196,0.55,-1.436,-1.346,-1.073,-0.987,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.982,-1.013,-1.107,-1.119,-1.098,-1.063,-0.89,-0.391,-0.231,-0.204,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.128,-0.119,-0.093,-0.087,-0.089,-0.093,-0.098,-0.103,-0.108,-0.112,-0.114,-0.116,-0.115,-0.114,-0.111,-0.107,-0.101,-0.095,-0.088,-0.08,-0.072,-0.062,-0.053,-0.043,-0.033,-0.022,-0.012,-0.003,0.007,0.015,0.023,0.03,0.036,0.041,0.045,0.047,0.048,0.047,0.045,0.042,0.037,0.031,0.024,0.016,0.006,-0.004,-0.015,-0.027,-0.039,-0.05,-0.062,-0.073,-0.083,-0.092,-0.1,-0.105,-0.107,-0.106,-0.102,-0.095,-0.085,-0.067,-0.035,-0.026,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.041,-0.122,-0.315,-0.378,-0.39,-0.405,-0.433,-0.468,-0.498,-0.513,-0.504,-0.467,-0.399,-0.303,-0.196,-0.098,-0.022,0.027,0.058,0.075,0.085,0.09,0.094,0.097,0.107,0.2,0.55,-1.381,-1.302,-1.061,-0.986,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.981,-0.988,-1.011,-0.999,-0.976,-0.943,-0.792,-0.359,-0.222,-0.202,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.127,-0.111,-0.107,-0.101,-0.086,-0.094,-0.097,-0.099,-0.102,-0.105,-0.108,-0.11,-0.111,-0.111,-0.11,-0.107,-0.104,-0.099,-0.094,-0.087,-0.08,-0.072,-0.063,-0.053,-0.043,-0.033,-0.023,-0.013,-0.003,0.007,0.017,0.026,0.034,0.041,0.047,0.052,0.056,0.059,0.06,0.06,0.058,0.055,0.051,0.045,0.038,0.031,0.022,0.012,0.002,-0.009,-0.02,-0.032,-0.042,-0.053,-0.062,-0.07,-0.077,-0.081,-0.083,-0.082,-0.078,-0.071,-0.062,-0.05,-0.031,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.037,-0.108,-0.309,-0.375,-0.386,-0.397,-0.416,-0.441,-0.463,-0.473,-0.462,-0.426,-0.364,-0.28,-0.187,-0.099,-0.029,0.021,0.054,0.074,0.087,0.095,0.102,0.107,0.118,0.21,0.55,-1.348,-1.275,-1.055,-0.986,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.979,-0.97,-0.937,-0.906,-0.88,-0.847,-0.713,-0.334,-0.214,-0.2,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.111,-0.061,-0.044,-0.043,-0.052,-0.092,-0.105,-0.106,-0.106,-0.107,-0.108,-0.108,-0.107,-0.106,-0.104,-0.101,-0.097,-0.092,-0.086,-0.079,-0.071,-0.063,-0.054,-0.044,-0.034,-0.024,-0.013,-0.002,0.008,0.018,0.027,0.036,0.045,0.052,0.058,0.064,0.068,0.07,0.072,0.072,0.071,0.068,0.064,0.059,0.053,0.045,0.037,0.028,0.018,0.007,-0.003,-0.014,-0.024,-0.034,-0.043,-0.051,-0.057,-0.061,-0.063,-0.063,-0.06,-0.055,-0.048,-0.039,-0.028,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.036,-0.102,-0.308,-0.375,-0.385,-0.394,-0.408,-0.424,-0.436,-0.438,-0.422,-0.384,-0.324,-0.247,-0.163,-0.084,-0.019,0.03,0.065,0.088,0.103,0.114,0.122,0.129,0.141,0.229,0.55,-1.333,-1.265,-1.052,-0.986,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.978,-0.956,-0.882,-0.835,-0.806,-0.774,-0.652,-0.315,-0.209,-0.199,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.044,-0.023,-0.023,-0.041,-0.098,-0.113,-0.112,-0.109,-0.108,-0.107,-0.106,-0.104,-0.102,-0.099,-0.095,-0.091,-0.085,-0.078,-0.071,-0.063,-0.054,-0.045,-0.035,-0.024,-0.013,-0.003,0.008,0.019,0.029,0.039,0.048,0.056,0.063,0.07,0.075,0.08,0.083,0.084,0.085,0.084,0.082,0.078,0.073,0.067,0.06,0.052,0.043,0.034,0.024,0.013,0.003,-0.007,-0.017,-0.026,-0.034,-0.04,-0.045,-0.047,-0.047,-0.045,-0.042,-0.038,-0.032,-0.027,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.035,-0.1,-0.309,-0.377,-0.386,-0.393,-0.401,-0.409,-0.413,-0.405,-0.381,-0.338,-0.276,-0.201,-0.122,-0.048,0.015,0.063,0.098,0.123,0.14,0.152,0.161,0.168,0.179,0.259,0.55,-1.335,-1.267,-1.053,-0.986,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.977,-0.946,-0.842,-0.784,-0.751,-0.717,-0.605,-0.302,-0.208,-0.199,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.022,-0.041,-0.101,-0.116,-0.113,-0.11,-0.107,-0.105,-0.103,-0.1,-0.097,-0.094,-0.089,-0.084,-0.078,-0.071,-0.063,-0.054,-0.045,-0.035,-0.025,-0.014,-0.003,0.008,0.019,0.03,0.04,0.05,0.059,0.068,0.075,0.082,0.087,0.092,0.095,0.097,0.098,0.097,0.095,0.092,0.087,0.082,0.075,0.067,0.058,0.049,0.039,0.029,0.019,0.008,-0.001,-0.01,-0.019,-0.025,-0.031,-0.033,-0.031,-0.03,-0.029,-0.028,-0.027,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.035,-0.1,-0.31,-0.378,-0.386,-0.39,-0.393,-0.394,-0.387,-0.369,-0.335,-0.283,-0.215,-0.138,-0.059,0.013,0.074,0.121,0.156,0.181,0.199,0.21,0.218,0.223,0.231,0.298,0.55,-1.348,-1.28,-1.057,-0.986,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.977,-0.939,-0.813,-0.745,-0.708,-0.672,-0.567,-0.294,-0.209,-0.199,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.022,-0.041,-0.1,-0.114,-0.111,-0.107,-0.104,-0.102,-0.099,-0.096,-0.093,-0.088,-0.083,-0.077,-0.071,-0.063,-0.055,-0.045,-0.036,-0.025,-0.014,-0.003,0.008,0.02,0.031,0.042,0.052,0.062,0.071,0.08,0.087,0.094,0.1,0.104,0.108,0.11,0.111,0.11,0.109,0.106,0.101,0.096,0.089,0.082,0.073,0.064,0.054,0.044,0.033,0.023,0.013,0.004,-0.005,-0.012,-0.019,-0.023,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.035,-0.1,-0.31,-0.377,-0.383,-0.383,-0.38,-0.372,-0.355,-0.325,-0.279,-0.216,-0.14,-0.058,0.022,0.093,0.152,0.197,0.23,0.254,0.269,0.279,0.284,0.286,0.289,0.342,0.55,-1.37,-1.299,-1.062,-0.986,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.976,-0.934,-0.792,-0.715,-0.672,-0.634,-0.536,-0.29,-0.213,-0.201,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.021,-0.039,-0.094,-0.107,-0.104,-0.101,-0.099,-0.097,-0.094,-0.091,-0.087,-0.083,-0.077,-0.071,-0.063,-0.055,-0.046,-0.036,-0.026,-0.015,-0.003,0.008,0.02,0.032,0.043,0.054,0.065,0.074,0.084,0.092,0.1,0.106,0.112,0.117,0.12,0.123,0.124,0.124,0.122,0.12,0.116,0.11,0.104,0.096,0.088,0.078,0.068,0.058,0.047,0.037,0.027,0.017,0.008,-0.001,-0.008,-0.015,-0.023,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.035,-0.1,-0.307,-0.371,-0.374,-0.37,-0.36,-0.343,-0.314,-0.271,-0.211,-0.137,-0.053,0.033,0.113,0.181,0.235,0.275,0.304,0.323,0.335,0.342,0.344,0.343,0.342,0.382,0.55,-1.397,-1.322,-1.068,-0.987,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.976,-0.93,-0.776,-0.69,-0.641,-0.599,-0.508,-0.289,-0.219,-0.202,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.021,-0.036,-0.083,-0.095,-0.094,-0.093,-0.093,-0.091,-0.089,-0.086,-0.082,-0.077,-0.071,-0.064,-0.056,-0.047,-0.037,-0.026,-0.015,-0.004,0.008,0.02,0.033,0.044,0.056,0.067,0.077,0.087,0.096,0.105,0.112,0.119,0.125,0.13,0.133,0.136,0.137,0.138,0.136,0.134,0.13,0.125,0.118,0.111,0.102,0.093,0.082,0.072,0.061,0.05,0.039,0.029,0.019,0.01,0.002,-0.008,-0.021,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.035,-0.099,-0.3,-0.36,-0.359,-0.348,-0.33,-0.302,-0.261,-0.204,-0.132,-0.048,0.041,0.127,0.202,0.262,0.308,0.341,0.363,0.377,0.385,0.389,0.389,0.386,0.384,0.414,0.55,-1.424,-1.346,-1.074,-0.987,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.976,-0.927,-0.763,-0.666,-0.61,-0.564,-0.48,-0.289,-0.226,-0.204,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.021,-0.033,-0.071,-0.082,-0.084,-0.085,-0.086,-0.085,-0.083,-0.08,-0.076,-0.071,-0.064,-0.056,-0.048,-0.038,-0.027,-0.016,-0.004,0.008,0.021,0.033,0.046,0.058,0.069,0.08,0.091,0.101,0.109,0.118,0.125,0.132,0.138,0.143,0.146,0.149,0.151,0.151,0.151,0.148,0.145,0.14,0.133,0.125,0.117,0.107,0.096,0.085,0.073,0.062,0.05,0.04,0.029,0.02,0.011,-0.001,-0.019,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.035,-0.096,-0.287,-0.341,-0.335,-0.317,-0.289,-0.25,-0.197,-0.128,-0.046,0.043,0.132,0.212,0.278,0.328,0.364,0.388,0.403,0.413,0.417,0.419,0.418,0.415,0.412,0.437,0.55,-1.451,-1.369,-1.08,-0.988,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.976,-0.925,-0.753,-0.643,-0.576,-0.526,-0.451,-0.289,-0.233,-0.207,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.021,-0.03,-0.061,-0.07,-0.074,-0.077,-0.079,-0.079,-0.078,-0.074,-0.07,-0.064,-0.057,-0.048,-0.039,-0.029,-0.017,-0.005,0.007,0.02,0.034,0.047,0.059,0.072,0.083,0.094,0.105,0.114,0.123,0.131,0.138,0.145,0.151,0.156,0.16,0.163,0.165,0.165,0.165,0.163,0.16,0.155,0.148,0.14,0.131,0.121,0.109,0.097,0.085,0.073,0.061,0.049,0.038,0.028,0.019,0.005,-0.018,-0.024,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.035,-0.091,-0.269,-0.315,-0.301,-0.275,-0.238,-0.188,-0.124,-0.046,0.04,0.129,0.212,0.282,0.336,0.375,0.401,0.417,0.427,0.432,0.435,0.436,0.435,0.432,0.43,0.451,0.55,-1.473,-1.388,-1.085,-0.988,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.976,-0.923,-0.743,-0.617,-0.538,-0.484,-0.419,-0.287,-0.233,-0.207,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.021,-0.028,-0.053,-0.062,-0.066,-0.07,-0.072,-0.073,-0.071,-0.068,-0.063,-0.057,-0.049,-0.04,-0.03,-0.019,-0.006,0.007,0.02,0.034,0.048,0.061,0.074,0.086,0.098,0.109,0.119,0.128,0.136,0.144,0.151,0.158,0.163,0.169,0.173,0.176,0.179,0.18,0.18,0.178,0.175,0.17,0.164,0.156,0.146,0.135,0.123,0.11,0.096,0.083,0.07,0.057,0.046,0.035,0.025,0.01,-0.016,-0.024,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.034,-0.085,-0.244,-0.28,-0.259,-0.224,-0.179,-0.12,-0.048,0.034,0.12,0.203,0.275,0.334,0.376,0.405,0.423,0.433,0.439,0.442,0.444,0.444,0.443,0.441,0.44,0.46,0.55,-1.491,-1.403,-1.089,-0.988,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.976,-0.922,-0.733,-0.59,-0.499,-0.444,-0.388,-0.278,-0.22,-0.201,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.128,-0.108,-0.042,-0.022,-0.021,-0.027,-0.049,-0.057,-0.061,-0.065,-0.067,-0.067,-0.065,-0.061,-0.056,-0.049,-0.04,-0.031,-0.02,-0.008,0.005,0.019,0.034,0.048,0.062,0.076,0.09,0.102,0.113,0.124,0.133,0.142,0.15,0.157,0.164,0.171,0.176,0.181,0.186,0.19,0.193,0.194,0.195,0.193,0.191,0.186,0.18,0.171,0.161,0.149,0.136,0.122,0.107,0.092,0.078,0.064,0.052,0.041,0.03,0.014,-0.015,-0.024,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.034,-0.078,-0.213,-0.237,-0.209,-0.167,-0.114,-0.049,0.026,0.107,0.188,0.262,0.323,0.369,0.402,0.423,0.435,0.442,0.445,0.447,0.447,0.447,0.447,0.446,0.445,0.465,0.55,-1.502,-1.413,-1.092,-0.989,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.976,-0.92,-0.724,-0.571,-0.471,-0.411,-0.363,-0.274,-0.214,-0.2,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.131,-0.129,-0.108,-0.042,-0.022,-0.021,-0.027,-0.047,-0.054,-0.058,-0.06,-0.062,-0.061,-0.058,-0.054,-0.048,-0.04,-0.031,-0.021,-0.009,0.004,0.018,0.033,0.048,0.063,0.078,0.093,0.106,0.118,0.129,0.139,0.148,0.156,0.164,0.171,0.177,0.183,0.189,0.194,0.199,0.203,0.207,0.209,0.21,0.209,0.207,0.203,0.196,0.188,0.177,0.165,0.15,0.134,0.118,0.101,0.085,0.069,0.056,0.044,0.033,0.016,-0.015,-0.024,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.033,-0.069,-0.178,-0.189,-0.155,-0.107,-0.049,0.019,0.093,0.17,0.242,0.306,0.356,0.393,0.418,0.433,0.441,0.446,0.448,0.448,0.449,0.449,0.448,0.448,0.448,0.468,0.55,-1.507,-1.417,-1.093,-0.989,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.975,-0.918,-0.717,-0.565,-0.461,-0.395,-0.348,-0.274,-0.214,-0.2,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.132,-0.142,-0.142,-0.117,-0.045,-0.023,-0.021,-0.027,-0.047,-0.053,-0.055,-0.056,-0.055,-0.054,-0.05,-0.045,-0.039,-0.031,-0.021,-0.01,0.003,0.017,0.032,0.048,0.064,0.08,0.095,0.11,0.123,0.135,0.146,0.155,0.163,0.171,0.177,0.184,0.19,0.196,0.201,0.207,0.212,0.217,0.221,0.224,0.226,0.226,0.224,0.22,0.214,0.206,0.195,0.181,0.165,0.147,0.128,0.109,0.09,0.073,0.058,0.045,0.033,0.017,-0.015,-0.024,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.032,-0.059,-0.139,-0.137,-0.097,-0.046,0.014,0.081,0.151,0.221,0.284,0.337,0.379,0.408,0.427,0.438,0.444,0.447,0.449,0.449,0.449,0.449,0.449,0.449,0.449,0.469,0.55,-1.504,-1.415,-1.092,-0.989,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.975,-0.916,-0.712,-0.567,-0.462,-0.39,-0.342,-0.275,-0.215,-0.2,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.13,-0.131,-0.142,-0.168,-0.173,-0.14,-0.066,-0.036,-0.03,-0.033,-0.047,-0.05,-0.05,-0.049,-0.048,-0.045,-0.042,-0.036,-0.029,-0.021,-0.011,0.001,0.015,0.03,0.046,0.063,0.08,0.097,0.113,0.128,0.141,0.152,0.162,0.171,0.178,0.185,0.191,0.196,0.202,0.207,0.213,0.219,0.224,0.23,0.235,0.239,0.242,0.243,0.242,0.239,0.233,0.225,0.213,0.199,0.181,0.161,0.139,0.117,0.095,0.075,0.058,0.043,0.032,0.015,-0.015,-0.024,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.031,-0.049,-0.098,-0.084,-0.041,0.012,0.071,0.135,0.2,0.261,0.315,0.36,0.394,0.417,0.433,0.441,0.446,0.448,0.449,0.449,0.449,0.449,0.449,0.449,0.45,0.47,0.55,-1.491,-1.406,-1.09,-0.989,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.975,-0.914,-0.703,-0.558,-0.453,-0.383,-0.336,-0.274,-0.216,-0.2,-0.199,-0.198,-0.185,-0.144,-0.131,-0.13,-0.132,-0.13,-0.129,-0.129,-0.128,-0.128,-0.128,-0.128,-0.129,-0.133,-0.147,-0.155,-0.138,-0.097,-0.071,-0.055,-0.046,-0.045,-0.043,-0.042,-0.04,-0.039,-0.036,-0.032,-0.027,-0.019,-0.01,0.001,0.014,0.028,0.045,0.062,0.08,0.098,0.115,0.132,0.146,0.158,0.169,0.178,0.186,0.193,0.198,0.203,0.208,0.213,0.219,0.224,0.23,0.237,0.243,0.249,0.254,0.258,0.26,0.261,0.258,0.253,0.245,0.234,0.218,0.199,0.177,0.152,0.126,0.1,0.077,0.057,0.041,0.028,0.013,-0.015,-0.024,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.025,-0.026,-0.029,-0.031,-0.038,-0.056,-0.031,0.014,0.066,0.123,0.182,0.239,0.293,0.339,0.376,0.404,0.423,0.436,0.443,0.447,0.448,0.449,0.449,0.45,0.45,0.45,0.449,0.45,0.471,0.55,-1.467,-1.388,-1.086,-0.988,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.975,-0.909,-0.681,-0.525,-0.403,-0.343,-0.308,-0.26,-0.213,-0.2,-0.199,-0.198,-0.185,-0.144,-0.131,-0.133,-0.144,-0.133,-0.119,-0.112,-0.11,-0.109,-0.109,-0.11,-0.11,-0.109,-0.109,-0.114,-0.106,-0.085,-0.065,-0.049,-0.037,-0.033,-0.031,-0.032,-0.031,-0.03,-0.027,-0.023,-0.017,-0.01,0,0.012,0.025,0.041,0.058,0.077,0.096,0.114,0.132,0.147,0.161,0.173,0.183,0.191,0.197,0.203,0.207,0.212,0.216,0.22,0.225,0.231,0.237,0.244,0.251,0.258,0.264,0.269,0.273,0.275,0.274,0.27,0.262,0.251,0.235,0.215,0.191,0.163,0.134,0.104,0.077,0.055,0.037,0.024,0.01,-0.011,-0.018,-0.019,-0.019,-0.02,-0.022,-0.022,-0.022,-0.022,-0.022,-0.022,-0.023,-0.029,-0.03,-0.028,-0.015,0.02,0.066,0.116,0.168,0.221,0.272,0.318,0.357,0.388,0.412,0.428,0.438,0.444,0.447,0.449,0.449,0.45,0.45,0.45,0.45,0.45,0.451,0.471,0.55,-1.428,-1.358,-1.078,-0.988,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.974,-0.899,-0.639,-0.458,-0.296,-0.239,-0.227,-0.214,-0.201,-0.199,-0.199,-0.198,-0.185,-0.144,-0.133,-0.145,-0.174,-0.14,-0.091,-0.063,-0.052,-0.049,-0.049,-0.051,-0.054,-0.062,-0.07,-0.078,-0.073,-0.059,-0.044,-0.032,-0.02,-0.016,-0.017,-0.021,-0.022,-0.021,-0.019,-0.015,-0.01,-0.003,0.005,0.015,0.027,0.04,0.055,0.071,0.086,0.102,0.116,0.129,0.14,0.149,0.156,0.162,0.166,0.17,0.173,0.176,0.179,0.182,0.186,0.191,0.196,0.202,0.209,0.215,0.221,0.226,0.23,0.232,0.232,0.23,0.225,0.216,0.203,0.186,0.165,0.14,0.114,0.087,0.062,0.042,0.026,0.016,0.008,-0.001,-0.003,-0.004,-0.004,-0.006,-0.011,-0.013,-0.013,-0.013,-0.013,-0.013,-0.017,-0.026,-0.029,-0.018,0.025,0.07,0.114,0.161,0.209,0.256,0.3,0.34,0.373,0.399,0.418,0.431,0.44,0.445,0.447,0.449,0.449,0.45,0.45,0.45,0.45,0.45,0.452,0.472,0.55,-1.37,-1.311,-1.067,-0.987,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.973,-0.882,-0.578,-0.403,-0.25,-0.205,-0.201,-0.2,-0.199,-0.199,-0.199,-0.198,-0.185,-0.144,-0.132,-0.146,-0.179,-0.137,-0.08,-0.046,-0.033,-0.029,-0.028,-0.03,-0.033,-0.04,-0.049,-0.054,-0.05,-0.04,-0.031,-0.024,-0.014,-0.011,-0.011,-0.013,-0.013,-0.013,-0.012,-0.011,-0.01,-0.008,-0.006,-0.003,0,0.003,0.007,0.011,0.015,0.019,0.023,0.026,0.029,0.031,0.033,0.034,0.036,0.036,0.037,0.038,0.039,0.039,0.04,0.042,0.043,0.044,0.046,0.048,0.05,0.051,0.052,0.053,0.053,0.052,0.051,0.049,0.045,0.041,0.036,0.029,0.022,0.015,0.008,0.003,-0.001,-0.004,-0.005,-0.007,-0.007,-0.007,-0.007,-0.008,-0.01,-0.01,-0.01,-0.01,-0.01,-0.011,-0.014,-0.026,-0.028,-0.008,0.064,0.116,0.16,0.203,0.246,0.288,0.326,0.359,0.387,0.409,0.424,0.435,0.442,0.446,0.449,0.45,0.45,0.45,0.451,0.451,0.451,0.451,0.453,0.474,0.55,-1.291,-1.247,-1.05,-0.985,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.971,-0.86,-0.506,-0.346,-0.232,-0.201,-0.199,-0.199,-0.199,-0.199,-0.199,-0.198,-0.185,-0.144,-0.132,-0.142,-0.166,-0.126,-0.075,-0.044,-0.031,-0.027,-0.026,-0.026,-0.029,-0.033,-0.038,-0.039,-0.035,-0.029,-0.024,-0.02,-0.012,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.009,-0.009,-0.009,-0.009,-0.008,-0.008,-0.008,-0.007,-0.007,-0.007,-0.007,-0.007,-0.007,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.006,-0.006,-0.006,-0.007,-0.008,-0.008,-0.009,-0.009,-0.009,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.014,-0.026,-0.027,0.002,0.101,0.161,0.203,0.242,0.281,0.318,0.351,0.379,0.402,0.42,0.433,0.442,0.448,0.451,0.452,0.453,0.453,0.453,0.453,0.453,0.454,0.455,0.457,0.478,0.55,-1.192,-1.165,-1.029,-0.984,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.97,-0.845,-0.452,-0.301,-0.221,-0.2,-0.199,-0.199,-0.199,-0.199,-0.199,-0.198,-0.185,-0.144,-0.132,-0.136,-0.142,-0.107,-0.067,-0.042,-0.03,-0.026,-0.025,-0.025,-0.026,-0.028,-0.029,-0.028,-0.025,-0.022,-0.02,-0.018,-0.012,-0.01,-0.01,-0.01,-0.01,-0.01,-0.009,-0.009,-0.009,-0.009,-0.009,-0.008,-0.008,-0.008,-0.007,-0.007,-0.007,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.006,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.004,-0.003,-0.003,-0.003,-0.004,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.009,-0.009,-0.009,-0.009,-0.009,-0.009,-0.009,-0.009,-0.013,-0.026,-0.027,0.013,0.138,0.205,0.244,0.281,0.316,0.348,0.377,0.401,0.421,0.436,0.447,0.454,0.458,0.459,0.46,0.46,0.459,0.459,0.459,0.46,0.461,0.463,0.466,0.485,0.55,-1.079,-1.07,-1.004,-0.982,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.969,-0.837,-0.419,-0.273,-0.215,-0.2,-0.199,-0.199,-0.198,-0.198,-0.198,-0.196,-0.184,-0.144,-0.131,-0.126,-0.109,-0.078,-0.05,-0.034,-0.026,-0.023,-0.022,-0.021,-0.021,-0.021,-0.02,-0.018,-0.016,-0.015,-0.015,-0.014,-0.011,-0.01,-0.009,-0.008,-0.006,-0.004,-0.001,0.001,0.003,0.006,0.008,0.011,0.015,0.02,0.025,0.03,0.034,0.038,0.04,0.042,0.043,0.044,0.044,0.036,-0.002,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,0.003,0.061,0.075,0.075,0.075,0.071,0.054,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.042,0.006,-0.001,0.002,0.005,0.008,0.009,0.01,0.01,0.003,-0.023,-0.019,0.039,0.177,0.247,0.285,0.319,0.351,0.38,0.405,0.427,0.444,0.457,0.466,0.472,0.475,0.476,0.476,0.475,0.474,0.474,0.474,0.475,0.477,0.479,0.483,0.499,0.55,-0.96,-0.97,-0.978,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.969,-0.831,-0.398,-0.254,-0.21,-0.199,-0.199,-0.196,-0.187,-0.185,-0.185,-0.184,-0.173,-0.142,-0.13,-0.115,-0.069,-0.039,-0.023,-0.015,-0.012,-0.012,-0.013,-0.013,-0.012,-0.009,-0.006,-0.004,-0.003,-0.004,-0.006,-0.007,-0.007,-0.006,-0.003,0.002,0.009,0.018,0.027,0.036,0.045,0.054,0.064,0.076,0.091,0.109,0.128,0.148,0.165,0.179,0.189,0.195,0.199,0.202,0.199,0.158,0.036,-0.006,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.004,0.061,0.25,0.318,0.327,0.325,0.304,0.247,0.228,0.226,0.226,0.226,0.226,0.226,0.226,0.226,0.226,0.226,0.222,0.182,0.07,0.036,0.043,0.056,0.067,0.075,0.079,0.08,0.06,0.006,0.03,0.106,0.229,0.29,0.325,0.357,0.387,0.414,0.437,0.457,0.473,0.486,0.495,0.5,0.503,0.505,0.505,0.504,0.503,0.503,0.503,0.504,0.506,0.508,0.512,0.522,0.55,-0.846,-0.875,-0.953,-0.978,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.968,-0.828,-0.383,-0.238,-0.206,-0.199,-0.198,-0.187,-0.156,-0.145,-0.144,-0.144,-0.142,-0.132,-0.128,-0.105,-0.033,0,0.01,0.012,0.01,0.006,0.003,0.002,0.003,0.007,0.011,0.014,0.015,0.013,0.01,0.008,0.007,0.008,0.011,0.018,0.027,0.038,0.05,0.06,0.07,0.08,0.091,0.106,0.124,0.147,0.172,0.196,0.216,0.232,0.242,0.249,0.253,0.255,0.252,0.202,0.045,-0.006,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.003,0.076,0.321,0.405,0.416,0.415,0.388,0.309,0.284,0.282,0.282,0.282,0.282,0.282,0.282,0.282,0.282,0.282,0.278,0.236,0.111,0.078,0.089,0.108,0.126,0.141,0.154,0.162,0.146,0.101,0.149,0.211,0.287,0.333,0.366,0.396,0.425,0.45,0.473,0.492,0.509,0.522,0.531,0.538,0.543,0.546,0.548,0.549,0.549,0.549,0.55,0.551,0.552,0.553,0.555,0.555,0.55,-0.747,-0.793,-0.931,-0.976,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.968,-0.824,-0.369,-0.224,-0.202,-0.199,-0.198,-0.185,-0.145,-0.132,-0.131,-0.131,-0.131,-0.13,-0.128,-0.099,-0.006,0.032,0.04,0.04,0.035,0.028,0.023,0.02,0.021,0.025,0.03,0.035,0.036,0.035,0.033,0.029,0.025,0.024,0.026,0.033,0.043,0.055,0.067,0.078,0.087,0.096,0.106,0.12,0.139,0.162,0.188,0.212,0.231,0.245,0.253,0.258,0.26,0.261,0.258,0.207,0.045,-0.006,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.003,0.078,0.335,0.421,0.432,0.431,0.402,0.316,0.289,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.284,0.255,0.165,0.142,0.152,0.171,0.192,0.215,0.239,0.262,0.277,0.274,0.306,0.326,0.346,0.375,0.406,0.436,0.463,0.488,0.511,0.531,0.548,0.563,0.575,0.584,0.592,0.598,0.603,0.606,0.609,0.61,0.611,0.612,0.611,0.611,0.609,0.596,0.55,-0.668,-0.728,-0.915,-0.975,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.968,-0.82,-0.353,-0.207,-0.197,-0.198,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.127,-0.095,0.009,0.052,0.062,0.063,0.057,0.049,0.041,0.037,0.038,0.043,0.049,0.054,0.057,0.057,0.053,0.047,0.041,0.037,0.037,0.043,0.055,0.07,0.084,0.095,0.103,0.111,0.12,0.132,0.15,0.174,0.2,0.223,0.241,0.252,0.259,0.261,0.262,0.263,0.259,0.208,0.045,-0.006,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.003,0.079,0.34,0.426,0.437,0.435,0.406,0.317,0.289,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.286,0.274,0.238,0.227,0.232,0.246,0.268,0.296,0.33,0.365,0.396,0.417,0.434,0.43,0.403,0.416,0.445,0.474,0.502,0.527,0.55,0.571,0.59,0.606,0.621,0.633,0.644,0.653,0.66,0.666,0.671,0.674,0.675,0.675,0.673,0.67,0.665,0.638,0.55,-0.612,-0.683,-0.903,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.816,-0.337,-0.191,-0.193,-0.198,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.127,-0.093,0.016,0.062,0.076,0.078,0.073,0.064,0.055,0.051,0.052,0.058,0.064,0.07,0.073,0.073,0.069,0.061,0.053,0.049,0.05,0.057,0.069,0.086,0.102,0.114,0.12,0.125,0.132,0.143,0.161,0.185,0.21,0.233,0.249,0.258,0.263,0.264,0.264,0.264,0.259,0.208,0.046,-0.006,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.003,0.08,0.342,0.429,0.439,0.437,0.407,0.317,0.289,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.293,0.308,0.311,0.314,0.324,0.344,0.377,0.417,0.457,0.49,0.514,0.525,0.51,0.452,0.456,0.483,0.512,0.539,0.565,0.589,0.61,0.63,0.648,0.664,0.678,0.69,0.701,0.71,0.717,0.722,0.726,0.727,0.727,0.724,0.72,0.712,0.675,0.55,-0.577,-0.656,-0.897,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.813,-0.327,-0.18,-0.191,-0.198,-0.198,-0.185,-0.144,-0.131,-0.13,-0.13,-0.13,-0.13,-0.127,-0.093,0.017,0.064,0.081,0.086,0.082,0.073,0.065,0.061,0.063,0.069,0.076,0.081,0.084,0.085,0.082,0.074,0.068,0.068,0.072,0.079,0.091,0.108,0.124,0.134,0.138,0.14,0.144,0.153,0.17,0.193,0.218,0.239,0.254,0.261,0.264,0.264,0.264,0.263,0.259,0.207,0.046,-0.006,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.003,0.08,0.342,0.429,0.439,0.437,0.406,0.317,0.289,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.287,0.288,0.306,0.361,0.38,0.384,0.393,0.412,0.446,0.487,0.526,0.555,0.573,0.58,0.56,0.492,0.492,0.519,0.548,0.575,0.6,0.624,0.646,0.666,0.684,0.7,0.715,0.727,0.738,0.747,0.753,0.758,0.761,0.762,0.762,0.759,0.755,0.747,0.702,0.55,-0.559,-0.644,-0.894,-0.973,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.812,-0.322,-0.175,-0.189,-0.198,-0.198,-0.185,-0.142,-0.13,-0.128,-0.128,-0.128,-0.128,-0.125,-0.091,0.014,0.061,0.087,0.096,0.093,0.087,0.08,0.078,0.081,0.087,0.092,0.096,0.099,0.1,0.098,0.093,0.09,0.093,0.1,0.106,0.115,0.13,0.142,0.149,0.15,0.149,0.151,0.157,0.171,0.19,0.21,0.227,0.238,0.244,0.245,0.245,0.244,0.244,0.239,0.191,0.047,-0.001,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.005,-0.004,-0.004,-0.004,0.003,0.086,0.341,0.428,0.438,0.435,0.405,0.319,0.29,0.287,0.285,0.284,0.284,0.284,0.285,0.286,0.288,0.289,0.292,0.32,0.403,0.436,0.443,0.45,0.468,0.499,0.537,0.57,0.592,0.604,0.608,0.587,0.523,0.525,0.552,0.58,0.607,0.632,0.655,0.676,0.696,0.713,0.729,0.742,0.754,0.763,0.77,0.776,0.779,0.781,0.782,0.782,0.78,0.777,0.769,0.72,0.55,-0.554,-0.641,-0.893,-0.973,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.811,-0.32,-0.172,-0.188,-0.198,-0.198,-0.182,-0.125,-0.109,-0.107,-0.106,-0.104,-0.101,-0.095,-0.065,0.018,0.064,0.1,0.114,0.114,0.112,0.11,0.11,0.113,0.116,0.119,0.121,0.122,0.123,0.123,0.122,0.121,0.124,0.128,0.131,0.136,0.145,0.151,0.153,0.152,0.15,0.15,0.152,0.158,0.168,0.178,0.186,0.191,0.194,0.194,0.194,0.194,0.194,0.191,0.163,0.079,0.051,0.049,0.049,0.049,0.049,0.05,0.051,0.052,0.054,0.058,0.061,0.065,0.069,0.079,0.15,0.35,0.423,0.434,0.432,0.406,0.336,0.305,0.287,0.268,0.254,0.251,0.258,0.27,0.285,0.3,0.314,0.327,0.363,0.449,0.486,0.494,0.498,0.511,0.537,0.569,0.595,0.61,0.618,0.619,0.602,0.549,0.554,0.581,0.608,0.634,0.659,0.681,0.701,0.72,0.736,0.75,0.761,0.771,0.778,0.784,0.788,0.79,0.792,0.792,0.792,0.791,0.788,0.781,0.731,0.55,-0.555,-0.643,-0.894,-0.973,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.812,-0.32,-0.172,-0.188,-0.197,-0.195,-0.16,-0.053,-0.018,-0.013,-0.009,-0.003,0.006,0.015,0.029,0.059,0.075,0.091,0.096,0.096,0.094,0.094,0.098,0.103,0.109,0.114,0.116,0.118,0.12,0.122,0.122,0.123,0.128,0.134,0.141,0.152,0.166,0.175,0.177,0.173,0.169,0.167,0.171,0.18,0.195,0.21,0.223,0.231,0.236,0.238,0.238,0.237,0.237,0.236,0.234,0.224,0.222,0.222,0.223,0.223,0.224,0.225,0.228,0.234,0.243,0.255,0.27,0.285,0.299,0.311,0.334,0.403,0.422,0.426,0.425,0.415,0.379,0.342,0.285,0.217,0.167,0.156,0.181,0.23,0.287,0.346,0.399,0.439,0.473,0.518,0.535,0.537,0.536,0.542,0.562,0.588,0.608,0.618,0.623,0.623,0.61,0.572,0.581,0.607,0.633,0.658,0.681,0.702,0.721,0.738,0.752,0.764,0.774,0.782,0.787,0.791,0.794,0.796,0.797,0.797,0.797,0.796,0.794,0.788,0.737,0.55,-0.559,-0.648,-0.896,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.812,-0.322,-0.173,-0.181,-0.189,-0.181,-0.112,0.03,0.082,0.09,0.093,0.096,0.101,0.105,0.109,0.114,0.117,0.12,0.12,0.12,0.121,0.124,0.128,0.133,0.138,0.14,0.142,0.143,0.144,0.146,0.147,0.149,0.154,0.16,0.165,0.172,0.179,0.182,0.182,0.179,0.176,0.175,0.177,0.184,0.193,0.203,0.211,0.217,0.22,0.221,0.222,0.222,0.221,0.223,0.237,0.27,0.283,0.283,0.282,0.281,0.281,0.282,0.285,0.291,0.301,0.315,0.332,0.349,0.366,0.379,0.391,0.406,0.411,0.414,0.412,0.403,0.379,0.339,0.277,0.208,0.161,0.154,0.187,0.25,0.328,0.403,0.465,0.509,0.539,0.562,0.571,0.569,0.564,0.564,0.577,0.598,0.613,0.622,0.625,0.625,0.616,0.591,0.603,0.629,0.654,0.677,0.699,0.718,0.736,0.751,0.763,0.774,0.782,0.788,0.792,0.795,0.797,0.798,0.799,0.799,0.799,0.798,0.797,0.792,0.741,0.55,-0.563,-0.652,-0.897,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.813,-0.325,-0.169,-0.162,-0.163,-0.146,-0.078,-0.009,0.006,0.01,0.016,0.023,0.029,0.033,0.038,0.042,0.044,0.044,0.043,0.045,0.051,0.06,0.073,0.086,0.097,0.104,0.107,0.11,0.112,0.116,0.122,0.13,0.143,0.158,0.173,0.185,0.194,0.196,0.192,0.186,0.181,0.18,0.186,0.199,0.218,0.238,0.255,0.267,0.275,0.28,0.282,0.282,0.281,0.28,0.283,0.297,0.298,0.295,0.293,0.291,0.289,0.289,0.291,0.296,0.305,0.317,0.332,0.348,0.363,0.376,0.386,0.394,0.398,0.399,0.394,0.383,0.36,0.324,0.274,0.226,0.197,0.2,0.238,0.305,0.385,0.46,0.515,0.549,0.571,0.586,0.592,0.589,0.581,0.578,0.586,0.602,0.615,0.622,0.625,0.626,0.621,0.607,0.623,0.647,0.671,0.693,0.713,0.731,0.747,0.76,0.771,0.78,0.787,0.792,0.795,0.797,0.798,0.799,0.799,0.799,0.799,0.799,0.799,0.794,0.742,0.55,-0.565,-0.654,-0.897,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.814,-0.33,-0.173,-0.159,-0.158,-0.136,-0.063,-0.032,-0.027,-0.022,-0.015,-0.008,-0.003,-0.001,0.002,0.004,0.006,0.005,0.006,0.009,0.018,0.03,0.047,0.065,0.079,0.088,0.093,0.096,0.099,0.104,0.111,0.122,0.138,0.157,0.175,0.188,0.196,0.196,0.192,0.186,0.182,0.182,0.189,0.206,0.229,0.253,0.274,0.289,0.299,0.305,0.308,0.308,0.308,0.307,0.307,0.307,0.305,0.301,0.297,0.294,0.292,0.292,0.293,0.297,0.304,0.314,0.327,0.341,0.354,0.366,0.375,0.381,0.383,0.382,0.376,0.364,0.343,0.314,0.28,0.251,0.24,0.255,0.298,0.365,0.441,0.508,0.552,0.576,0.59,0.599,0.603,0.599,0.591,0.585,0.59,0.603,0.615,0.622,0.625,0.626,0.624,0.621,0.639,0.662,0.685,0.706,0.724,0.741,0.755,0.767,0.777,0.784,0.79,0.794,0.797,0.798,0.799,0.799,0.8,0.8,0.8,0.799,0.799,0.795,0.743,0.55,-0.566,-0.655,-0.898,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.967,-0.817,-0.338,-0.181,-0.163,-0.161,-0.138,-0.058,-0.032,-0.026,-0.021,-0.015,-0.01,-0.007,-0.007,-0.007,-0.006,-0.006,-0.005,-0.004,0.001,0.01,0.024,0.041,0.06,0.075,0.085,0.091,0.095,0.098,0.103,0.11,0.122,0.137,0.155,0.171,0.182,0.188,0.189,0.186,0.182,0.179,0.182,0.191,0.208,0.231,0.256,0.277,0.292,0.302,0.309,0.312,0.313,0.313,0.313,0.312,0.311,0.308,0.304,0.3,0.297,0.294,0.293,0.294,0.296,0.302,0.311,0.322,0.334,0.346,0.356,0.363,0.368,0.37,0.367,0.361,0.35,0.333,0.312,0.292,0.279,0.282,0.306,0.351,0.415,0.483,0.539,0.574,0.592,0.602,0.607,0.608,0.603,0.595,0.588,0.59,0.6,0.612,0.619,0.623,0.625,0.626,0.633,0.652,0.675,0.696,0.715,0.732,0.748,0.76,0.771,0.78,0.787,0.792,0.795,0.797,0.799,0.799,0.8,0.8,0.8,0.8,0.8,0.799,0.795,0.744,0.55,-0.564,-0.654,-0.897,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.968,-0.82,-0.348,-0.19,-0.17,-0.166,-0.141,-0.056,-0.028,-0.022,-0.018,-0.013,-0.009,-0.008,-0.008,-0.009,-0.01,-0.01,-0.009,-0.006,-0.001,0.008,0.022,0.039,0.057,0.072,0.083,0.09,0.095,0.099,0.104,0.111,0.122,0.135,0.149,0.162,0.172,0.177,0.179,0.178,0.176,0.176,0.18,0.191,0.209,0.231,0.255,0.276,0.291,0.302,0.308,0.312,0.314,0.314,0.314,0.314,0.312,0.309,0.306,0.302,0.299,0.296,0.294,0.294,0.296,0.301,0.308,0.318,0.328,0.338,0.346,0.353,0.357,0.357,0.355,0.35,0.34,0.329,0.316,0.307,0.305,0.318,0.346,0.391,0.448,0.506,0.553,0.583,0.599,0.606,0.609,0.607,0.602,0.594,0.587,0.588,0.596,0.606,0.614,0.619,0.622,0.626,0.642,0.663,0.685,0.704,0.722,0.738,0.752,0.764,0.774,0.782,0.788,0.792,0.796,0.798,0.799,0.799,0.8,0.8,0.8,0.8,0.8,0.799,0.795,0.744,0.55,-0.56,-0.65,-0.896,-0.974,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.968,-0.822,-0.356,-0.199,-0.178,-0.173,-0.145,-0.061,-0.03,-0.025,-0.021,-0.017,-0.015,-0.014,-0.014,-0.015,-0.016,-0.016,-0.015,-0.011,-0.006,0.003,0.015,0.031,0.048,0.063,0.074,0.082,0.087,0.092,0.097,0.104,0.113,0.124,0.135,0.146,0.154,0.16,0.163,0.164,0.165,0.168,0.174,0.186,0.204,0.226,0.249,0.269,0.284,0.295,0.302,0.307,0.309,0.31,0.31,0.31,0.308,0.305,0.302,0.299,0.296,0.293,0.291,0.291,0.293,0.296,0.302,0.31,0.319,0.327,0.335,0.34,0.343,0.344,0.343,0.339,0.333,0.326,0.32,0.319,0.325,0.343,0.372,0.414,0.463,0.511,0.551,0.578,0.593,0.601,0.603,0.601,0.596,0.589,0.583,0.583,0.59,0.599,0.607,0.613,0.616,0.624,0.647,0.67,0.691,0.709,0.726,0.74,0.753,0.764,0.773,0.78,0.786,0.79,0.792,0.794,0.795,0.795,0.796,0.796,0.796,0.796,0.796,0.795,0.791,0.74,0.55,-0.553,-0.644,-0.895,-0.973,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.968,-0.823,-0.362,-0.207,-0.186,-0.18,-0.161,-0.118,-0.098,-0.094,-0.091,-0.089,-0.087,-0.087,-0.087,-0.087,-0.088,-0.088,-0.086,-0.084,-0.079,-0.072,-0.062,-0.051,-0.038,-0.026,-0.016,-0.009,-0.004,0.002,0.007,0.014,0.022,0.031,0.041,0.051,0.06,0.069,0.076,0.083,0.091,0.101,0.113,0.13,0.15,0.173,0.196,0.216,0.232,0.245,0.253,0.259,0.263,0.265,0.266,0.267,0.266,0.265,0.263,0.26,0.258,0.256,0.255,0.255,0.256,0.258,0.263,0.268,0.275,0.281,0.286,0.291,0.294,0.295,0.295,0.294,0.292,0.291,0.291,0.296,0.308,0.327,0.356,0.392,0.433,0.473,0.509,0.536,0.555,0.567,0.574,0.578,0.578,0.576,0.574,0.576,0.582,0.59,0.597,0.603,0.607,0.616,0.64,0.66,0.676,0.691,0.703,0.715,0.725,0.733,0.74,0.745,0.75,0.751,0.747,0.747,0.748,0.748,0.749,0.749,0.749,0.749,0.749,0.749,0.744,0.701,0.55,-0.543,-0.646,-0.896,-0.977,-0.983,-0.983,-0.983,-0.983,-0.983,-0.983,-0.983,-0.983,-0.983,-0.983,-0.972,-0.828,-0.371,-0.218,-0.198,-0.197,-0.223,-0.29,-0.317,-0.32,-0.319,-0.319,-0.319,-0.319,-0.319,-0.319,-0.319,-0.319,-0.319,-0.318,-0.316,-0.314,-0.312,-0.308,-0.304,-0.3,-0.296,-0.293,-0.289,-0.285,-0.281,-0.274,-0.267,-0.257,-0.245,-0.232,-0.216,-0.198,-0.178,-0.155,-0.13,-0.103,-0.075,-0.046,-0.017,0.011,0.036,0.059,0.078,0.093,0.105,0.115,0.122,0.128,0.132,0.135,0.137,0.138,0.139,0.139,0.139,0.139,0.139,0.14,0.14,0.141,0.142,0.144,0.146,0.148,0.15,0.153,0.155,0.157,0.159,0.162,0.166,0.172,0.179,0.19,0.205,0.225,0.25,0.281,0.315,0.351,0.387,0.421,0.452,0.479,0.503,0.522,0.537,0.55,0.559,0.567,0.575,0.582,0.587,0.591,0.594,0.597,0.606,0.612,0.616,0.62,0.624,0.627,0.63,0.632,0.633,0.635,0.635,0.628,0.608,0.601,0.6,0.601,0.601,0.601,0.601,0.601,0.601,0.601,0.6,0.593,0.55,-0.53,-0.738,-0.949,-1.018,-1.025,-1.025,-1.025,-1.025,-1.025,-1.025,-1.025,-1.025,-1.025,-1.025,-1.013,-0.869,-0.411,-0.26,-0.242,-0.241,-0.271,-0.357,-0.388,-0.392,-0.392,-0.392,-0.392,-0.392,-0.392,-0.392,-0.393,-0.392,-0.392,-0.392,-0.392,-0.391,-0.391,-0.39,-0.389,-0.388,-0.386,-0.384,-0.381,-0.378,-0.373,-0.367,-0.36,-0.35,-0.339,-0.324,-0.306,-0.285,-0.26,-0.232,-0.202,-0.169,-0.135,-0.101,-0.069,-0.039,-0.012,0.011,0.031,0.048,0.061,0.071,0.08,0.086,0.091,0.094,0.097,0.099,0.1,0.101,0.102,0.103,0.103,0.103,0.104,0.104,0.104,0.105,0.105,0.106,0.107,0.108,0.11,0.112,0.115,0.119,0.124,0.131,0.141,0.153,0.169,0.189,0.213,0.242,0.275,0.311,0.349,0.386,0.422,0.455,0.484,0.509,0.529,0.545,0.558,0.568,0.576,0.582,0.586,0.59,0.592,0.594,0.596,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.599,0.591,0.563,0.555,0.554,0.554,0.554,0.554,0.554,0.554,0.554,0.554,0.554,0.554,0.55,-1.2,-1.09,-1.141,-1.155,-1.155,-1.155,-1.155,-1.155,-1.155,-1.155,-1.155,-1.155,-1.155,-1.155,-1.143,-0.993,-0.522,-0.371,-0.357,-0.357,-0.363,-0.391,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.398,-0.398,-0.397,-0.396,-0.395,-0.393,-0.39,-0.387,-0.383,-0.378,-0.37,-0.361,-0.35,-0.335,-0.317,-0.296,-0.27,-0.242,-0.21,-0.176,-0.14,-0.106,-0.072,-0.041,-0.014,0.01,0.03,0.046,0.06,0.07,0.078,0.084,0.089,0.092,0.094,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.102,0.102,0.103,0.104,0.105,0.107,0.109,0.113,0.118,0.125,0.134,0.146,0.162,0.182,0.206,0.236,0.27,0.307,0.346,0.385,0.423,0.457,0.487,0.512,0.533,0.549,0.562,0.572,0.579,0.585,0.589,0.591,0.594,0.595,0.596,0.597,0.597,0.598,0.598,0.598,0.598,0.598,0.598,0.598,0.597,0.588,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.19,-1.197,-1.197,-1.197,-1.197,-1.197,-1.197,-1.197,-1.197,-1.197,-1.197,-1.197,-1.197,-1.184,-1.033,-0.557,-0.406,-0.394,-0.394,-0.395,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.398,-0.397,-0.396,-0.394,-0.392,-0.389,-0.385,-0.38,-0.373,-0.364,-0.353,-0.339,-0.321,-0.299,-0.274,-0.245,-0.212,-0.177,-0.141,-0.105,-0.071,-0.039,-0.011,0.013,0.033,0.049,0.062,0.072,0.08,0.086,0.09,0.093,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.103,0.104,0.105,0.108,0.111,0.116,0.122,0.131,0.142,0.158,0.178,0.202,0.232,0.267,0.306,0.346,0.387,0.426,0.461,0.492,0.517,0.538,0.554,0.566,0.575,0.582,0.587,0.591,0.593,0.595,0.596,0.597,0.598,0.598,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.598,0.588,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.409,-0.397,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.397,-0.395,-0.393,-0.391,-0.387,-0.382,-0.376,-0.367,-0.356,-0.342,-0.324,-0.303,-0.277,-0.247,-0.214,-0.178,-0.141,-0.104,-0.069,-0.037,-0.009,0.015,0.035,0.052,0.064,0.074,0.082,0.087,0.091,0.094,0.096,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.103,0.104,0.106,0.109,0.113,0.119,0.128,0.139,0.154,0.174,0.199,0.229,0.265,0.304,0.346,0.389,0.429,0.465,0.496,0.521,0.542,0.558,0.57,0.578,0.585,0.589,0.592,0.595,0.596,0.597,0.598,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.598,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.397,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.392,-0.388,-0.384,-0.378,-0.369,-0.359,-0.345,-0.327,-0.306,-0.28,-0.25,-0.216,-0.18,-0.142,-0.104,-0.068,-0.035,-0.007,0.018,0.038,0.054,0.066,0.076,0.083,0.088,0.092,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.102,0.103,0.105,0.108,0.112,0.117,0.125,0.136,0.151,0.17,0.195,0.226,0.262,0.303,0.347,0.39,0.431,0.468,0.5,0.525,0.546,0.561,0.573,0.581,0.587,0.591,0.594,0.596,0.597,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.598,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.39,-0.385,-0.379,-0.372,-0.361,-0.347,-0.33,-0.309,-0.283,-0.252,-0.218,-0.181,-0.142,-0.104,-0.067,-0.034,-0.005,0.02,0.04,0.056,0.068,0.077,0.084,0.089,0.093,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.104,0.107,0.11,0.115,0.123,0.133,0.148,0.167,0.192,0.223,0.26,0.302,0.347,0.391,0.434,0.471,0.503,0.529,0.549,0.564,0.575,0.583,0.589,0.592,0.595,0.597,0.598,0.599,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.599,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.391,-0.387,-0.381,-0.373,-0.363,-0.35,-0.332,-0.311,-0.285,-0.254,-0.219,-0.181,-0.142,-0.103,-0.066,-0.032,-0.003,0.022,0.042,0.057,0.07,0.079,0.085,0.09,0.094,0.096,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.106,0.109,0.114,0.121,0.131,0.145,0.164,0.189,0.221,0.258,0.301,0.347,0.393,0.436,0.474,0.506,0.532,0.552,0.567,0.577,0.585,0.59,0.594,0.596,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.398,-0.396,-0.394,-0.392,-0.388,-0.382,-0.375,-0.365,-0.351,-0.334,-0.313,-0.287,-0.256,-0.221,-0.182,-0.142,-0.103,-0.065,-0.031,-0.002,0.023,0.043,0.059,0.071,0.08,0.086,0.091,0.094,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.105,0.108,0.112,0.119,0.129,0.143,0.162,0.187,0.219,0.257,0.3,0.347,0.394,0.438,0.476,0.509,0.535,0.554,0.569,0.579,0.586,0.591,0.594,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.392,-0.388,-0.383,-0.376,-0.366,-0.353,-0.336,-0.314,-0.288,-0.257,-0.222,-0.183,-0.143,-0.102,-0.064,-0.03,0,0.024,0.044,0.06,0.072,0.081,0.087,0.091,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.118,0.128,0.141,0.16,0.185,0.217,0.256,0.3,0.347,0.395,0.439,0.478,0.511,0.537,0.556,0.57,0.58,0.587,0.592,0.595,0.597,0.598,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.59,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.561,-0.41,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.376,-0.367,-0.354,-0.337,-0.315,-0.289,-0.258,-0.222,-0.183,-0.143,-0.102,-0.064,-0.029,0,0.025,0.045,0.061,0.072,0.081,0.087,0.092,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.117,0.126,0.14,0.159,0.184,0.216,0.255,0.299,0.347,0.395,0.44,0.48,0.512,0.538,0.557,0.572,0.581,0.588,0.593,0.596,0.597,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.59,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.561,-0.41,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.377,-0.367,-0.354,-0.337,-0.316,-0.29,-0.258,-0.223,-0.184,-0.143,-0.102,-0.064,-0.029,0.001,0.026,0.046,0.061,0.073,0.081,0.088,0.092,0.095,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.106,0.11,0.117,0.126,0.139,0.158,0.183,0.215,0.254,0.299,0.347,0.396,0.441,0.481,0.513,0.539,0.558,0.572,0.582,0.589,0.593,0.596,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.59,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.561,-0.41,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.377,-0.367,-0.355,-0.338,-0.316,-0.29,-0.259,-0.223,-0.184,-0.143,-0.102,-0.064,-0.029,0.001,0.026,0.046,0.061,0.073,0.082,0.088,0.092,0.095,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.106,0.11,0.116,0.126,0.139,0.158,0.183,0.215,0.254,0.299,0.347,0.396,0.441,0.481,0.514,0.539,0.559,0.572,0.582,0.589,0.593,0.596,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.59,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.561,-0.41,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.377,-0.367,-0.354,-0.337,-0.316,-0.29,-0.258,-0.223,-0.184,-0.143,-0.102,-0.064,-0.029,0.001,0.026,0.046,0.061,0.073,0.081,0.088,0.092,0.095,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.106,0.11,0.117,0.126,0.139,0.158,0.183,0.215,0.254,0.299,0.347,0.396,0.441,0.481,0.513,0.539,0.558,0.572,0.582,0.589,0.593,0.596,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.59,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.561,-0.41,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.376,-0.367,-0.354,-0.337,-0.315,-0.289,-0.258,-0.222,-0.183,-0.143,-0.102,-0.064,-0.029,0,0.025,0.045,0.061,0.072,0.081,0.087,0.092,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.117,0.126,0.14,0.159,0.184,0.216,0.255,0.299,0.347,0.395,0.44,0.48,0.512,0.538,0.557,0.572,0.581,0.588,0.593,0.596,0.597,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.59,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.392,-0.388,-0.383,-0.376,-0.366,-0.353,-0.336,-0.314,-0.288,-0.257,-0.222,-0.183,-0.143,-0.102,-0.064,-0.03,0,0.024,0.044,0.06,0.072,0.081,0.087,0.091,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.118,0.128,0.141,0.16,0.185,0.217,0.256,0.3,0.347,0.395,0.439,0.478,0.511,0.537,0.556,0.57,0.58,0.587,0.592,0.595,0.597,0.598,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.59,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.398,-0.396,-0.394,-0.392,-0.388,-0.382,-0.375,-0.365,-0.351,-0.334,-0.313,-0.287,-0.256,-0.221,-0.182,-0.142,-0.103,-0.065,-0.031,-0.002,0.023,0.043,0.059,0.071,0.08,0.086,0.091,0.094,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.105,0.108,0.112,0.119,0.129,0.143,0.162,0.187,0.219,0.257,0.3,0.347,0.394,0.438,0.476,0.509,0.535,0.554,0.569,0.579,0.586,0.591,0.594,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.391,-0.387,-0.381,-0.373,-0.363,-0.35,-0.332,-0.311,-0.285,-0.254,-0.219,-0.181,-0.142,-0.103,-0.066,-0.032,-0.003,0.022,0.042,0.057,0.07,0.079,0.085,0.09,0.094,0.096,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.106,0.109,0.114,0.121,0.131,0.145,0.164,0.189,0.221,0.258,0.301,0.347,0.393,0.436,0.474,0.506,0.532,0.552,0.567,0.577,0.585,0.59,0.594,0.596,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.39,-0.385,-0.379,-0.372,-0.361,-0.347,-0.33,-0.309,-0.283,-0.252,-0.218,-0.181,-0.142,-0.104,-0.067,-0.034,-0.005,0.02,0.04,0.056,0.068,0.077,0.084,0.089,0.093,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.104,0.107,0.11,0.115,0.123,0.133,0.148,0.167,0.192,0.223,0.26,0.302,0.347,0.391,0.434,0.471,0.503,0.529,0.549,0.564,0.575,0.583,0.589,0.592,0.595,0.597,0.598,0.599,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.599,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.41,-0.397,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.392,-0.388,-0.384,-0.378,-0.369,-0.359,-0.345,-0.327,-0.306,-0.28,-0.25,-0.216,-0.18,-0.142,-0.104,-0.068,-0.035,-0.007,0.018,0.038,0.054,0.066,0.076,0.083,0.088,0.092,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.102,0.103,0.105,0.108,0.112,0.117,0.125,0.136,0.151,0.17,0.195,0.226,0.262,0.303,0.347,0.39,0.431,0.468,0.5,0.525,0.546,0.561,0.573,0.581,0.587,0.591,0.594,0.596,0.597,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.598,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.56,-0.409,-0.397,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.397,-0.395,-0.393,-0.391,-0.387,-0.382,-0.376,-0.367,-0.356,-0.342,-0.324,-0.303,-0.277,-0.247,-0.214,-0.178,-0.141,-0.104,-0.069,-0.037,-0.009,0.015,0.035,0.052,0.064,0.074,0.082,0.087,0.091,0.094,0.096,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.103,0.104,0.106,0.109,0.113,0.119,0.128,0.139,0.154,0.174,0.199,0.229,0.265,0.304,0.346,0.389,0.429,0.465,0.496,0.521,0.542,0.558,0.57,0.578,0.585,0.589,0.592,0.595,0.596,0.597,0.598,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.598,0.589,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.559,-0.409,-0.397,-0.397,-0.398,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.398,-0.397,-0.396,-0.394,-0.392,-0.389,-0.385,-0.38,-0.373,-0.364,-0.353,-0.339,-0.321,-0.299,-0.274,-0.245,-0.212,-0.177,-0.141,-0.105,-0.071,-0.039,-0.011,0.013,0.033,0.049,0.062,0.072,0.08,0.086,0.09,0.093,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.103,0.104,0.105,0.108,0.111,0.116,0.122,0.131,0.142,0.158,0.178,0.202,0.232,0.267,0.306,0.346,0.387,0.426,0.461,0.492,0.517,0.538,0.554,0.566,0.575,0.582,0.587,0.591,0.593,0.595,0.596,0.597,0.598,0.598,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.598,0.588,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.037,-0.572,-0.421,-0.409,-0.409,-0.394,-0.395,-0.395,-0.395,-0.395,-0.395,-0.396,-0.396,-0.396,-0.396,-0.396,-0.396,-0.396,-0.396,-0.396,-0.395,-0.395,-0.394,-0.394,-0.393,-0.392,-0.39,-0.388,-0.384,-0.38,-0.375,-0.368,-0.359,-0.347,-0.333,-0.315,-0.294,-0.269,-0.241,-0.21,-0.176,-0.141,-0.107,-0.074,-0.044,-0.017,0.007,0.027,0.043,0.056,0.066,0.074,0.08,0.084,0.087,0.09,0.092,0.093,0.094,0.095,0.095,0.095,0.096,0.096,0.096,0.096,0.096,0.097,0.097,0.098,0.099,0.1,0.102,0.105,0.108,0.113,0.12,0.129,0.141,0.156,0.176,0.2,0.229,0.262,0.299,0.337,0.376,0.413,0.447,0.476,0.501,0.522,0.538,0.55,0.56,0.567,0.572,0.576,0.579,0.581,0.583,0.584,0.584,0.585,0.585,0.586,0.597,0.597,0.597,0.597,0.597,0.596,0.587,0.56,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.187,-1.062,-0.71,-0.584,-0.572,-0.557,-0.369,-0.354,-0.354,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.355,-0.354,-0.354,-0.353,-0.352,-0.351,-0.35,-0.348,-0.345,-0.342,-0.337,-0.331,-0.324,-0.315,-0.303,-0.289,-0.272,-0.253,-0.231,-0.206,-0.18,-0.153,-0.126,-0.101,-0.077,-0.056,-0.038,-0.022,-0.009,0.001,0.009,0.016,0.021,0.025,0.027,0.03,0.031,0.032,0.033,0.034,0.034,0.034,0.035,0.035,0.035,0.035,0.036,0.036,0.036,0.037,0.038,0.039,0.041,0.043,0.046,0.05,0.056,0.063,0.073,0.085,0.101,0.12,0.143,0.168,0.197,0.226,0.256,0.285,0.311,0.334,0.354,0.37,0.383,0.393,0.401,0.407,0.411,0.415,0.417,0.419,0.42,0.421,0.422,0.422,0.423,0.435,0.576,0.587,0.587,0.587,0.587,0.586,0.579,0.558,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55],"zones":[{"id":"garten","label":"Garten Kellenberger","polygon":[[-20.9,-6.6],[3,-6.6],[3,5.95],[-20.9,5.95]]},{"id":"zufahrt","label":"Feuerwehrzufahrt / Schotterwiese West","polygon":[[-26,-9],[-20.9,-9],[-20.9,6.5],[-26,6.5]]},{"id":"zollet","label":"Nachbargarten Zollet","polygon":[[-24,-14.5],[3,-14.5],[3,-6.6],[-24,-6.6]]},{"id":"sued","label":"Nachbargrundstück Süd","polygon":[[-22,5.95],[6,5.95],[6,12],[-22,12]]},{"id":"ost","label":"Wiese Ost","polygon":[[3,-6.6],[9,-6.6],[9,5.95],[3,5.95]]}],"spots":[{"x":-14.174,"z":-7.683,"y":-1.77,"zone":"zollet"},{"x":-22.166,"z":-7.211,"y":-2.08,"zone":"zufahrt"},{"x":-22.139,"z":5.248,"y":-0.14,"zone":"zufahrt"},{"x":2.948,"z":-7.035,"y":-1.57,"zone":"zollet"},{"x":3.073,"z":-3.825,"y":-0.37,"zone":"ost"},{"x":2.586,"z":-1.113,"y":-0.03,"zone":"garten"},{"x":2.561,"z":0.323,"y":-0.03,"zone":"garten"},{"x":1.7,"z":0.131,"y":-0.03,"zone":"garten"},{"x":2.56,"z":4.31,"y":0.63,"zone":"garten"},{"x":-1.638,"z":3.488,"y":-0.04,"zone":"garten"},{"x":-14.035,"z":3.548,"y":-0.04,"zone":"garten"},{"x":-22.121,"z":1.996,"y":-0.28,"zone":"zufahrt"},{"x":-22.457,"z":0.119,"y":-1.08,"zone":"zufahrt"},{"x":-14.741,"z":-4.532,"y":-0.07,"zone":"garten"},{"x":-14.438,"z":1.353,"y":-0.02,"zone":"garten"},{"x":-14.874,"z":-0.78,"y":-0.02,"zone":"garten"},{"x":-15.545,"z":-1.39,"y":-0.17,"zone":"garten"},{"x":-15.772,"z":-0.831,"y":-0.33,"zone":"garten"},{"x":-17.034,"z":0.729,"y":-0.02,"zone":"garten"},{"x":-22.139,"z":4.442,"y":-0.14,"zone":"zufahrt"},{"x":-14.343,"z":-6.206,"y":-0.28,"zone":"garten"},{"x":-21.559,"z":0.171,"y":-0.28,"zone":"zufahrt"},{"x":-19.494,"z":0.663,"y":-0.3,"zone":"garten"},{"x":-0.92,"z":3.682,"y":0.45,"zone":"garten"},{"x":-3.348,"z":3.191,"y":0.45,"zone":"garten"},{"x":-19.486,"z":-6.3,"y":-0.28,"zone":"garten"},{"x":-21.957,"z":2.65,"y":-0.14,"zone":"zufahrt"},{"x":-9.003,"z":3.661,"y":0.26,"zone":"garten"},{"x":-18.351,"z":3.669,"y":0.14,"zone":"garten"},{"x":-18.918,"z":3.639,"y":-0.04,"zone":"garten"},{"x":-21.417,"z":3.35,"y":-0.13,"zone":"zufahrt"},{"x":-21.041,"z":2.228,"y":-0.32,"zone":"zufahrt"},{"x":-9.137,"z":4.635,"y":0.32,"zone":"garten"},{"x":-14.444,"z":3.887,"y":0.14,"zone":"garten"},{"x":-18.28,"z":4.674,"y":-0.02,"zone":"garten"},{"x":-20.391,"z":3.754,"y":-0.04,"zone":"garten"},{"x":-15.135,"z":4.191,"y":0.09,"zone":"garten"},{"x":-0.282,"z":4.718,"y":0.63,"zone":"garten"},{"x":-14.378,"z":-7.312,"y":-1.35,"zone":"zollet"},{"x":-13.628,"z":4.014,"y":0.26,"zone":"garten"},{"x":-0.455,"z":1.522,"y":0,"zone":"garten"},{"x":1.896,"z":-6.003,"y":-0.72,"zone":"garten"},{"x":4.148,"z":-5.045,"y":-0.72,"zone":"ost"},{"x":1.703,"z":-2.727,"y":-0.02,"zone":"garten"},{"x":0.629,"z":-6.701,"y":-0.72,"zone":"zollet"},{"x":-24.5,"z":-8,"y":-2.6,"zone":"zufahrt"},{"x":-24.5,"z":0,"y":-1.6,"zone":"zufahrt"},{"x":-24.5,"z":5,"y":-0.6,"zone":"zufahrt"},{"x":-22.6,"z":5.5,"y":-0.3,"zone":"zufahrt"},{"x":-20,"z":-12.5,"y":-1.75,"zone":"zollet"},{"x":-8,"z":-12.5,"y":-1.7,"zone":"zollet"},{"x":2,"z":-11.5,"y":-1.65,"zone":"zollet"},{"x":-18,"z":9,"y":-0.4,"zone":"sued"},{"x":-6,"z":9,"y":0.1,"zone":"sued"},{"x":4,"z":9,"y":0.6,"zone":"sued"},{"x":7.5,"z":-5,"y":0.1,"zone":"ost"},{"x":7.5,"z":0,"y":0.45,"zone":"ost"},{"x":7.5,"z":5,"y":0.8,"zone":"ost"}]},"surfaces":[{"type":"tegula","area":53.9,"polygon":[[-25.6,-9],[-22.1,-9],[-22.1,6.4],[-25.6,6.4]],"note":"Feuerwehrzufahrt und Zugangsweg, Tegula-Pflastersteine grau"},{"type":"travertin80","area":33.41,"polygon":[[-16.241,-0.244],[-16.241,0.556],[-18.641,0.555],[-18.642,3.755],[-20.655,3.754],[-20.654,2.154],[-19.441,2.155],[-19.439,-5.845],[-13.839,-5.844],[-13.839,-4.244],[-14.639,-4.244],[-14.64,-3.085],[-15.276,-3.085],[-15.277,-0.244]]},{"type":"travertin4060","area":24.25,"polygon":[[-13.932,0.556],[-13.932,0.506],[-13.821,0.506],[-13.821,0.956],[0.276,0.961],[0.275,0.524],[2.123,0.511],[2.124,1.801],[-4.574,1.799],[-4.575,3.949],[-8.715,3.948],[-8.714,1.798],[-14.725,1.796],[-14.725,0.956],[-14.745,0.956],[-14.745,0.556]]},{"type":"rasen","area":21.35,"polygon":[[-18.242,3.745],[-18.241,0.955],[-14.745,0.956],[-14.745,1.816],[-8.734,1.818],[-8.735,3.748]]},{"type":"keramik","area":20.38,"polygon":[[-13.93,-3.06],[-8.73,-3.06],[-8.73,0.86],[-13.93,0.86]],"note":"Gedeckter Sitzplatz 14.4 m2, Keramikplatten 60x60x2 cm"},{"type":"travertin4060","area":18.35,"polygon":[[-18.642,3.755],[-18.642,3.945],[-20.655,3.944],[-20.655,4.404],[-21.652,4.404],[-21.649,0.611],[-20.618,0.596],[-20.078,-6.622],[-20.078,-6.322],[-13.819,-6.32],[-13.703,-5.844],[-18.639,-5.845],[-18.639,-5.045],[-19.439,-5.045],[-19.441,2.155]]},{"type":"schotterwiese","area":14.14,"polygon":[[-21.74,0.521],[-21.737,-10.773],[-21.737,-10.773],[-20.012,-8.667],[-20.088,-7.67],[-20.287,-7.685],[-20.302,-7.486],[-20.462,-7.498],[-20.523,-6.7],[-20.164,-6.673],[-20.71,0.507]]},{"type":"travertin4060","area":13.9,"polygon":[[-20.013,-7.465],[-18.77,-7.472],[-18.768,-9.575],[-14.568,-9.573],[-14.567,-11.961],[-13.967,-11.973],[-13.968,-7.173],[-18.168,-7.174],[-18.169,-6.872],[-20.059,-6.865]]},{"type":"rasen","area":13.76,"polygon":[[-19.401,-7.468],[-19,-12.703],[-14.567,-11.961],[-14.568,-9.573],[-18.768,-9.575],[-18.77,-7.472]]},{"type":"keramik","area":12.86,"polygon":[[2.115,-4.483],[2.123,0.511],[-0.874,0.51],[-0.873,-2.672],[0.277,-2.672],[0.278,-4.484]]},{"type":"spielsand","area":6.89,"polygon":[[-0.944,1.82],[-0.945,1.9],[-0.845,1.9],[-0.844,1.8],[-0.144,1.801],[-0.145,3.951],[-3.375,3.95],[-3.374,1.82]]},{"type":"travertinstell","area":4.74,"polygon":[[-20.595,4.404],[-20.595,4.004],[-8.735,4.008],[-8.735,4.408]]},{"type":"beet","area":3.51,"polygon":[[0.856,1.861],[2.184,1.861],[2.183,4.501],[0.855,4.501]]},{"type":"verbundstein","area":3.5,"polygon":[[2.518,-4.183],[2.535,-3.343],[2.814,-0.367],[2.861,1.913],[2.183,2.324],[2.183,0.511],[2.123,0.511],[2.119,-1.032],[2.179,-1.032],[2.176,-4.183]]},{"type":"beet","area":2.72,"polygon":[[2.175,-4.543],[0.497,-4.544],[0.494,-5.532],[0.497,-6.278],[1.922,-6.272],[1.919,-5.533],[2.174,-5.533]]},{"type":"travertin80","area":2.63,"polygon":[[-14.74,-2.69],[-13.93,-2.69],[-13.93,0.56],[-14.74,0.56]],"note":"Schwebende Stufe Travertin, obere Tritthoehe -0.17"},{"type":"travertin80","area":2.56,"polygon":[[-15.28,-3.08],[-14.48,-3.08],[-14.48,0.12],[-15.28,0.12]],"note":"Schwebende Stufe Travertin, untere Tritthoehe -0.33"},{"type":"travertin80","area":1.9,"polygon":[[-8.735,3.748],[-8.735,3.948],[-18.242,3.945],[-18.242,3.745]]},{"type":"beet","area":1.89,"polygon":[[-4.554,1.819],[-3.394,1.82],[-3.395,3.45],[-4.555,3.449]]},{"type":"travertin80","area":1.27,"polygon":[[-21.45,2.15],[-20.65,2.15],[-20.66,3.75],[-21.45,3.75]],"note":"Schwebende Stufen beim Gartentor an der Suedwestecke"},{"type":"travertinstell","area":1.25,"polygon":[[-0.145,4.011],[-0.145,4.411],[-3.273,4.41],[-3.273,4.01]]},{"type":"travertin4060","area":1.21,"polygon":[[-13.819,-4.244],[-13.82,-2.694],[-14.477,-2.694],[-14.476,-3.084],[-14.64,-3.085],[-14.639,-4.244]]},{"type":"beet","area":1.07,"polygon":[[-4.515,3.509],[-3.435,3.51],[-3.435,4.01],[-3.273,4.01],[-3.273,4.41],[-4.575,4.409],[-4.575,3.949],[-4.545,3.949]]},{"type":"travertin4060","area":1.01,"polygon":[[-15.277,-0.244],[-15.277,0.115],[-14.745,0.115],[-14.745,0.556],[-16.241,0.556],[-16.241,-0.244]]},{"type":"beet","area":0.98,"polygon":[[2.172,-7.039],[2.173,-6.523],[0.278,-6.521],[0.278,-7.037]]},{"type":"tegula","area":0.69,"polygon":[[-4.575,3.949],[-4.575,4.409],[-6.075,4.409],[-6.075,3.949]]},{"type":"tegula","area":0.69,"polygon":[[-7.235,3.948],[-7.235,4.408],[-8.735,4.408],[-8.735,3.948]]},{"type":"travertinstell","area":0.66,"polygon":[[1.922,-6.272],[0.277,-6.278],[0.278,-6.528],[2.173,-6.523],[2.174,-5.533],[1.924,-5.532]]},{"type":"keramik","area":0.49,"polygon":[[-6.956,2.474],[-6.256,2.474],[-6.256,3.174],[-6.956,3.174]]},{"type":"travertin4060","area":0.47,"polygon":[[-18.169,-6.872],[-18.169,-6.622],[-20.078,-6.622],[-20.059,-6.865]]},{"type":"travertinstell","area":0.46,"polygon":[[-6.075,4.009],[-6.075,4.409],[-7.235,4.408],[-7.235,4.008]]}],"plants":[{"type":"eibe","x":-15.527,"z":-6.098,"r":0.2},{"type":"eibe","x":-15.928,"z":-6.098,"r":0.2},{"type":"eibe","x":-14.727,"z":-6.099,"r":0.2},{"type":"eibe","x":-15.127,"z":-6.099,"r":0.2},{"type":"eibe","x":-13.923,"z":-6.1,"r":0.2},{"type":"eibe","x":-14.324,"z":-6.1,"r":0.2},{"type":"eibe","x":-6.275,"z":4.209,"r":0.2},{"type":"eibe","x":-7.035,"z":4.208,"r":0.2},{"type":"eibe","x":-6.655,"z":4.209,"r":0.2},{"type":"eibe","x":-8.934,"z":4.208,"r":0.2},{"type":"eibe","x":-9.694,"z":4.208,"r":0.2},{"type":"eibe","x":-9.314,"z":4.208,"r":0.2},{"type":"eibe","x":-11.583,"z":4.207,"r":0.2},{"type":"eibe","x":-12.343,"z":4.207,"r":0.2},{"type":"eibe","x":-11.963,"z":4.207,"r":0.2},{"type":"eibe","x":-14.241,"z":4.209,"r":0.2},{"type":"eibe","x":-15.001,"z":4.208,"r":0.2},{"type":"eibe","x":-14.621,"z":4.208,"r":0.2},{"type":"eibe","x":-2.512,"z":4.21,"r":0.2},{"type":"eibe","x":-3.272,"z":4.21,"r":0.2},{"type":"eibe","x":-2.892,"z":4.21,"r":0.2},{"type":"eibe","x":-2.132,"z":4.21,"r":0.2},{"type":"eibe","x":-20.636,"z":0.895,"r":0.2},{"type":"eibe","x":-21.395,"z":0.894,"r":0.2},{"type":"eibe","x":-21.015,"z":0.894,"r":0.2},{"type":"eibe","x":-20.201,"z":-1.769,"r":0.2},{"type":"eibe","x":-20.268,"z":-0.976,"r":0.2},{"type":"eibe","x":-20.235,"z":-1.371,"r":0.2},{"type":"eibe","x":-20.101,"z":-2.961,"r":0.2},{"type":"eibe","x":-20.168,"z":-2.168,"r":0.2},{"type":"eibe","x":-20.134,"z":-2.563,"r":0.2},{"type":"eibe","x":-19.87,"z":-5.693,"r":0.2},{"type":"eibe","x":-19.937,"z":-4.901,"r":0.2},{"type":"eibe","x":-19.903,"z":-5.295,"r":0.2},{"type":"eibe","x":-19.435,"z":-6.093,"r":0.2},{"type":"eibe","x":-19.836,"z":-6.092,"r":0.2},{"type":"eibe","x":-18.635,"z":-6.094,"r":0.2},{"type":"eibe","x":-17.831,"z":-6.095,"r":0.2},{"type":"eibe","x":-18.232,"z":-6.095,"r":0.2},{"type":"eibe","x":-21.296,"z":4.157,"r":0.2},{"type":"eibe","x":-20.892,"z":4.17,"r":0.2},{"type":"eibe","x":-17.6,"z":4.201,"r":0.2},{"type":"eibe","x":-18.36,"z":4.2,"r":0.2},{"type":"eibe","x":-17.98,"z":4.2,"r":0.2},{"type":"eibe","x":-15.355,"z":4.198,"r":0.2},{"type":"eibe","x":-15.736,"z":4.198,"r":0.2},{"type":"eibe","x":-20.325,"z":4.195,"r":0.2},{"type":"kraut","x":-16.571,"z":-5.965,"r":0.11},{"type":"kraut","x":-17.268,"z":-5.96,"r":0.11},{"type":"kraut","x":-19.867,"z":-4.231,"r":0.17},{"type":"kraut","x":-20.221,"z":0.343,"r":0.17},{"type":"kraut","x":-19.2,"z":4.113,"r":0.1},{"type":"kraut","x":-19.857,"z":4.15,"r":0.12},{"type":"kraut","x":-11.021,"z":4.152,"r":0.13},{"type":"kraut","x":-16.336,"z":4.143,"r":0.13},{"type":"kraut","x":-12.957,"z":4.146,"r":0.13},{"type":"kraut","x":-14.97,"z":0.342,"r":0.22},{"type":"kraut","x":-3.526,"z":1.962,"r":0.15},{"type":"kraut","x":-3.961,"z":1.996,"r":0.16},{"type":"kraut","x":-3.639,"z":2.382,"r":0.09},{"type":"kraut","x":-4.159,"z":2.454,"r":0.24},{"type":"kraut","x":-3.619,"z":2.784,"r":0.16},{"type":"kraut","x":-4.388,"z":1.95,"r":0.09},{"type":"kraut","x":-4.299,"z":3.025,"r":0.22},{"type":"kraut","x":-3.852,"z":3.072,"r":0.09},{"type":"solitaer","x":1.521,"z":2.316,"r":0.35},{"type":"strauch","x":1.691,"z":3.207,"r":0.37},{"type":"solitaer","x":0.881,"z":-5.85,"r":0.35},{"type":"strauch","x":1.125,"z":-4.918,"r":0.37},{"type":"solitaer","x":1.578,"z":-5.509,"r":0.35},{"type":"solitaer","x":1.842,"z":-6.789,"r":0.21},{"type":"kraut","x":0.69,"z":-6.797,"r":0.21},{"type":"eibe","x":1.325,"z":-6.793,"r":0.21},{"type":"hecke","kind":"liguster","height":1.7,"width":0.75,"polygon":[[-20.013,-7.465],[-19.401,-7.468],[-19,-12.703],[-19.587,-13.027]]}],"trees":[{"name":"Solitärgehölz Sitzplatz Süd","x":-17.5,"z":1.6,"crown":1.34,"height":4.6,"species":"parrotia"},{"name":"Solitärgehölz Terrasse NW","x":-19.1,"z":-5.5,"crown":0.67,"height":3.2,"species":"parrotia"},{"name":"Solitärgehölz Flammengrill","x":-4,"z":3.9,"crown":0.63,"height":3,"species":"parrotia"},{"name":"Apfelbaum","x":1.69,"z":4.05,"crown":0.9,"height":3.4,"species":"apfel"},{"name":"Solitärgehölz Zollet","x":-17.6,"z":-10.2,"crown":1.34,"height":4.6,"species":"parrotia","neighbour":true}],"lamps":[{"x":4.073,"z":-6.866,"kind":"poller"},{"x":4.079,"z":-0.185,"kind":"poller"},{"x":4.084,"z":4.632,"kind":"poller"},{"x":-3.045,"z":4.6,"kind":"poller"},{"x":-12.371,"z":4.597,"kind":"poller"},{"x":-20.195,"z":-7.578,"kind":"poller"},{"x":-16.865,"z":-6.051,"kind":"boden"},{"x":-18.897,"z":-5.263,"kind":"boden"},{"x":-17.562,"z":1.356,"kind":"boden"},{"x":-20.311,"z":-0.029,"kind":"boden"},{"x":-19.937,"z":-3.924,"kind":"boden"},{"x":-16.682,"z":4.117,"kind":"boden"},{"x":-1.249,"z":4.105,"kind":"boden"},{"x":-19.444,"z":4.101,"kind":"boden"},{"x":-19.137,"z":-6.771,"kind":"boden"},{"x":-16.03,"z":-6.72,"kind":"boden"},{"x":-17.463,"z":-10.093,"kind":"boden"}],"walls":[{"id":"travertinmauer-nord","type":"travertin","note":"Travertinmauer an der Grenze zum Nachbargrundstueck Zollet, stuetzt rund 1.5 m ab","path":[[-18.17,-6.895],[-13.82,-6.895]],"t":0.55,"top":-0.3,"base":-1.9},{"id":"sitzmauer-nord","type":"travertin","note":"Sitzmauer 25 cm ueber der Travertinmauer (gelbe Kote \"25\" im Plan)","path":[[-20.08,-6.47],[-13.82,-6.47]],"t":0.3,"top":-0.03,"base":-0.45},{"id":"winkelelemente-west","type":"beton","note":"Winkelelemente aus Beton entlang der Westgrenze, stuetzen den Garten ueber der Feuerwehrzufahrt","path":[[-20.12,-6.62],[-20.66,0.51],[-21.7,0.52],[-21.7,2.37]],"t":0.22,"top":null,"base":null,"retains":"west","crestProfile":[-0.607,-0.151,-0.091,-0.082,-0.084,-0.089,-0.094,-0.099,-0.104,-0.11,-0.115,-0.12,-0.125,-0.126,-0.128,-0.13,-0.131,-0.133,-0.139,-0.157,-0.16,-0.139,-0.139,-0.135,-0.119],"footProfile":[-2.232,-2.163,-2.189,-2.191,-2.141,-1.982,-1.747,-1.485,-1.261,-1.1,-0.997,-0.932,-0.883,-0.836,-0.786,-0.755,-0.763,-0.745,-0.622,-0.712,-1.229,-1.228,-1.228,-1.228,-1.228]},{"id":"travertinsitzmauer-west","type":"travertin","note":"Travertinsitzmauer als Abschluss des Hauptsitzplatzes gegen den Rasen","path":[[-18.64,0.755],[-14.73,0.755]],"t":0.41,"top":0.4,"base":-0.45,"seating":true},{"id":"travertinsitzmauer-sued","type":"travertin","note":"Schenkel der Travertinsitzmauer laengs des Rasens","path":[[-18.44,0.55],[-18.44,3.94]],"t":0.4,"top":0.4,"base":-0.4,"seating":true},{"id":"betonmauer-nachbar","type":"beton","note":"Bestehende Betonmauer des Suednachbarn entlang der Grenze","path":[[-17.41,6.07],[1.99,6.07]],"t":0.2,"top":1.1,"base":-0.6},{"id":"betonmauer-nachbar-ost","type":"beton","note":"Rueckspringender Schenkel der Nachbarmauer","path":[[2.09,6.07],[2.09,9.05]],"t":0.2,"top":1.1,"base":-0.6},{"id":"holzscheiterwand","type":"holzscheiter","note":"Holzscheiterwand 150 x 200 cm hinter dem Flammengrill","path":[[-5.75,4.35],[-4.25,4.35]],"t":0.45,"top":1.75,"base":0.26},{"id":"lamellenwand","type":"lamellen","note":"Lamellenwand zum Sitzen: senkrechte Holzlamellen am gedeckten Sitzplatz","path":[[-13.26,0.91],[-8.73,0.91]],"t":0.34,"top":2.72,"base":-0.05,"openSlats":true}],"props":[{"id":"gartenhaus","type":"gartenhaus","x":1.2,"z":-3.6,"w":1.8,"d":1.8,"h":2.15,"rot":0,"note":"Standort Gartenhaus 1,8 x 1,8 m"},{"id":"spielhaus","type":"spielhaus","x":0,"z":3.15,"w":1.8,"d":2.7,"h":2.3,"rot":0,"note":"Spielhaus durch Zimmermann, Podest auf 1.47"},{"id":"flammengrill","type":"flammengrill","x":-6.95,"z":2.45,"w":0.7,"d":0.7,"h":0.85,"rot":0,"note":"Flammengrill im Dekorkiesfeld"},{"id":"baenkli","type":"bank","x":-20.62,"z":1.42,"w":0.5,"d":1.5,"h":0.45,"rot":90,"note":"Baenkli aus Travertin"},{"id":"maehroboter","type":"roboter","x":-17.87,"z":3.72,"w":0.75,"d":0.55,"h":0.4,"rot":0,"note":"Garage Maehroboter"},{"id":"wasserhahn","type":"wasserhahn","x":-13.9,"z":-4.6,"w":0.12,"d":0.12,"h":0.85,"rot":0},{"id":"schlaufschacht","type":"schacht","x":-14.35,"z":-3.95,"w":0.3,"d":0.3,"h":0.02,"rot":0,"note":"Schlaufschacht D = 30 cm"},{"id":"gartentor","type":"tor","x":-21.6,"z":3.3,"w":1,"d":0.06,"h":1.1,"rot":0}],"stelen":[{"x":-19.55,"z":-3.1,"h":0.9},{"x":-19.3,"z":-2.3,"h":1.15},{"x":-19.05,"z":-1.55,"h":0.75},{"x":-13.3,"z":4.45,"h":1.05},{"x":-12.6,"z":4.45,"h":0.8},{"x":-10.3,"z":4.6,"h":1.1},{"x":-9.6,"z":4.6,"h":0.85},{"x":-1.3,"z":4.55,"h":1},{"x":-0.6,"z":4.55,"h":0.75}],"building":{"id":"haus-9a","name":"Haus 9a - Jeanine und Damian Kellenberger","floorLevel":0,"upperLevel":2.9,"roofLevel":6.15,"parapet":0.35,"outline":[[-13.82,-6.87],[0.28,-6.87],[0.28,0.96],[-13.82,0.96]],"loggia":{"x0":-13.82,"z0":-3.06,"x1":-9.06,"z1":0.96,"ceiling":2.75},"canopy":{"a":-3.2,"b":0.28,"depth":1.35,"y":2.6,"thickness":0.16},"openings":[{"face":"south","a":-4.4,"b":-0.2,"sill":0,"head":2.45,"kind":"glass"},{"face":"south","a":-12.9,"b":-9.4,"sill":0,"head":2.45,"kind":"glass"},{"face":"south","a":-3.9,"b":-0.6,"sill":3.35,"head":5,"kind":"glass","upper":true},{"face":"south","a":-12.6,"b":-9.7,"sill":3.35,"head":5,"kind":"glass","upper":true},{"face":"west","a":-5.84,"b":-4.24,"sill":0.85,"head":2.35,"kind":"window"},{"face":"west","a":-5.6,"b":-4.5,"sill":3.75,"head":5,"kind":"window","upper":true},{"face":"north","a":-1.9,"b":-0.9,"sill":0,"head":2.35,"kind":"door"},{"face":"north","a":-5.6,"b":-3.9,"sill":0.9,"head":2.35,"kind":"window"},{"face":"north","a":-11.6,"b":-10.2,"sill":0.9,"head":2.35,"kind":"slats"},{"face":"north","a":-5.4,"b":-4.1,"sill":3.75,"head":5.1,"kind":"window","upper":true},{"face":"north","a":-11.4,"b":-10.4,"sill":3.75,"head":5.1,"kind":"slats","upper":true},{"face":"east","a":-5.6,"b":-4.3,"sill":0.9,"head":2.35,"kind":"window"}]},"neighbourBuildings":[{"id":"haus-9","name":"Haus 9 - Sharon und Alan Zollet","outline":[[-15.6,-13.6],[-1.2,-13.6],[-1.2,-6.87],[-15.6,-6.87]],"floorLevel":-1.7,"roofLevel":4.45}],"startViews":[{"id":"sitzplatz","label":"Hauptsitzplatz","x":-18.6,"z":-2.6,"yaw":135,"note":"Travertinplatten 80x80x3 cm, Blick über den Sitzplatz gegen den Rasen"},{"id":"gedeckt","label":"Gedeckter Sitzplatz","x":-11,"z":-1.2,"yaw":215,"note":"Keramikplatten unter dem Obergeschoss, hinter der Lamellenwand"},{"id":"rasen","label":"Rasen Süd","x":-13,"z":2.8,"yaw":75,"note":"Blick der Südfassade entlang zum Spielbereich"},{"id":"grill","label":"Flammengrill","x":-7.8,"z":2.6,"yaw":110,"note":"Dekorkiesfeld mit Flammengrill und Holzscheiterwand"},{"id":"spielplatz","label":"Spielbereich","x":-3.4,"z":1.4,"yaw":150,"note":"Spielsand, Spielhaus und Apfelbaum"},{"id":"eingang","label":"Hauseingang","x":1.3,"z":-1.8,"yaw":250,"note":"Keramikplatten beim Fixpunkt 0.00"}]} \ No newline at end of file +{"meta":{"source":"Gartenplan 1 Jasmin und Damian Kellenberger.pdf","scale":"1:100","ptToM":0.035277777777777776,"gridAngleDeg":-28.8385,"northBearingOfSiteX":61.1615,"originLabel":"0.00 Fixpunkt","originAbsoluteMasl":651.17,"note":"X = Hausachse ENE, Z = SSE, Ursprung = Fixpunkt 0.00 beim Eingang","generated":"2026-09-09","location":{"name":"Egglihaldenstrasse 9a, 9030 Abtwil SG","lat":47.4206,"lon":9.2903,"northBearingOfSiteX":61.1615,"groundMasl":651.17},"plan":"Gartenplan 1, Garten Design AG, 14.08.2026, Massstab 1:100","architecture":"Haus 9a, EHLE Architekten AG, Projektplaene 27.04.2021"},"terrain":{"grid":{"x0":-26,"z0":-14.5,"cell":0.25,"nx":141,"nz":107},"heights":[-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.742,-1.743,-1.744,-1.745,-1.745,-1.746,-1.747,-1.747,-1.748,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.748,-1.747,-1.746,-1.745,-1.744,-1.742,-1.739,-1.735,-1.731,-1.726,-1.72,-1.714,-1.707,-1.7,-1.693,-1.686,-1.679,-1.673,-1.668,-1.664,-1.662,-1.66,-1.659,-1.66,-1.661,-1.664,-1.666,-1.67,-1.673,-1.677,-1.681,-1.684,-1.687,-1.689,-1.692,-1.693,-1.695,-1.696,-1.697,-1.697,-1.698,-1.698,-1.698,-1.699,-1.699,-1.698,-1.698,-1.698,-1.697,-1.697,-1.696,-1.694,-1.692,-1.69,-1.686,-1.682,-1.677,-1.67,-1.662,-1.653,-1.643,-1.631,-1.62,-1.609,-1.599,-1.591,-1.585,-1.581,-1.58,-1.58,-1.583,-1.587,-1.591,-1.596,-1.601,-1.607,-1.611,-1.615,-1.619,-1.622,-1.625,-1.627,-1.629,-1.63,-1.63,-1.63,-1.63,-1.629,-1.7,-1.7,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.222,-1.328,-1.614,-1.721,-1.742,-1.745,-1.746,-1.746,-1.747,-1.748,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.748,-1.747,-1.746,-1.744,-1.742,-1.739,-1.736,-1.731,-1.726,-1.72,-1.713,-1.706,-1.698,-1.691,-1.684,-1.677,-1.671,-1.666,-1.662,-1.659,-1.658,-1.657,-1.658,-1.66,-1.662,-1.665,-1.669,-1.673,-1.677,-1.681,-1.684,-1.687,-1.69,-1.692,-1.694,-1.695,-1.696,-1.697,-1.698,-1.698,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.698,-1.698,-1.697,-1.696,-1.695,-1.693,-1.691,-1.687,-1.683,-1.678,-1.671,-1.662,-1.653,-1.642,-1.63,-1.619,-1.607,-1.597,-1.589,-1.583,-1.579,-1.578,-1.58,-1.583,-1.587,-1.592,-1.598,-1.604,-1.609,-1.614,-1.619,-1.623,-1.626,-1.628,-1.631,-1.632,-1.633,-1.634,-1.634,-1.629,-1.544,-1.173,-0.497,0.373,0.537,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.347,-1.596,-1.718,-1.743,-1.745,-1.746,-1.747,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.749,-1.749,-1.749,-1.749,-1.748,-1.748,-1.746,-1.745,-1.743,-1.74,-1.736,-1.732,-1.726,-1.72,-1.712,-1.705,-1.697,-1.689,-1.681,-1.674,-1.668,-1.663,-1.659,-1.656,-1.655,-1.655,-1.656,-1.658,-1.66,-1.664,-1.668,-1.672,-1.676,-1.681,-1.684,-1.688,-1.69,-1.693,-1.695,-1.696,-1.697,-1.698,-1.698,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.698,-1.697,-1.696,-1.694,-1.692,-1.689,-1.684,-1.679,-1.672,-1.663,-1.653,-1.642,-1.629,-1.617,-1.605,-1.594,-1.586,-1.58,-1.577,-1.576,-1.578,-1.582,-1.587,-1.593,-1.6,-1.606,-1.612,-1.617,-1.622,-1.626,-1.629,-1.632,-1.634,-1.635,-1.636,-1.637,-1.637,-1.613,-1.411,-0.784,-0.005,0.452,0.543,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.718,-1.743,-1.746,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.749,-1.748,-1.747,-1.745,-1.743,-1.74,-1.736,-1.732,-1.726,-1.719,-1.711,-1.703,-1.694,-1.686,-1.678,-1.671,-1.664,-1.659,-1.656,-1.653,-1.652,-1.652,-1.653,-1.655,-1.658,-1.662,-1.667,-1.671,-1.676,-1.68,-1.684,-1.688,-1.691,-1.693,-1.695,-1.696,-1.698,-1.698,-1.699,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.699,-1.699,-1.698,-1.697,-1.695,-1.693,-1.689,-1.685,-1.679,-1.672,-1.663,-1.653,-1.641,-1.628,-1.614,-1.602,-1.59,-1.582,-1.576,-1.573,-1.573,-1.576,-1.581,-1.587,-1.594,-1.601,-1.608,-1.614,-1.62,-1.625,-1.629,-1.633,-1.635,-1.637,-1.639,-1.639,-1.64,-1.634,-1.557,-1.177,-0.352,0.304,0.524,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.719,-1.743,-1.746,-1.747,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.747,-1.746,-1.744,-1.741,-1.736,-1.731,-1.725,-1.718,-1.709,-1.7,-1.691,-1.682,-1.674,-1.667,-1.66,-1.655,-1.652,-1.649,-1.648,-1.648,-1.65,-1.652,-1.656,-1.66,-1.665,-1.67,-1.675,-1.68,-1.684,-1.688,-1.691,-1.693,-1.695,-1.697,-1.698,-1.699,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.697,-1.696,-1.693,-1.69,-1.686,-1.68,-1.672,-1.663,-1.652,-1.639,-1.625,-1.611,-1.598,-1.586,-1.577,-1.571,-1.569,-1.57,-1.573,-1.579,-1.586,-1.594,-1.602,-1.609,-1.616,-1.622,-1.628,-1.632,-1.635,-1.638,-1.64,-1.641,-1.642,-1.643,-1.636,-1.54,-1.061,-0.116,0.428,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.719,-1.743,-1.746,-1.747,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.744,-1.74,-1.736,-1.731,-1.724,-1.716,-1.707,-1.697,-1.688,-1.678,-1.67,-1.662,-1.656,-1.651,-1.648,-1.645,-1.644,-1.645,-1.646,-1.649,-1.653,-1.657,-1.663,-1.668,-1.674,-1.679,-1.683,-1.688,-1.691,-1.694,-1.696,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.69,-1.686,-1.68,-1.672,-1.662,-1.65,-1.637,-1.622,-1.607,-1.593,-1.58,-1.571,-1.565,-1.564,-1.565,-1.57,-1.576,-1.585,-1.593,-1.602,-1.611,-1.618,-1.625,-1.63,-1.635,-1.638,-1.641,-1.642,-1.644,-1.644,-1.645,-1.638,-1.542,-1.043,-0.058,0.448,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.719,-1.743,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.744,-1.74,-1.735,-1.729,-1.722,-1.713,-1.703,-1.693,-1.683,-1.673,-1.665,-1.657,-1.651,-1.646,-1.643,-1.641,-1.64,-1.641,-1.643,-1.646,-1.65,-1.654,-1.66,-1.666,-1.672,-1.677,-1.683,-1.687,-1.691,-1.693,-1.696,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.691,-1.686,-1.68,-1.671,-1.661,-1.648,-1.633,-1.617,-1.601,-1.586,-1.574,-1.564,-1.559,-1.557,-1.56,-1.565,-1.573,-1.582,-1.592,-1.602,-1.611,-1.619,-1.626,-1.632,-1.637,-1.64,-1.643,-1.644,-1.646,-1.646,-1.646,-1.64,-1.544,-1.044,-0.052,0.448,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.719,-1.743,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.743,-1.739,-1.734,-1.727,-1.719,-1.709,-1.699,-1.688,-1.678,-1.668,-1.659,-1.652,-1.646,-1.641,-1.638,-1.637,-1.636,-1.637,-1.639,-1.642,-1.646,-1.651,-1.657,-1.663,-1.669,-1.676,-1.681,-1.686,-1.69,-1.693,-1.696,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.69,-1.685,-1.679,-1.67,-1.658,-1.645,-1.629,-1.612,-1.595,-1.579,-1.565,-1.556,-1.55,-1.55,-1.553,-1.559,-1.569,-1.579,-1.59,-1.601,-1.611,-1.62,-1.628,-1.634,-1.639,-1.642,-1.644,-1.646,-1.647,-1.648,-1.648,-1.641,-1.545,-1.045,-0.052,0.448,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.718,-1.743,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.747,-1.745,-1.742,-1.738,-1.732,-1.725,-1.715,-1.705,-1.694,-1.682,-1.671,-1.661,-1.653,-1.646,-1.64,-1.636,-1.634,-1.632,-1.632,-1.633,-1.635,-1.638,-1.642,-1.647,-1.653,-1.66,-1.667,-1.673,-1.679,-1.685,-1.689,-1.693,-1.695,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.69,-1.685,-1.677,-1.668,-1.655,-1.641,-1.624,-1.605,-1.587,-1.57,-1.556,-1.546,-1.54,-1.54,-1.544,-1.552,-1.562,-1.574,-1.587,-1.599,-1.61,-1.62,-1.628,-1.635,-1.64,-1.643,-1.646,-1.647,-1.648,-1.648,-1.649,-1.642,-1.546,-1.046,-0.052,0.447,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.718,-1.743,-1.745,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.748,-1.747,-1.745,-1.741,-1.736,-1.73,-1.721,-1.711,-1.699,-1.687,-1.675,-1.664,-1.654,-1.646,-1.64,-1.634,-1.629,-1.626,-1.625,-1.628,-1.629,-1.631,-1.634,-1.638,-1.643,-1.649,-1.656,-1.663,-1.67,-1.677,-1.683,-1.688,-1.692,-1.695,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.697,-1.696,-1.693,-1.689,-1.683,-1.675,-1.665,-1.651,-1.635,-1.617,-1.597,-1.577,-1.559,-1.544,-1.534,-1.529,-1.529,-1.534,-1.543,-1.555,-1.568,-1.582,-1.596,-1.608,-1.619,-1.628,-1.635,-1.641,-1.644,-1.647,-1.648,-1.649,-1.649,-1.649,-1.643,-1.546,-1.046,-0.053,0.447,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.349,-1.594,-1.718,-1.742,-1.745,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.748,-1.746,-1.743,-1.739,-1.733,-1.726,-1.716,-1.705,-1.692,-1.679,-1.667,-1.656,-1.647,-1.64,-1.633,-1.624,-1.609,-1.606,-1.607,-1.619,-1.625,-1.627,-1.63,-1.634,-1.639,-1.645,-1.652,-1.659,-1.667,-1.674,-1.68,-1.686,-1.69,-1.694,-1.696,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.698,-1.697,-1.695,-1.692,-1.687,-1.681,-1.672,-1.66,-1.646,-1.628,-1.608,-1.587,-1.565,-1.546,-1.53,-1.519,-1.514,-1.515,-1.521,-1.531,-1.544,-1.559,-1.575,-1.59,-1.605,-1.617,-1.627,-1.635,-1.641,-1.645,-1.647,-1.648,-1.649,-1.649,-1.649,-1.643,-1.547,-1.046,-0.053,0.447,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.348,-1.593,-1.717,-1.742,-1.745,-1.746,-1.746,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.748,-1.747,-1.745,-1.742,-1.737,-1.73,-1.721,-1.71,-1.697,-1.684,-1.671,-1.658,-1.648,-1.639,-1.633,-1.625,-1.607,-1.56,-1.56,-1.56,-1.604,-1.62,-1.624,-1.627,-1.63,-1.635,-1.64,-1.647,-1.655,-1.662,-1.67,-1.677,-1.683,-1.688,-1.692,-1.695,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.698,-1.696,-1.694,-1.69,-1.685,-1.678,-1.668,-1.655,-1.639,-1.619,-1.598,-1.574,-1.551,-1.531,-1.514,-1.503,-1.498,-1.498,-1.505,-1.516,-1.531,-1.547,-1.565,-1.582,-1.599,-1.613,-1.624,-1.634,-1.64,-1.644,-1.647,-1.648,-1.649,-1.649,-1.649,-1.643,-1.547,-1.046,-0.053,0.447,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.348,-1.593,-1.716,-1.741,-1.744,-1.745,-1.746,-1.747,-1.747,-1.748,-1.749,-1.749,-1.749,-1.749,-1.75,-1.75,-1.75,-1.75,-1.75,-1.749,-1.749,-1.749,-1.747,-1.746,-1.743,-1.739,-1.733,-1.724,-1.714,-1.701,-1.688,-1.674,-1.661,-1.649,-1.639,-1.632,-1.626,-1.62,-1.602,-1.56,-1.56,-1.56,-1.6,-1.617,-1.621,-1.624,-1.627,-1.631,-1.636,-1.642,-1.65,-1.658,-1.666,-1.673,-1.68,-1.686,-1.69,-1.693,-1.696,-1.697,-1.698,-1.699,-1.699,-1.7,-1.7,-1.7,-1.7,-1.699,-1.699,-1.699,-1.698,-1.697,-1.695,-1.692,-1.688,-1.682,-1.674,-1.663,-1.648,-1.63,-1.609,-1.585,-1.56,-1.535,-1.513,-1.495,-1.483,-1.477,-1.478,-1.485,-1.497,-1.513,-1.531,-1.551,-1.571,-1.589,-1.606,-1.62,-1.63,-1.638,-1.643,-1.647,-1.648,-1.649,-1.649,-1.649,-1.643,-1.547,-1.046,-0.053,0.447,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.348,-1.592,-1.716,-1.74,-1.743,-1.744,-1.745,-1.746,-1.747,-1.748,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.748,-1.746,-1.744,-1.74,-1.735,-1.727,-1.717,-1.705,-1.692,-1.677,-1.663,-1.65,-1.639,-1.631,-1.625,-1.621,-1.615,-1.599,-1.56,-1.56,-1.56,-1.599,-1.615,-1.619,-1.621,-1.624,-1.627,-1.632,-1.637,-1.644,-1.652,-1.66,-1.668,-1.676,-1.682,-1.687,-1.691,-1.694,-1.696,-1.697,-1.698,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.699,-1.698,-1.697,-1.696,-1.693,-1.69,-1.685,-1.678,-1.669,-1.656,-1.639,-1.619,-1.596,-1.57,-1.542,-1.516,-1.492,-1.473,-1.46,-1.454,-1.454,-1.461,-1.474,-1.491,-1.511,-1.532,-1.555,-1.576,-1.595,-1.612,-1.625,-1.635,-1.641,-1.645,-1.648,-1.649,-1.649,-1.649,-1.643,-1.546,-1.046,-0.053,0.447,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.348,-1.591,-1.714,-1.739,-1.742,-1.743,-1.744,-1.745,-1.746,-1.747,-1.747,-1.748,-1.748,-1.749,-1.749,-1.749,-1.749,-1.749,-1.748,-1.748,-1.747,-1.746,-1.744,-1.741,-1.736,-1.729,-1.72,-1.708,-1.695,-1.68,-1.665,-1.651,-1.639,-1.63,-1.623,-1.619,-1.616,-1.612,-1.597,-1.56,-1.56,-1.56,-1.599,-1.615,-1.618,-1.62,-1.622,-1.624,-1.628,-1.633,-1.639,-1.646,-1.654,-1.663,-1.671,-1.678,-1.684,-1.688,-1.692,-1.694,-1.696,-1.697,-1.698,-1.698,-1.699,-1.699,-1.699,-1.698,-1.698,-1.697,-1.696,-1.694,-1.691,-1.687,-1.681,-1.673,-1.662,-1.647,-1.629,-1.606,-1.58,-1.552,-1.522,-1.493,-1.468,-1.448,-1.433,-1.426,-1.426,-1.433,-1.445,-1.462,-1.483,-1.507,-1.532,-1.556,-1.579,-1.599,-1.615,-1.628,-1.637,-1.642,-1.646,-1.647,-1.648,-1.648,-1.642,-1.546,-1.045,-0.052,0.447,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.347,-1.59,-1.713,-1.738,-1.741,-1.742,-1.743,-1.744,-1.745,-1.746,-1.746,-1.747,-1.747,-1.748,-1.748,-1.748,-1.748,-1.748,-1.747,-1.746,-1.745,-1.743,-1.74,-1.736,-1.73,-1.721,-1.71,-1.697,-1.682,-1.667,-1.652,-1.639,-1.629,-1.621,-1.616,-1.613,-1.612,-1.609,-1.596,-1.56,-1.56,-1.56,-1.599,-1.615,-1.618,-1.619,-1.62,-1.622,-1.625,-1.629,-1.634,-1.64,-1.648,-1.656,-1.665,-1.672,-1.679,-1.684,-1.689,-1.692,-1.694,-1.695,-1.696,-1.697,-1.697,-1.697,-1.697,-1.697,-1.696,-1.695,-1.694,-1.691,-1.688,-1.683,-1.675,-1.666,-1.653,-1.636,-1.615,-1.59,-1.562,-1.531,-1.499,-1.468,-1.441,-1.419,-1.403,-1.395,-1.393,-1.399,-1.41,-1.427,-1.449,-1.473,-1.5,-1.528,-1.555,-1.579,-1.599,-1.616,-1.628,-1.636,-1.642,-1.645,-1.646,-1.647,-1.64,-1.544,-1.044,-0.052,0.448,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.347,-1.589,-1.712,-1.736,-1.739,-1.74,-1.742,-1.743,-1.744,-1.744,-1.745,-1.746,-1.746,-1.746,-1.746,-1.746,-1.746,-1.746,-1.745,-1.744,-1.742,-1.739,-1.735,-1.729,-1.722,-1.711,-1.698,-1.684,-1.668,-1.653,-1.639,-1.628,-1.619,-1.613,-1.61,-1.609,-1.609,-1.608,-1.595,-1.56,-1.56,-1.56,-1.6,-1.617,-1.62,-1.62,-1.62,-1.621,-1.623,-1.625,-1.629,-1.635,-1.641,-1.649,-1.658,-1.666,-1.673,-1.679,-1.684,-1.688,-1.691,-1.693,-1.694,-1.695,-1.696,-1.696,-1.696,-1.695,-1.694,-1.693,-1.691,-1.687,-1.683,-1.677,-1.668,-1.657,-1.642,-1.623,-1.6,-1.572,-1.54,-1.507,-1.472,-1.44,-1.41,-1.387,-1.369,-1.359,-1.355,-1.359,-1.369,-1.384,-1.405,-1.43,-1.458,-1.488,-1.519,-1.547,-1.573,-1.595,-1.612,-1.624,-1.633,-1.638,-1.641,-1.642,-1.636,-1.539,-1.04,-0.05,0.448,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.346,-1.588,-1.71,-1.734,-1.737,-1.739,-1.74,-1.741,-1.742,-1.742,-1.743,-1.744,-1.744,-1.744,-1.744,-1.744,-1.744,-1.743,-1.742,-1.74,-1.738,-1.734,-1.728,-1.72,-1.711,-1.699,-1.684,-1.669,-1.653,-1.638,-1.626,-1.617,-1.61,-1.606,-1.605,-1.606,-1.607,-1.607,-1.595,-1.56,-1.56,-1.56,-1.602,-1.619,-1.622,-1.622,-1.621,-1.621,-1.621,-1.623,-1.625,-1.629,-1.635,-1.642,-1.65,-1.659,-1.666,-1.673,-1.679,-1.684,-1.687,-1.689,-1.691,-1.692,-1.693,-1.693,-1.693,-1.692,-1.691,-1.689,-1.686,-1.682,-1.677,-1.669,-1.659,-1.646,-1.629,-1.607,-1.581,-1.55,-1.516,-1.48,-1.443,-1.408,-1.377,-1.351,-1.332,-1.319,-1.313,-1.314,-1.321,-1.334,-1.353,-1.376,-1.404,-1.435,-1.468,-1.501,-1.532,-1.56,-1.583,-1.601,-1.614,-1.623,-1.628,-1.631,-1.625,-1.529,-1.032,-0.047,0.448,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.202,-1.225,-1.346,-1.586,-1.708,-1.732,-1.735,-1.736,-1.737,-1.738,-1.739,-1.74,-1.741,-1.741,-1.742,-1.742,-1.742,-1.741,-1.741,-1.739,-1.738,-1.735,-1.731,-1.725,-1.713,-1.704,-1.693,-1.68,-1.665,-1.65,-1.636,-1.623,-1.612,-1.605,-1.601,-1.599,-1.599,-1.601,-1.604,-1.605,-1.594,-1.56,-1.56,-1.56,-1.605,-1.623,-1.625,-1.624,-1.623,-1.622,-1.621,-1.621,-1.622,-1.625,-1.629,-1.635,-1.643,-1.651,-1.659,-1.666,-1.672,-1.678,-1.682,-1.685,-1.687,-1.688,-1.689,-1.689,-1.689,-1.688,-1.687,-1.684,-1.681,-1.676,-1.669,-1.66,-1.648,-1.633,-1.613,-1.588,-1.559,-1.526,-1.489,-1.45,-1.411,-1.374,-1.341,-1.313,-1.291,-1.276,-1.267,-1.264,-1.267,-1.277,-1.291,-1.312,-1.337,-1.367,-1.4,-1.435,-1.471,-1.505,-1.535,-1.56,-1.58,-1.594,-1.603,-1.609,-1.605,-1.511,-1.018,-0.042,0.449,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.204,-1.2,-1.2,-1.2,-1.201,-1.224,-1.345,-1.582,-1.703,-1.728,-1.73,-1.732,-1.733,-1.734,-1.734,-1.739,-1.739,-1.739,-1.74,-1.739,-1.738,-1.737,-1.736,-1.734,-1.732,-1.728,-1.722,-1.705,-1.67,-1.658,-1.649,-1.639,-1.628,-1.618,-1.608,-1.599,-1.593,-1.588,-1.586,-1.586,-1.587,-1.589,-1.592,-1.592,-1.584,-1.56,-1.56,-1.56,-1.609,-1.628,-1.63,-1.628,-1.625,-1.623,-1.621,-1.62,-1.62,-1.621,-1.624,-1.629,-1.635,-1.643,-1.65,-1.658,-1.665,-1.671,-1.675,-1.679,-1.682,-1.683,-1.684,-1.685,-1.684,-1.683,-1.681,-1.678,-1.674,-1.668,-1.659,-1.649,-1.635,-1.617,-1.594,-1.567,-1.535,-1.498,-1.458,-1.417,-1.376,-1.337,-1.302,-1.273,-1.248,-1.23,-1.218,-1.211,-1.21,-1.214,-1.224,-1.239,-1.259,-1.285,-1.315,-1.35,-1.388,-1.426,-1.462,-1.495,-1.523,-1.545,-1.561,-1.572,-1.572,-1.482,-0.998,-0.034,0.45,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.243,-1.204,-1.195,-1.195,-1.196,-1.218,-1.333,-1.553,-1.669,-1.692,-1.695,-1.695,-1.695,-1.696,-1.703,-1.743,-1.754,-1.753,-1.753,-1.749,-1.737,-1.732,-1.73,-1.727,-1.724,-1.719,-1.707,-1.667,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.613,-1.634,-1.635,-1.632,-1.629,-1.625,-1.622,-1.619,-1.618,-1.618,-1.62,-1.623,-1.628,-1.635,-1.642,-1.649,-1.656,-1.662,-1.668,-1.672,-1.675,-1.677,-1.678,-1.678,-1.678,-1.676,-1.674,-1.67,-1.664,-1.657,-1.647,-1.635,-1.618,-1.598,-1.573,-1.542,-1.507,-1.468,-1.426,-1.383,-1.34,-1.299,-1.263,-1.231,-1.204,-1.183,-1.167,-1.156,-1.15,-1.149,-1.152,-1.161,-1.174,-1.194,-1.219,-1.249,-1.285,-1.324,-1.365,-1.405,-1.442,-1.474,-1.5,-1.52,-1.528,-1.445,-0.972,-0.025,0.452,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.414,-1.22,-1.174,-1.166,-1.164,-1.179,-1.258,-1.406,-1.486,-1.501,-1.5,-1.497,-1.494,-1.495,-1.532,-1.752,-1.833,-1.84,-1.835,-1.809,-1.755,-1.729,-1.723,-1.719,-1.714,-1.708,-1.695,-1.653,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.619,-1.641,-1.641,-1.637,-1.632,-1.627,-1.623,-1.619,-1.617,-1.616,-1.616,-1.618,-1.622,-1.627,-1.633,-1.64,-1.647,-1.653,-1.659,-1.663,-1.667,-1.669,-1.67,-1.671,-1.67,-1.668,-1.665,-1.66,-1.654,-1.645,-1.633,-1.619,-1.6,-1.577,-1.549,-1.516,-1.478,-1.436,-1.392,-1.347,-1.303,-1.261,-1.223,-1.189,-1.161,-1.137,-1.117,-1.102,-1.091,-1.085,-1.082,-1.083,-1.089,-1.1,-1.118,-1.142,-1.173,-1.21,-1.253,-1.299,-1.345,-1.39,-1.429,-1.462,-1.481,-1.409,-0.949,-0.016,0.454,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.571,-1.899,-1.117,-1.106,-1.095,-1.084,-1.073,-1.061,-1.05,-1.039,-1.028,-1.017,-1.006,-0.995,-0.984,-0.973,-1.714,-1.973,-2.012,-1.996,-1.928,-1.8,-1.732,-1.715,-1.709,-1.703,-1.696,-1.682,-1.643,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.625,-1.648,-1.648,-1.642,-1.635,-1.629,-1.623,-1.619,-1.615,-1.613,-1.613,-1.614,-1.616,-1.62,-1.626,-1.632,-1.638,-1.644,-1.65,-1.654,-1.658,-1.66,-1.661,-1.661,-1.66,-1.658,-1.654,-1.648,-1.641,-1.63,-1.617,-1.6,-1.579,-1.553,-1.522,-1.487,-1.446,-1.403,-1.357,-1.31,-1.265,-1.222,-1.183,-1.148,-1.118,-1.092,-1.069,-1.051,-1.036,-1.024,-1.015,-1.01,-1.009,-1.013,-1.023,-1.039,-1.063,-1.096,-1.139,-1.189,-1.246,-1.306,-1.362,-1.412,-1.445,-1.384,-0.934,-0.011,0.454,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.576,-2.069,-1.111,-1.1,-1.089,-1.078,-1.067,-1.056,-1.045,-1.034,-1.023,-1.012,-1.001,-0.989,-0.978,-0.967,-1.742,-2.046,-2.092,-2.074,-1.985,-1.816,-1.727,-1.705,-1.698,-1.691,-1.683,-1.668,-1.633,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.63,-1.655,-1.654,-1.646,-1.638,-1.63,-1.623,-1.618,-1.614,-1.611,-1.609,-1.609,-1.611,-1.614,-1.618,-1.624,-1.629,-1.635,-1.64,-1.644,-1.648,-1.65,-1.651,-1.651,-1.65,-1.647,-1.642,-1.635,-1.626,-1.614,-1.599,-1.58,-1.556,-1.528,-1.494,-1.456,-1.414,-1.369,-1.322,-1.274,-1.228,-1.185,-1.145,-1.109,-1.078,-1.05,-1.025,-1.004,-0.985,-0.969,-0.956,-0.946,-0.94,-0.937,-0.94,-0.949,-0.967,-0.995,-1.036,-1.09,-1.157,-1.233,-1.31,-1.379,-1.427,-1.376,-0.931,-0.011,0.454,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.579,-2.109,-1.105,-1.094,-1.083,-1.072,-1.061,-1.05,-1.039,-1.028,-1.017,-1.006,-0.995,-0.984,-0.973,-0.962,-1.742,-2.05,-2.098,-2.081,-1.99,-1.81,-1.716,-1.694,-1.686,-1.678,-1.669,-1.655,-1.623,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.633,-1.66,-1.658,-1.649,-1.639,-1.63,-1.622,-1.616,-1.612,-1.608,-1.606,-1.606,-1.606,-1.609,-1.612,-1.616,-1.621,-1.626,-1.63,-1.634,-1.638,-1.64,-1.641,-1.64,-1.638,-1.634,-1.628,-1.62,-1.61,-1.596,-1.579,-1.558,-1.532,-1.501,-1.466,-1.425,-1.382,-1.335,-1.287,-1.239,-1.193,-1.15,-1.11,-1.073,-1.04,-1.011,-0.985,-0.962,-0.941,-0.922,-0.906,-0.893,-0.883,-0.876,-0.873,-0.877,-0.889,-0.912,-0.949,-1.005,-1.082,-1.176,-1.275,-1.365,-1.427,-1.382,-0.938,-0.014,0.454,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.58,-2.112,-1.099,-1.088,-1.077,-1.066,-1.055,-1.044,-1.033,-1.022,-1.011,-1,-0.989,-0.978,-0.967,-0.956,-1.732,-2.04,-2.09,-2.075,-1.983,-1.801,-1.706,-1.683,-1.674,-1.665,-1.655,-1.641,-1.613,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.631,-1.658,-1.657,-1.648,-1.637,-1.628,-1.62,-1.614,-1.609,-1.605,-1.603,-1.602,-1.602,-1.603,-1.606,-1.609,-1.613,-1.617,-1.621,-1.625,-1.627,-1.629,-1.629,-1.628,-1.625,-1.621,-1.614,-1.605,-1.592,-1.577,-1.558,-1.534,-1.506,-1.474,-1.436,-1.394,-1.349,-1.302,-1.254,-1.206,-1.16,-1.117,-1.077,-1.04,-1.007,-0.977,-0.95,-0.926,-0.904,-0.884,-0.866,-0.851,-0.838,-0.828,-0.823,-0.823,-0.83,-0.847,-0.879,-0.934,-1.017,-1.128,-1.252,-1.363,-1.438,-1.397,-0.949,-0.018,0.453,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.58,-2.11,-1.093,-1.082,-1.071,-1.06,-1.049,-1.038,-1.027,-1.016,-1.005,-0.994,-0.983,-0.972,-0.961,-0.95,-1.724,-2.033,-2.084,-2.069,-1.977,-1.792,-1.695,-1.671,-1.662,-1.652,-1.642,-1.629,-1.604,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.622,-1.648,-1.65,-1.642,-1.632,-1.623,-1.615,-1.609,-1.605,-1.601,-1.599,-1.598,-1.598,-1.599,-1.6,-1.603,-1.606,-1.609,-1.613,-1.615,-1.617,-1.618,-1.618,-1.616,-1.612,-1.607,-1.599,-1.588,-1.574,-1.557,-1.536,-1.511,-1.481,-1.446,-1.407,-1.364,-1.318,-1.271,-1.223,-1.175,-1.13,-1.087,-1.048,-1.011,-0.978,-0.948,-0.921,-0.896,-0.873,-0.852,-0.834,-0.818,-0.805,-0.794,-0.787,-0.784,-0.787,-0.799,-0.825,-0.875,-0.96,-1.085,-1.233,-1.366,-1.452,-1.412,-0.96,-0.022,0.452,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.577,-2.106,-1.087,-1.076,-1.065,-1.054,-1.043,-1.032,-1.021,-1.01,-0.999,-0.988,-0.977,-0.966,-0.955,-0.944,-1.72,-2.029,-2.08,-2.066,-1.972,-1.783,-1.685,-1.659,-1.647,-1.638,-1.628,-1.616,-1.595,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.606,-1.63,-1.635,-1.631,-1.623,-1.615,-1.609,-1.604,-1.6,-1.597,-1.595,-1.594,-1.594,-1.594,-1.596,-1.597,-1.6,-1.602,-1.605,-1.607,-1.608,-1.608,-1.607,-1.604,-1.599,-1.593,-1.583,-1.571,-1.556,-1.537,-1.514,-1.487,-1.455,-1.419,-1.379,-1.335,-1.289,-1.242,-1.194,-1.147,-1.103,-1.061,-1.022,-0.986,-0.953,-0.924,-0.896,-0.872,-0.849,-0.828,-0.81,-0.794,-0.781,-0.77,-0.762,-0.758,-0.759,-0.766,-0.785,-0.827,-0.909,-1.043,-1.213,-1.369,-1.465,-1.425,-0.969,-0.025,0.452,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.572,-2.101,-1.081,-1.07,-1.059,-1.048,-1.037,-1.026,-1.015,-1.004,-0.993,-0.982,-0.971,-0.96,-0.949,-0.938,-1.716,-2.027,-2.079,-2.064,-1.968,-1.775,-1.674,-1.643,-1.62,-1.611,-1.604,-1.595,-1.582,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.588,-1.607,-1.615,-1.614,-1.61,-1.605,-1.601,-1.597,-1.594,-1.592,-1.591,-1.59,-1.59,-1.59,-1.591,-1.592,-1.594,-1.596,-1.597,-1.598,-1.599,-1.598,-1.596,-1.592,-1.587,-1.579,-1.568,-1.554,-1.538,-1.517,-1.493,-1.464,-1.431,-1.393,-1.352,-1.308,-1.262,-1.215,-1.168,-1.122,-1.079,-1.038,-1,-0.965,-0.933,-0.904,-0.877,-0.853,-0.83,-0.81,-0.793,-0.777,-0.764,-0.754,-0.747,-0.743,-0.742,-0.746,-0.759,-0.792,-0.866,-1.002,-1.189,-1.365,-1.472,-1.433,-0.973,-0.026,0.452,0.544,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-2.564,-2.094,-1.075,-1.064,-1.053,-1.042,-1.031,-1.02,-1.009,-0.998,-0.987,-0.976,-0.965,-0.954,-0.943,-0.932,-1.714,-2.025,-2.078,-2.062,-1.964,-1.764,-1.658,-1.616,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.563,-1.577,-1.587,-1.591,-1.591,-1.59,-1.588,-1.586,-1.584,-1.583,-1.582,-1.581,-1.581,-1.582,-1.582,-1.583,-1.585,-1.586,-1.586,-1.587,-1.586,-1.585,-1.581,-1.577,-1.57,-1.561,-1.549,-1.534,-1.516,-1.494,-1.468,-1.438,-1.403,-1.365,-1.324,-1.28,-1.234,-1.188,-1.142,-1.098,-1.056,-1.016,-0.979,-0.946,-0.915,-0.886,-0.861,-0.837,-0.816,-0.797,-0.78,-0.765,-0.753,-0.744,-0.737,-0.734,-0.733,-0.736,-0.745,-0.769,-0.833,-0.964,-1.16,-1.353,-1.47,-1.433,-0.972,-0.03,0.448,0.54,0.546,0.546,0.546,0.546,0.547,0.547,0.547,0.547,0.547,0.548,0.548,0.548,0.548,0.549,0.549,0.549,0.549,0.549,0.549,0.549,0.549,0.55,-2.551,-2.083,-1.069,-1.058,-1.047,-1.036,-1.025,-1.014,-1.003,-0.992,-0.981,-0.97,-0.959,-0.948,-0.937,-0.926,-1.712,-2.025,-2.077,-2.061,-1.949,-1.71,-1.591,-1.554,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.56,-1.497,-1.488,-1.484,-1.479,-1.475,-1.471,-1.466,-1.461,-1.456,-1.45,-1.443,-1.438,-1.437,-1.442,-1.451,-1.46,-1.469,-1.48,-1.495,-1.507,-1.515,-1.518,-1.52,-1.52,-1.519,-1.519,-1.518,-1.517,-1.517,-1.516,-1.516,-1.517,-1.517,-1.517,-1.517,-1.517,-1.516,-1.515,-1.512,-1.508,-1.502,-1.494,-1.484,-1.471,-1.456,-1.437,-1.415,-1.389,-1.359,-1.326,-1.289,-1.25,-1.208,-1.166,-1.123,-1.081,-1.041,-1.002,-0.967,-0.934,-0.904,-0.876,-0.851,-0.829,-0.808,-0.79,-0.774,-0.76,-0.749,-0.739,-0.733,-0.728,-0.726,-0.727,-0.731,-0.737,-0.756,-0.807,-0.925,-1.113,-1.306,-1.43,-1.395,-0.953,-0.064,0.396,0.487,0.493,0.493,0.493,0.493,0.494,0.496,0.498,0.503,0.508,0.514,0.519,0.523,0.525,0.527,0.527,0.528,0.528,0.528,0.528,0.528,0.532,0.55,-2.532,-2.068,-1.063,-1.052,-1.041,-1.03,-1.019,-1.008,-0.997,-0.986,-0.975,-0.964,-0.953,-0.942,-0.931,-0.92,-1.71,-2.024,-2.077,-2.048,-1.863,-1.48,-1.292,-1.252,-1.242,-1.237,-1.233,-1.229,-1.225,-1.221,-1.217,-1.212,-1.202,-1.195,-1.188,-1.181,-1.174,-1.167,-1.162,-1.157,-1.153,-1.147,-1.142,-1.137,-1.135,-1.139,-1.146,-1.155,-1.164,-1.177,-1.19,-1.2,-1.206,-1.209,-1.21,-1.209,-1.207,-1.205,-1.203,-1.2,-1.198,-1.196,-1.194,-1.192,-1.189,-1.187,-1.185,-1.182,-1.179,-1.175,-1.171,-1.165,-1.159,-1.151,-1.141,-1.13,-1.117,-1.101,-1.084,-1.064,-1.042,-1.017,-0.991,-0.963,-0.935,-0.906,-0.877,-0.85,-0.824,-0.801,-0.78,-0.762,-0.746,-0.732,-0.721,-0.712,-0.705,-0.7,-0.697,-0.695,-0.696,-0.697,-0.7,-0.704,-0.709,-0.716,-0.725,-0.731,-0.743,-0.776,-0.856,-0.987,-1.13,-1.248,-1.224,-0.886,-0.211,0.14,0.211,0.215,0.214,0.214,0.217,0.222,0.232,0.248,0.272,0.303,0.336,0.366,0.388,0.403,0.412,0.417,0.42,0.421,0.421,0.422,0.425,0.458,0.55,-2.505,-2.048,-1.057,-1.046,-1.035,-1.024,-1.013,-1.002,-0.991,-0.98,-0.969,-0.958,-0.947,-0.936,-0.925,-0.914,-1.708,-2.024,-2.072,-2.007,-1.68,-1.048,-0.722,-0.663,-0.677,-0.677,-0.672,-0.668,-0.663,-0.658,-0.653,-0.647,-0.641,-0.633,-0.624,-0.615,-0.606,-0.599,-0.594,-0.591,-0.589,-0.588,-0.586,-0.584,-0.582,-0.582,-0.582,-0.583,-0.587,-0.605,-0.615,-0.617,-0.616,-0.612,-0.607,-0.601,-0.595,-0.589,-0.582,-0.576,-0.569,-0.563,-0.556,-0.55,-0.543,-0.536,-0.529,-0.523,-0.516,-0.509,-0.502,-0.495,-0.488,-0.481,-0.474,-0.467,-0.46,-0.453,-0.447,-0.44,-0.434,-0.428,-0.422,-0.417,-0.414,-0.411,-0.41,-0.41,-0.413,-0.417,-0.424,-0.433,-0.443,-0.456,-0.471,-0.488,-0.507,-0.527,-0.548,-0.57,-0.593,-0.616,-0.637,-0.658,-0.676,-0.696,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.898,-0.916,-0.782,-0.48,-0.346,-0.334,-0.34,-0.343,-0.342,-0.335,-0.321,-0.296,-0.253,-0.189,-0.106,-0.016,0.064,0.125,0.164,0.187,0.2,0.206,0.21,0.211,0.212,0.229,0.323,0.55,-2.468,-2.021,-1.052,-1.041,-1.029,-1.018,-1.007,-0.996,-0.985,-0.974,-0.963,-0.952,-0.941,-0.93,-0.919,-0.908,-1.705,-2.022,-2.07,-1.992,-1.593,-0.822,-0.432,-0.381,-0.416,-0.407,-0.399,-0.39,-0.381,-0.373,-0.364,-0.355,-0.347,-0.338,-0.329,-0.321,-0.312,-0.303,-0.295,-0.286,-0.277,-0.269,-0.26,-0.251,-0.243,-0.234,-0.225,-0.217,-0.208,-0.291,-0.319,-0.322,-0.317,-0.31,-0.302,-0.293,-0.285,-0.276,-0.268,-0.259,-0.25,-0.242,-0.233,-0.224,-0.215,-0.206,-0.197,-0.188,-0.18,-0.171,-0.163,-0.155,-0.148,-0.141,-0.136,-0.131,-0.127,-0.124,-0.123,-0.123,-0.125,-0.128,-0.133,-0.139,-0.147,-0.158,-0.17,-0.184,-0.2,-0.218,-0.238,-0.26,-0.284,-0.309,-0.337,-0.366,-0.397,-0.43,-0.464,-0.498,-0.532,-0.566,-0.599,-0.629,-0.655,-0.678,-0.698,-0.708,-0.714,-0.716,-0.718,-0.719,-0.72,-0.749,-0.751,-0.717,-0.629,-0.608,-0.618,-0.626,-0.631,-0.63,-0.623,-0.607,-0.575,-0.519,-0.431,-0.314,-0.186,-0.074,0.007,0.056,0.084,0.098,0.105,0.108,0.109,0.11,0.13,0.252,0.55,-2.42,-1.986,-1.046,-1.035,-1.024,-1.013,-1.002,-0.991,-0.98,-0.969,-0.958,-0.946,-0.935,-0.924,-0.913,-0.902,-1.701,-2.018,-2.064,-1.985,-1.575,-0.772,-0.372,-0.329,-0.408,-0.399,-0.39,-0.382,-0.373,-0.364,-0.356,-0.347,-0.338,-0.33,-0.321,-0.312,-0.304,-0.295,-0.286,-0.278,-0.269,-0.26,-0.252,-0.243,-0.234,-0.226,-0.217,-0.208,-0.2,-0.191,-0.247,-0.258,-0.253,-0.245,-0.236,-0.228,-0.219,-0.21,-0.202,-0.193,-0.185,-0.176,-0.167,-0.158,-0.148,-0.139,-0.13,-0.12,-0.111,-0.102,-0.093,-0.085,-0.078,-0.071,-0.065,-0.061,-0.057,-0.055,-0.055,-0.056,-0.059,-0.063,-0.07,-0.078,-0.088,-0.101,-0.115,-0.131,-0.149,-0.169,-0.191,-0.214,-0.24,-0.267,-0.297,-0.328,-0.36,-0.395,-0.43,-0.467,-0.504,-0.541,-0.577,-0.611,-0.641,-0.667,-0.687,-0.701,-0.709,-0.714,-0.716,-0.718,-0.72,-0.719,-0.714,-0.698,-0.666,-0.665,-0.678,-0.688,-0.694,-0.694,-0.689,-0.675,-0.645,-0.587,-0.491,-0.357,-0.21,-0.084,0.001,0.05,0.074,0.086,0.091,0.093,0.093,0.094,0.114,0.238,0.55,-2.358,-1.941,-1.04,-1.029,-1.018,-1.007,-0.996,-0.985,-0.974,-0.963,-0.952,-0.941,-0.93,-0.919,-0.908,-0.897,-1.694,-2.009,-2.053,-1.971,-1.562,-0.763,-0.367,-0.323,-0.399,-0.391,-0.382,-0.317,-0.312,-0.308,-0.303,-0.298,-0.294,-0.289,-0.284,-0.28,-0.275,-0.27,-0.266,-0.261,-0.257,-0.252,-0.247,-0.243,-0.238,-0.233,-0.229,-0.224,-0.219,-0.224,-0.242,-0.244,-0.238,-0.23,-0.222,-0.214,-0.206,-0.199,-0.191,-0.182,-0.174,-0.166,-0.157,-0.148,-0.139,-0.129,-0.12,-0.111,-0.101,-0.092,-0.083,-0.075,-0.067,-0.061,-0.055,-0.05,-0.046,-0.044,-0.043,-0.044,-0.046,-0.051,-0.057,-0.065,-0.075,-0.086,-0.1,-0.116,-0.133,-0.152,-0.173,-0.196,-0.221,-0.247,-0.275,-0.305,-0.337,-0.37,-0.405,-0.441,-0.478,-0.516,-0.553,-0.589,-0.622,-0.651,-0.675,-0.692,-0.704,-0.71,-0.714,-0.716,-0.72,-0.715,-0.709,-0.692,-0.666,-0.669,-0.685,-0.697,-0.703,-0.704,-0.701,-0.69,-0.663,-0.607,-0.507,-0.362,-0.202,-0.068,0.018,0.062,0.082,0.091,0.094,0.095,0.095,0.096,0.116,0.239,0.55,-2.281,-1.887,-1.034,-1.023,-1.012,-1.001,-0.99,-0.979,-0.968,-0.957,-0.946,-0.935,-0.924,-0.913,-0.902,-0.891,-1.679,-1.989,-2.029,-1.945,-1.54,-0.754,-0.364,-0.319,-0.391,-0.382,-0.374,-0.31,-0.305,-0.3,-0.296,-0.291,-0.286,-0.282,-0.277,-0.272,-0.268,-0.263,-0.259,-0.254,-0.249,-0.245,-0.24,-0.235,-0.231,-0.226,-0.221,-0.217,-0.212,-0.219,-0.225,-0.224,-0.22,-0.214,-0.208,-0.202,-0.196,-0.189,-0.182,-0.175,-0.167,-0.159,-0.151,-0.142,-0.133,-0.123,-0.114,-0.105,-0.095,-0.086,-0.077,-0.069,-0.061,-0.054,-0.048,-0.042,-0.038,-0.036,-0.035,-0.035,-0.037,-0.041,-0.047,-0.054,-0.064,-0.075,-0.088,-0.102,-0.119,-0.137,-0.157,-0.179,-0.202,-0.227,-0.253,-0.282,-0.311,-0.343,-0.376,-0.41,-0.446,-0.483,-0.521,-0.558,-0.594,-0.626,-0.654,-0.676,-0.692,-0.702,-0.707,-0.71,-0.711,-0.709,-0.702,-0.682,-0.656,-0.662,-0.683,-0.697,-0.704,-0.707,-0.705,-0.696,-0.673,-0.619,-0.517,-0.363,-0.193,-0.054,0.031,0.071,0.088,0.094,0.096,0.097,0.097,0.098,0.118,0.24,0.55,-2.19,-1.823,-1.028,-1.017,-1.006,-0.995,-0.984,-0.973,-0.962,-0.951,-0.94,-0.929,-0.918,-0.907,-0.896,-0.885,-1.653,-1.953,-1.989,-1.903,-1.505,-0.739,-0.36,-0.315,-0.383,-0.374,-0.365,-0.302,-0.298,-0.293,-0.288,-0.284,-0.279,-0.275,-0.27,-0.265,-0.261,-0.256,-0.251,-0.247,-0.242,-0.237,-0.233,-0.228,-0.223,-0.219,-0.214,-0.209,-0.205,-0.195,-0.194,-0.196,-0.196,-0.195,-0.192,-0.189,-0.184,-0.179,-0.173,-0.166,-0.159,-0.152,-0.144,-0.135,-0.126,-0.117,-0.108,-0.098,-0.089,-0.08,-0.071,-0.062,-0.054,-0.047,-0.04,-0.035,-0.03,-0.028,-0.026,-0.026,-0.028,-0.031,-0.036,-0.043,-0.052,-0.063,-0.075,-0.089,-0.104,-0.121,-0.14,-0.16,-0.182,-0.205,-0.23,-0.256,-0.283,-0.312,-0.342,-0.374,-0.407,-0.442,-0.478,-0.514,-0.551,-0.586,-0.617,-0.645,-0.666,-0.681,-0.69,-0.695,-0.696,-0.693,-0.683,-0.66,-0.632,-0.643,-0.671,-0.691,-0.701,-0.705,-0.705,-0.699,-0.677,-0.625,-0.521,-0.363,-0.186,-0.044,0.039,0.076,0.091,0.095,0.097,0.098,0.098,0.099,0.119,0.241,0.55,-2.084,-1.75,-1.022,-1.011,-1,-0.989,-0.978,-0.967,-0.956,-0.945,-0.934,-0.923,-0.912,-0.901,-0.89,-0.879,-1.611,-1.895,-1.925,-1.837,-1.452,-0.717,-0.354,-0.311,-0.374,-0.366,-0.357,-0.295,-0.29,-0.286,-0.281,-0.277,-0.272,-0.267,-0.263,-0.258,-0.253,-0.249,-0.244,-0.239,-0.235,-0.23,-0.225,-0.221,-0.216,-0.211,-0.207,-0.202,-0.197,-0.167,-0.16,-0.166,-0.172,-0.175,-0.175,-0.174,-0.172,-0.168,-0.163,-0.157,-0.151,-0.144,-0.136,-0.128,-0.119,-0.11,-0.101,-0.092,-0.082,-0.073,-0.064,-0.055,-0.047,-0.039,-0.032,-0.027,-0.022,-0.019,-0.017,-0.017,-0.018,-0.021,-0.026,-0.032,-0.04,-0.05,-0.061,-0.074,-0.089,-0.105,-0.123,-0.141,-0.162,-0.183,-0.205,-0.229,-0.253,-0.279,-0.306,-0.333,-0.363,-0.393,-0.425,-0.458,-0.491,-0.525,-0.557,-0.587,-0.613,-0.633,-0.647,-0.655,-0.657,-0.654,-0.642,-0.616,-0.588,-0.605,-0.643,-0.674,-0.691,-0.699,-0.702,-0.696,-0.676,-0.624,-0.52,-0.36,-0.182,-0.041,0.041,0.078,0.091,0.096,0.097,0.098,0.098,0.099,0.119,0.242,0.55,-1.967,-1.669,-1.016,-1.005,-0.994,-0.983,-0.972,-0.961,-0.95,-0.939,-0.928,-0.917,-0.906,-0.895,-0.884,-0.873,-1.548,-1.808,-1.832,-1.745,-1.379,-0.686,-0.346,-0.309,-0.366,-0.357,-0.349,-0.288,-0.283,-0.279,-0.274,-0.269,-0.265,-0.26,-0.255,-0.251,-0.246,-0.241,-0.237,-0.232,-0.227,-0.223,-0.218,-0.213,-0.209,-0.204,-0.199,-0.195,-0.19,-0.144,-0.133,-0.14,-0.149,-0.156,-0.159,-0.16,-0.159,-0.157,-0.153,-0.148,-0.143,-0.136,-0.129,-0.12,-0.112,-0.103,-0.094,-0.084,-0.075,-0.065,-0.056,-0.047,-0.039,-0.031,-0.024,-0.018,-0.013,-0.01,-0.008,-0.007,-0.008,-0.01,-0.015,-0.02,-0.028,-0.037,-0.048,-0.06,-0.073,-0.088,-0.105,-0.122,-0.14,-0.16,-0.18,-0.201,-0.222,-0.245,-0.267,-0.29,-0.314,-0.339,-0.364,-0.39,-0.416,-0.442,-0.461,-0.487,-0.512,-0.533,-0.55,-0.56,-0.566,-0.572,-0.564,-0.542,-0.525,-0.548,-0.597,-0.641,-0.671,-0.687,-0.694,-0.689,-0.668,-0.615,-0.512,-0.356,-0.182,-0.043,0.039,0.077,0.091,0.096,0.097,0.098,0.098,0.099,0.119,0.242,0.55,-1.845,-1.584,-1.01,-0.999,-0.988,-0.977,-0.966,-0.955,-0.944,-0.933,-0.922,-0.911,-0.9,-0.889,-0.878,-0.867,-1.465,-1.693,-1.709,-1.625,-1.285,-0.648,-0.341,-0.318,-0.358,-0.349,-0.34,-0.281,-0.276,-0.271,-0.267,-0.262,-0.257,-0.253,-0.248,-0.243,-0.239,-0.234,-0.229,-0.225,-0.22,-0.215,-0.211,-0.206,-0.201,-0.197,-0.192,-0.187,-0.183,-0.129,-0.115,-0.122,-0.132,-0.14,-0.145,-0.148,-0.148,-0.147,-0.144,-0.139,-0.134,-0.128,-0.121,-0.113,-0.104,-0.095,-0.086,-0.077,-0.067,-0.058,-0.048,-0.039,-0.03,-0.023,-0.015,-0.009,-0.004,0,0.002,0.003,0.003,0.001,-0.003,-0.008,-0.015,-0.024,-0.034,-0.045,-0.058,-0.071,-0.086,-0.102,-0.119,-0.137,-0.155,-0.173,-0.192,-0.21,-0.229,-0.247,-0.265,-0.282,-0.299,-0.316,-0.33,-0.329,-0.296,-0.304,-0.32,-0.335,-0.348,-0.358,-0.372,-0.422,-0.437,-0.442,-0.452,-0.485,-0.536,-0.59,-0.634,-0.663,-0.676,-0.674,-0.652,-0.598,-0.498,-0.349,-0.184,-0.05,0.032,0.072,0.088,0.094,0.097,0.097,0.097,0.098,0.119,0.241,0.55,-1.723,-1.499,-1.004,-0.993,-0.982,-0.971,-0.96,-0.949,-0.938,-0.927,-0.916,-0.905,-0.894,-0.883,-0.872,-0.861,-1.364,-1.553,-1.561,-1.483,-1.176,-0.605,-0.343,-0.358,-0.349,-0.341,-0.332,-0.273,-0.269,-0.264,-0.259,-0.255,-0.25,-0.245,-0.241,-0.236,-0.231,-0.227,-0.222,-0.217,-0.213,-0.208,-0.203,-0.199,-0.194,-0.189,-0.185,-0.18,-0.175,-0.117,-0.105,-0.111,-0.121,-0.128,-0.134,-0.137,-0.138,-0.137,-0.135,-0.131,-0.126,-0.119,-0.112,-0.105,-0.096,-0.088,-0.078,-0.069,-0.059,-0.049,-0.04,-0.031,-0.022,-0.014,-0.006,0,0.005,0.009,0.012,0.014,0.013,0.012,0.009,0.004,-0.002,-0.01,-0.019,-0.03,-0.042,-0.054,-0.068,-0.083,-0.098,-0.114,-0.13,-0.146,-0.162,-0.177,-0.192,-0.205,-0.217,-0.228,-0.237,-0.244,-0.24,-0.188,-0.006,-0.009,-0.011,-0.014,-0.017,-0.019,-0.022,-0.198,-0.257,-0.323,-0.386,-0.432,-0.476,-0.527,-0.58,-0.621,-0.643,-0.645,-0.625,-0.572,-0.478,-0.341,-0.189,-0.062,0.02,0.064,0.083,0.091,0.095,0.096,0.096,0.097,0.118,0.241,0.55,-1.61,-1.421,-0.998,-0.987,-0.976,-0.965,-0.954,-0.943,-0.932,-0.921,-0.91,-0.899,-0.888,-0.877,-0.866,-0.855,-1.254,-1.399,-1.401,-1.33,-1.058,-0.555,-0.33,-0.35,-0.341,-0.332,-0.324,-0.266,-0.261,-0.257,-0.252,-0.247,-0.243,-0.238,-0.233,-0.229,-0.224,-0.219,-0.215,-0.21,-0.205,-0.201,-0.196,-0.191,-0.187,-0.182,-0.07,-0.07,-0.07,-0.089,-0.096,-0.105,-0.114,-0.12,-0.125,-0.128,-0.129,-0.128,-0.126,-0.122,-0.117,-0.111,-0.104,-0.097,-0.088,-0.079,-0.07,-0.06,-0.051,-0.041,-0.031,-0.022,-0.013,-0.005,0.003,0.01,0.015,0.02,0.023,0.024,0.025,0.023,0.021,0.016,0.011,0.003,-0.005,-0.015,-0.026,-0.037,-0.05,-0.064,-0.078,-0.092,-0.106,-0.12,-0.133,-0.146,-0.157,-0.167,-0.175,-0.18,-0.182,-0.181,-0.171,-0.124,-0.006,-0.009,-0.011,-0.014,-0.017,-0.02,-0.022,-0.019,-0.02,-0.205,-0.334,-0.397,-0.431,-0.471,-0.52,-0.565,-0.596,-0.604,-0.587,-0.539,-0.453,-0.33,-0.194,-0.077,0.005,0.052,0.075,0.086,0.092,0.094,0.095,0.096,0.118,0.241,0.55,-1.513,-1.353,-0.992,-0.981,-0.97,-0.959,-0.948,-0.937,-0.926,-0.915,-0.904,-0.893,-0.882,-0.871,-0.86,-0.849,-1.144,-1.248,-1.243,-1.179,-0.942,-0.504,-0.313,-0.341,-0.333,-0.324,-0.315,-0.259,-0.254,-0.249,-0.245,-0.24,-0.235,-0.231,-0.226,-0.221,-0.217,-0.212,-0.207,-0.203,-0.198,-0.193,-0.189,-0.184,-0.179,-0.175,-0.07,-0.07,-0.07,-0.085,-0.095,-0.103,-0.109,-0.115,-0.119,-0.121,-0.121,-0.12,-0.118,-0.114,-0.109,-0.103,-0.096,-0.088,-0.08,-0.071,-0.061,-0.052,-0.042,-0.032,-0.022,-0.012,-0.003,0.005,0.013,0.02,0.025,0.03,0.033,0.035,0.036,0.035,0.033,0.029,0.024,0.017,0.009,0,-0.01,-0.021,-0.033,-0.045,-0.058,-0.071,-0.083,-0.096,-0.107,-0.118,-0.127,-0.133,-0.138,-0.139,-0.138,-0.132,-0.12,-0.085,-0.006,-0.009,-0.012,-0.014,-0.017,-0.02,-0.022,-0.02,-0.02,-0.16,-0.307,-0.379,-0.405,-0.431,-0.469,-0.511,-0.543,-0.556,-0.544,-0.501,-0.424,-0.317,-0.198,-0.091,-0.012,0.038,0.065,0.08,0.088,0.091,0.094,0.096,0.119,0.242,0.55,-1.436,-1.298,-0.986,-0.975,-0.964,-0.953,-0.942,-0.931,-0.92,-0.909,-0.898,-0.887,-0.876,-0.865,-0.854,-0.843,-1.045,-1.11,-1.099,-1.042,-0.836,-0.458,-0.297,-0.333,-0.324,-0.316,-0.307,-0.251,-0.247,-0.242,-0.237,-0.233,-0.228,-0.223,-0.219,-0.214,-0.209,-0.205,-0.2,-0.195,-0.191,-0.186,-0.181,-0.177,-0.172,-0.167,-0.07,-0.07,-0.07,-0.084,-0.093,-0.099,-0.104,-0.108,-0.11,-0.111,-0.111,-0.11,-0.107,-0.103,-0.098,-0.092,-0.085,-0.078,-0.07,-0.061,-0.052,-0.042,-0.033,-0.023,-0.013,-0.003,0.006,0.015,0.023,0.03,0.036,0.041,0.044,0.047,0.048,0.047,0.045,0.042,0.037,0.031,0.024,0.015,0.006,-0.004,-0.015,-0.027,-0.039,-0.051,-0.062,-0.073,-0.084,-0.093,-0.1,-0.105,-0.107,-0.107,-0.103,-0.097,-0.085,-0.059,-0.007,-0.009,-0.012,-0.015,-0.017,-0.02,-0.023,-0.02,-0.021,-0.138,-0.293,-0.369,-0.392,-0.409,-0.437,-0.47,-0.498,-0.51,-0.5,-0.462,-0.393,-0.3,-0.196,-0.1,-0.025,0.025,0.056,0.074,0.085,0.091,0.095,0.1,0.123,0.246,0.55,-1.381,-1.258,-0.981,-0.97,-0.959,-0.948,-0.937,-0.926,-0.914,-0.903,-0.892,-0.881,-0.87,-0.859,-0.848,-0.837,-0.961,-0.994,-0.978,-0.926,-0.746,-0.418,-0.283,-0.325,-0.316,-0.307,-0.299,-0.244,-0.239,-0.235,-0.23,-0.225,-0.221,-0.216,-0.211,-0.207,-0.202,-0.197,-0.193,-0.188,-0.183,-0.179,-0.174,-0.169,-0.165,-0.16,-0.07,-0.07,-0.07,-0.069,-0.074,-0.077,-0.08,-0.081,-0.083,-0.083,-0.082,-0.081,-0.079,-0.076,-0.072,-0.068,-0.063,-0.058,-0.052,-0.045,-0.039,-0.032,-0.025,-0.017,-0.004,0.007,0.017,0.026,0.034,0.041,0.047,0.052,0.056,0.058,0.06,0.059,0.058,0.055,0.051,0.045,0.038,0.03,0.022,0.012,0.001,-0.009,-0.021,-0.032,-0.043,-0.053,-0.062,-0.07,-0.077,-0.081,-0.083,-0.082,-0.078,-0.072,-0.062,-0.043,-0.007,-0.01,-0.012,-0.015,-0.018,-0.02,-0.023,-0.021,-0.022,-0.128,-0.286,-0.366,-0.386,-0.399,-0.419,-0.442,-0.462,-0.47,-0.458,-0.421,-0.359,-0.277,-0.185,-0.099,-0.03,0.021,0.054,0.075,0.089,0.097,0.104,0.11,0.135,0.255,0.55,-1.348,-1.233,-0.975,-0.964,-0.953,-0.942,-0.931,-0.92,-0.909,-0.898,-0.887,-0.876,-0.865,-0.854,-0.842,-0.831,-0.895,-0.903,-0.882,-0.833,-0.674,-0.386,-0.271,-0.316,-0.308,-0.299,-0.29,-0.237,-0.232,-0.227,-0.223,-0.218,-0.213,-0.209,-0.204,-0.199,-0.195,-0.19,-0.185,-0.181,-0.176,-0.171,-0.167,-0.11,-0.098,-0.086,-0.074,-0.062,-0.049,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.002,0.017,0.027,0.036,0.045,0.052,0.058,0.063,0.068,0.07,0.072,0.072,0.071,0.068,0.064,0.059,0.053,0.045,0.037,0.028,0.018,0.007,-0.003,-0.014,-0.024,-0.034,-0.043,-0.051,-0.057,-0.062,-0.063,-0.061,-0.058,-0.054,-0.046,-0.032,-0.007,-0.01,-0.013,-0.015,-0.018,-0.021,-0.023,-0.022,-0.023,-0.124,-0.284,-0.365,-0.385,-0.395,-0.408,-0.424,-0.435,-0.435,-0.418,-0.38,-0.32,-0.244,-0.161,-0.083,-0.018,0.032,0.067,0.09,0.106,0.117,0.125,0.133,0.157,0.272,0.55,-1.333,-1.222,-0.969,-0.958,-0.947,-0.936,-0.925,-0.914,-0.903,-0.892,-0.881,-0.87,-0.859,-0.848,-0.837,-0.826,-0.845,-0.834,-0.808,-0.761,-0.617,-0.362,-0.262,-0.308,-0.299,-0.291,-0.282,-0.229,-0.225,-0.22,-0.215,-0.211,-0.206,-0.201,-0.197,-0.192,-0.187,-0.183,-0.178,-0.173,-0.169,-0.164,-0.16,-0.113,-0.101,-0.089,-0.077,-0.064,-0.052,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.01,0.027,0.038,0.048,0.056,0.063,0.07,0.075,0.079,0.082,0.084,0.085,0.084,0.081,0.078,0.073,0.067,0.06,0.052,0.043,0.033,0.023,0.013,0.003,-0.007,-0.017,-0.026,-0.034,-0.04,-0.045,-0.044,-0.037,-0.035,-0.032,-0.029,-0.021,-0.007,-0.01,-0.013,-0.015,-0.018,-0.021,-0.024,-0.023,-0.023,-0.122,-0.284,-0.366,-0.385,-0.393,-0.401,-0.408,-0.41,-0.401,-0.377,-0.333,-0.272,-0.197,-0.119,-0.045,0.017,0.065,0.101,0.126,0.143,0.155,0.164,0.172,0.194,0.298,0.55,-1.335,-1.221,-0.963,-0.952,-0.941,-0.93,-0.919,-0.908,-0.897,-0.886,-0.875,-0.864,-0.853,-0.842,-0.831,-0.82,-0.808,-0.783,-0.752,-0.705,-0.573,-0.344,-0.256,-0.3,-0.291,-0.282,-0.274,-0.222,-0.217,-0.213,-0.208,-0.203,-0.199,-0.194,-0.189,-0.185,-0.18,-0.175,-0.171,-0.166,-0.162,-0.157,-0.152,-0.116,-0.104,-0.092,-0.079,-0.067,-0.055,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.017,0.038,0.05,0.059,0.068,0.075,0.082,0.087,0.092,0.095,0.097,0.097,0.097,0.095,0.092,0.087,0.081,0.075,0.067,0.058,0.049,0.039,0.029,0.018,0.008,-0.001,-0.01,-0.019,-0.025,-0.029,-0.023,0.006,0.003,0,-0.002,-0.005,-0.008,-0.01,-0.013,-0.016,-0.018,-0.021,-0.024,-0.023,-0.024,-0.122,-0.285,-0.367,-0.385,-0.389,-0.392,-0.391,-0.384,-0.365,-0.33,-0.278,-0.211,-0.135,-0.057,0.014,0.075,0.122,0.157,0.182,0.2,0.212,0.219,0.225,0.243,0.331,0.55,-1.348,-1.229,-0.957,-0.946,-0.935,-0.924,-0.913,-0.902,-0.891,-0.88,-0.869,-0.858,-0.847,-0.836,-0.825,-0.814,-0.781,-0.744,-0.709,-0.661,-0.539,-0.332,-0.253,-0.291,-0.283,-0.274,-0.265,-0.215,-0.21,-0.205,-0.201,-0.196,-0.191,-0.187,-0.182,-0.177,-0.173,-0.168,-0.164,-0.159,-0.154,-0.15,-0.145,-0.119,-0.107,-0.094,-0.082,-0.07,-0.058,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.025,0.05,0.062,0.071,0.08,0.087,0.094,0.099,0.104,0.107,0.11,0.111,0.11,0.108,0.105,0.101,0.096,0.089,0.081,0.073,0.064,0.054,0.044,0.033,0.023,0.013,0.004,-0.005,-0.012,-0.017,-0.013,0.005,0.003,0,-0.003,-0.005,-0.008,-0.011,-0.013,-0.016,-0.019,-0.021,-0.024,-0.024,-0.025,-0.123,-0.284,-0.365,-0.381,-0.381,-0.378,-0.369,-0.351,-0.321,-0.274,-0.212,-0.137,-0.057,0.022,0.092,0.15,0.195,0.228,0.252,0.267,0.277,0.282,0.285,0.297,0.369,0.55,-1.37,-1.243,-0.951,-0.94,-0.929,-0.918,-0.907,-0.896,-0.885,-0.874,-0.863,-0.852,-0.841,-0.83,-0.819,-0.808,-0.76,-0.714,-0.673,-0.624,-0.511,-0.324,-0.252,-0.283,-0.274,-0.266,-0.257,-0.207,-0.203,-0.198,-0.193,-0.189,-0.184,-0.179,-0.175,-0.17,-0.166,-0.161,-0.156,-0.152,-0.147,-0.142,-0.138,-0.122,-0.109,-0.097,-0.085,-0.073,-0.061,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.034,0.061,0.074,0.084,0.092,0.1,0.106,0.112,0.117,0.12,0.123,0.124,0.124,0.122,0.12,0.115,0.11,0.104,0.096,0.087,0.078,0.068,0.058,0.047,0.037,0.027,0.017,0.008,0,-0.007,-0.006,0.005,0.002,0,-0.003,-0.006,-0.008,-0.011,-0.014,-0.016,-0.019,-0.022,-0.024,-0.025,-0.025,-0.122,-0.281,-0.359,-0.372,-0.367,-0.357,-0.339,-0.309,-0.266,-0.207,-0.133,-0.051,0.032,0.11,0.177,0.231,0.271,0.3,0.319,0.331,0.338,0.341,0.34,0.348,0.403,0.55,-1.397,-1.26,-0.945,-0.934,-0.923,-0.912,-0.901,-0.89,-0.879,-0.868,-0.857,-0.846,-0.835,-0.824,-0.813,-0.802,-0.743,-0.689,-0.642,-0.59,-0.486,-0.319,-0.252,-0.275,-0.266,-0.258,-0.249,-0.2,-0.195,-0.191,-0.186,-0.182,-0.177,-0.172,-0.168,-0.163,-0.158,-0.154,-0.149,-0.144,-0.14,-0.135,-0.13,-0.124,-0.112,-0.1,-0.088,-0.076,-0.064,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.043,0.074,0.087,0.096,0.105,0.112,0.119,0.125,0.129,0.133,0.136,0.137,0.137,0.136,0.134,0.13,0.125,0.118,0.111,0.102,0.092,0.082,0.071,0.061,0.05,0.039,0.029,0.019,0.01,0.003,0,0.005,0.002,0,-0.003,-0.006,-0.009,-0.011,-0.014,-0.017,-0.019,-0.022,-0.025,-0.025,-0.026,-0.12,-0.274,-0.348,-0.356,-0.345,-0.326,-0.298,-0.256,-0.2,-0.129,-0.047,0.04,0.123,0.197,0.257,0.303,0.336,0.358,0.373,0.381,0.385,0.386,0.384,0.388,0.431,0.55,-1.424,-1.278,-0.939,-0.928,-0.917,-0.906,-0.895,-0.884,-0.873,-0.862,-0.851,-0.84,-0.829,-0.818,-0.807,-0.796,-0.728,-0.665,-0.61,-0.556,-0.461,-0.314,-0.254,-0.267,-0.258,-0.249,-0.241,-0.193,-0.188,-0.184,-0.179,-0.174,-0.17,-0.165,-0.16,-0.156,-0.151,-0.146,-0.142,-0.137,-0.132,-0.128,-0.123,-0.127,-0.115,-0.103,-0.091,-0.079,-0.066,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.052,0.086,0.1,0.109,0.118,0.125,0.132,0.137,0.142,0.146,0.149,0.151,0.151,0.15,0.148,0.144,0.139,0.133,0.125,0.116,0.107,0.096,0.085,0.073,0.062,0.05,0.04,0.029,0.02,0.012,0.006,0.005,0.002,-0.001,-0.003,-0.006,-0.009,-0.011,-0.014,-0.017,-0.02,-0.022,-0.025,-0.026,-0.027,-0.115,-0.262,-0.329,-0.331,-0.313,-0.285,-0.246,-0.192,-0.125,-0.045,0.042,0.128,0.207,0.272,0.322,0.358,0.383,0.399,0.409,0.414,0.416,0.416,0.413,0.415,0.451,0.55,-1.451,-1.294,-0.933,-0.922,-0.911,-0.9,-0.889,-0.878,-0.867,-0.856,-0.845,-0.834,-0.823,-0.812,-0.801,-0.79,-0.715,-0.641,-0.577,-0.521,-0.435,-0.31,-0.256,-0.258,-0.25,-0.241,-0.232,-0.186,-0.181,-0.176,-0.172,-0.167,-0.162,-0.158,-0.153,-0.148,-0.144,-0.139,-0.134,-0.13,-0.125,-0.12,-0.116,-0.13,-0.118,-0.106,-0.094,-0.081,-0.069,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.061,0.099,0.114,0.123,0.131,0.138,0.145,0.15,0.155,0.159,0.163,0.165,0.165,0.165,0.163,0.159,0.154,0.148,0.14,0.131,0.121,0.109,0.097,0.085,0.073,0.061,0.049,0.038,0.028,0.019,0.011,0.004,0.002,-0.001,-0.004,-0.006,-0.009,-0.012,-0.014,-0.017,-0.02,-0.022,-0.025,-0.027,-0.027,-0.099,-0.243,-0.303,-0.297,-0.272,-0.234,-0.184,-0.121,-0.045,0.04,0.126,0.207,0.276,0.33,0.369,0.396,0.414,0.424,0.43,0.433,0.434,0.433,0.431,0.433,0.464,0.55,-1.473,-1.308,-0.927,-0.916,-0.905,-0.894,-0.883,-0.872,-0.861,-0.85,-0.839,-0.828,-0.817,-0.806,-0.795,-0.784,-0.702,-0.616,-0.542,-0.482,-0.408,-0.305,-0.257,-0.25,-0.241,-0.233,-0.224,-0.178,-0.174,-0.169,-0.164,-0.16,-0.155,-0.15,-0.146,-0.141,-0.136,-0.132,-0.127,-0.122,-0.118,-0.113,-0.108,-0.133,-0.121,-0.109,-0.096,-0.084,-0.072,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.071,0.113,0.128,0.136,0.144,0.151,0.158,0.163,0.168,0.173,0.176,0.178,0.18,0.179,0.178,0.175,0.17,0.163,0.155,0.146,0.135,0.123,0.11,0.096,0.083,0.07,0.057,0.046,0.035,0.025,0.015,0.004,0.001,-0.001,-0.004,-0.007,-0.009,-0.012,-0.015,-0.017,-0.02,-0.023,-0.025,-0.027,-0.028,-0.029,-0.209,-0.267,-0.255,-0.221,-0.175,-0.117,-0.046,0.033,0.117,0.198,0.27,0.328,0.371,0.401,0.42,0.431,0.438,0.441,0.443,0.443,0.442,0.44,0.443,0.472,0.55,-1.491,-1.319,-0.921,-0.91,-0.899,-0.888,-0.877,-0.866,-0.855,-0.844,-0.833,-0.822,-0.811,-0.8,-0.789,-0.778,-0.69,-0.592,-0.507,-0.445,-0.382,-0.298,-0.25,-0.242,-0.233,-0.224,-0.216,-0.171,-0.166,-0.162,-0.157,-0.152,-0.148,-0.143,-0.138,-0.134,-0.129,-0.124,-0.12,-0.115,-0.11,-0.106,-0.101,-0.136,-0.124,-0.111,-0.099,-0.087,-0.075,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.081,0.127,0.142,0.15,0.157,0.164,0.17,0.176,0.181,0.186,0.19,0.192,0.194,0.194,0.193,0.19,0.186,0.179,0.171,0.161,0.149,0.136,0.122,0.107,0.092,0.078,0.064,0.052,0.04,0.03,0.018,0.004,0.001,-0.002,-0.004,-0.007,-0.01,-0.012,-0.015,-0.018,-0.02,-0.023,-0.026,-0.028,-0.029,-0.03,-0.182,-0.226,-0.206,-0.165,-0.112,-0.048,0.026,0.105,0.184,0.257,0.318,0.365,0.398,0.42,0.433,0.44,0.444,0.446,0.447,0.447,0.446,0.445,0.448,0.476,0.55,-1.502,-1.325,-0.916,-0.905,-0.894,-0.882,-0.871,-0.86,-0.849,-0.838,-0.827,-0.816,-0.805,-0.794,-0.783,-0.772,-0.679,-0.573,-0.481,-0.416,-0.36,-0.29,-0.242,-0.233,-0.225,-0.216,-0.207,-0.164,-0.159,-0.154,-0.15,-0.145,-0.14,-0.136,-0.131,-0.126,-0.122,-0.117,-0.112,-0.108,-0.103,-0.098,-0.094,-0.139,-0.126,-0.114,-0.102,-0.09,-0.078,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.091,0.141,0.156,0.164,0.171,0.177,0.183,0.189,0.194,0.199,0.203,0.206,0.209,0.21,0.209,0.207,0.203,0.196,0.188,0.177,0.165,0.15,0.134,0.118,0.101,0.085,0.069,0.056,0.044,0.033,0.02,0.004,0.001,-0.002,-0.004,-0.007,-0.01,-0.013,-0.015,-0.018,-0.021,-0.023,-0.026,-0.029,-0.03,-0.03,-0.151,-0.18,-0.152,-0.105,-0.048,0.019,0.092,0.167,0.238,0.301,0.352,0.389,0.415,0.431,0.44,0.445,0.447,0.448,0.449,0.449,0.448,0.448,0.451,0.479,0.55,-1.507,-1.327,-0.91,-0.899,-0.888,-0.877,-0.866,-0.855,-0.844,-0.833,-0.822,-0.811,-0.799,-0.788,-0.777,-0.766,-0.672,-0.565,-0.469,-0.4,-0.347,-0.285,-0.234,-0.225,-0.216,-0.208,-0.199,-0.156,-0.152,-0.147,-0.142,-0.138,-0.133,-0.128,-0.124,-0.119,-0.114,-0.11,-0.105,-0.1,-0.096,-0.091,-0.086,-0.141,-0.129,-0.117,-0.105,-0.093,-0.08,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.102,0.155,0.17,0.177,0.184,0.19,0.195,0.201,0.207,0.212,0.217,0.221,0.224,0.225,0.226,0.224,0.22,0.214,0.205,0.194,0.181,0.165,0.147,0.128,0.109,0.09,0.073,0.058,0.045,0.033,0.02,0.003,0.001,-0.002,-0.005,-0.007,-0.01,-0.013,-0.015,-0.018,-0.021,-0.024,-0.026,-0.029,-0.03,-0.031,-0.118,-0.13,-0.095,-0.045,0.014,0.08,0.149,0.218,0.28,0.334,0.375,0.405,0.425,0.437,0.444,0.447,0.448,0.449,0.449,0.449,0.449,0.449,0.453,0.48,0.55,-1.504,-1.323,-0.904,-0.893,-0.882,-0.871,-0.86,-0.849,-0.838,-0.827,-0.816,-0.805,-0.794,-0.783,-0.772,-0.761,-0.666,-0.562,-0.466,-0.394,-0.34,-0.281,-0.225,-0.217,-0.208,-0.199,-0.191,-0.149,-0.144,-0.14,-0.135,-0.13,-0.126,-0.121,-0.116,-0.112,-0.107,-0.102,-0.098,-0.093,-0.108,-0.106,-0.103,-0.144,-0.132,-0.12,-0.108,-0.095,-0.083,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.112,0.169,0.184,0.191,0.196,0.202,0.207,0.213,0.219,0.224,0.23,0.235,0.239,0.241,0.242,0.242,0.239,0.233,0.224,0.213,0.198,0.181,0.161,0.14,0.117,0.096,0.076,0.058,0.044,0.032,0.019,0.003,0,-0.002,-0.005,-0.008,-0.01,-0.013,-0.016,-0.018,-0.021,-0.024,-0.026,-0.03,-0.031,-0.032,-0.083,-0.079,-0.039,0.013,0.071,0.134,0.197,0.258,0.312,0.357,0.391,0.415,0.431,0.44,0.445,0.448,0.449,0.449,0.449,0.449,0.449,0.449,0.453,0.481,0.55,-1.491,-1.313,-0.898,-0.887,-0.876,-0.865,-0.854,-0.843,-0.832,-0.821,-0.81,-0.799,-0.788,-0.777,-0.766,-0.755,-0.655,-0.551,-0.451,-0.382,-0.331,-0.275,-0.217,-0.208,-0.2,-0.191,-0.182,-0.142,-0.137,-0.132,-0.128,-0.123,-0.118,-0.114,-0.109,-0.104,-0.1,-0.095,-0.09,-0.086,-0.096,-0.093,-0.091,-0.147,-0.135,-0.123,-0.11,-0.098,-0.086,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.122,0.182,0.197,0.203,0.208,0.213,0.218,0.224,0.23,0.236,0.242,0.248,0.253,0.257,0.259,0.259,0.257,0.252,0.244,0.233,0.217,0.198,0.176,0.152,0.126,0.101,0.077,0.057,0.041,0.029,0.017,0.003,0,-0.003,-0.005,-0.008,-0.011,-0.013,-0.016,-0.019,-0.021,-0.024,-0.027,-0.031,-0.032,-0.032,-0.047,-0.028,0.015,0.066,0.122,0.18,0.237,0.29,0.336,0.374,0.402,0.422,0.435,0.442,0.446,0.448,0.449,0.449,0.45,0.45,0.45,0.45,0.454,0.481,0.55,-1.467,-1.295,-0.892,-0.881,-0.87,-0.859,-0.848,-0.837,-0.826,-0.815,-0.804,-0.793,-0.782,-0.771,-0.76,-0.749,-0.632,-0.515,-0.393,-0.335,-0.296,-0.254,-0.209,-0.2,-0.191,-0.183,-0.174,-0.134,-0.13,-0.125,-0.12,-0.116,-0.111,-0.106,-0.102,-0.097,-0.092,-0.088,-0.083,-0.078,-0.084,-0.081,-0.079,-0.15,-0.138,-0.125,-0.113,-0.101,-0.089,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.124,0.185,0.2,0.205,0.209,0.214,0.218,0.224,0.23,0.236,0.243,0.25,0.256,0.261,0.264,0.265,0.264,0.261,0.253,0.242,0.227,0.208,0.185,0.159,0.131,0.103,0.078,0.056,0.039,0.027,0.016,0.002,0,-0.003,-0.006,-0.008,-0.011,-0.014,-0.016,-0.019,-0.022,-0.024,-0.027,-0.032,-0.032,-0.033,-0.013,0.022,0.066,0.116,0.168,0.22,0.271,0.316,0.355,0.387,0.41,0.426,0.437,0.443,0.447,0.448,0.449,0.45,0.45,0.45,0.45,0.45,0.454,0.481,0.55,-1.428,-1.266,-0.886,-0.875,-0.864,-0.853,-0.842,-0.831,-0.82,-0.809,-0.798,-0.787,-0.776,-0.765,-0.754,-0.743,-0.592,-0.443,-0.235,-0.226,-0.218,-0.209,-0.2,-0.192,-0.183,-0.174,-0.166,-0.127,-0.122,-0.118,-0.146,-0.13,-0.094,-0.068,-0.056,-0.051,-0.049,-0.049,-0.051,-0.056,-0.064,-0.068,-0.068,-0.077,-0.068,-0.048,0.004,0.004,0.005,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.096,0.145,0.157,0.16,0.163,0.166,0.17,0.174,0.178,0.183,0.189,0.194,0.199,0.203,0.207,0.208,0.208,0.206,0.202,0.194,0.183,0.169,0.152,0.132,0.11,0.089,0.069,0.052,0.039,0.03,0.024,0.019,0.017,0.016,0.016,0.02,0.035,0.036,0.036,0.037,0.037,0.038,0.038,-0.032,-0.033,-0.034,0.021,0.069,0.114,0.161,0.208,0.255,0.299,0.338,0.371,0.397,0.417,0.43,0.439,0.444,0.447,0.449,0.449,0.45,0.45,0.45,0.45,0.45,0.455,0.482,0.55,-1.37,-1.224,-0.88,-0.869,-0.858,-0.847,-0.836,-0.825,-0.814,-0.803,-0.792,-0.781,-0.77,-0.759,-0.748,-0.737,-0.544,-0.393,-0.227,-0.218,-0.209,-0.201,-0.192,-0.183,-0.175,-0.166,-0.157,-0.12,-0.115,-0.11,-0.152,-0.131,-0.084,-0.051,-0.036,-0.031,-0.03,-0.031,-0.035,-0.041,-0.049,-0.052,-0.049,-0.044,-0.035,-0.018,0.016,0.017,0.017,0.018,0.018,0.019,0.019,0.02,0.02,0.021,0.021,0.022,0.022,0.023,0.024,0.024,0.025,0.025,0.026,0.026,0.027,0.027,0.028,0.028,0.029,0.029,0.03,0.03,0.031,0.031,0.032,0.032,0.033,0.033,0.034,0.035,0.035,0.036,0.036,0.037,0.037,0.038,0.038,0.039,0.039,0.04,0.04,0.041,0.041,0.042,0.042,0.043,0.043,0.044,0.044,0.045,0.045,0.046,0.047,0.047,0.048,0.048,0.049,0.049,0.05,0.05,0.051,-0.033,-0.034,-0.034,0.054,0.114,0.159,0.203,0.246,0.287,0.325,0.358,0.386,0.408,0.424,0.435,0.442,0.447,0.449,0.45,0.45,0.451,0.451,0.451,0.451,0.452,0.457,0.484,0.55,-1.291,-1.167,-0.874,-0.863,-0.852,-0.841,-0.83,-0.819,-0.808,-0.797,-0.786,-0.775,-0.764,-0.753,-0.742,-0.731,-0.491,-0.345,-0.218,-0.21,-0.201,-0.192,-0.184,-0.175,-0.166,-0.158,-0.149,-0.112,-0.108,-0.103,-0.141,-0.121,-0.078,-0.047,-0.033,-0.027,-0.026,-0.027,-0.029,-0.034,-0.038,-0.039,-0.035,-0.03,-0.023,-0.007,0.029,0.029,0.03,0.03,0.031,0.031,0.032,0.032,0.033,0.033,0.034,0.034,0.035,0.035,0.036,0.037,0.037,0.038,0.038,0.039,0.039,0.04,0.04,0.041,0.041,0.042,0.042,0.043,0.043,0.044,0.044,0.045,0.045,0.046,0.046,0.047,0.048,0.048,0.049,0.049,0.05,0.05,0.051,0.051,0.052,0.052,0.053,0.053,0.054,0.054,0.055,0.055,0.056,0.056,0.057,0.057,0.058,0.059,0.059,0.06,0.06,0.061,0.061,0.062,0.062,0.063,0.063,-0.034,-0.034,-0.035,0.085,0.157,0.202,0.242,0.281,0.317,0.35,0.379,0.402,0.42,0.433,0.442,0.448,0.451,0.453,0.453,0.453,0.453,0.454,0.454,0.455,0.456,0.461,0.487,0.55,-1.192,-1.097,-0.868,-0.857,-0.846,-0.835,-0.824,-0.813,-0.802,-0.791,-0.78,-0.769,-0.758,-0.747,-0.736,-0.725,-0.447,-0.305,-0.21,-0.201,-0.193,-0.184,-0.175,-0.167,-0.158,-0.149,-0.141,-0.105,-0.1,-0.096,-0.121,-0.103,-0.068,-0.043,-0.031,-0.026,-0.025,-0.025,-0.026,-0.028,-0.029,-0.028,-0.025,-0.022,-0.017,0,0.041,0.042,0.042,0.043,0.043,0.044,0.044,0.045,0.045,0.046,0.046,0.047,0.047,0.048,0.048,0.049,0.05,0.05,0.051,0.051,0.052,0.052,0.053,0.053,0.054,0.054,0.055,0.055,0.056,0.056,0.057,0.057,0.058,0.058,0.059,0.059,0.06,0.061,0.061,0.062,0.062,0.063,0.063,0.064,0.064,0.065,0.065,0.066,0.066,0.067,0.067,0.068,0.068,0.069,0.069,0.07,0.07,0.071,0.072,0.072,0.073,0.073,0.074,0.074,0.075,0.075,0.076,-0.034,-0.035,-0.036,0.116,0.199,0.243,0.28,0.315,0.348,0.377,0.401,0.421,0.436,0.447,0.454,0.459,0.461,0.461,0.461,0.461,0.461,0.461,0.461,0.463,0.464,0.47,0.494,0.55,-1.079,-1.016,-0.862,-0.851,-0.84,-0.829,-0.818,-0.807,-0.796,-0.785,-0.774,-0.763,-0.752,-0.741,-0.73,-0.719,-0.418,-0.277,-0.202,-0.193,-0.184,-0.176,-0.167,-0.158,-0.15,-0.141,-0.132,-0.098,-0.093,-0.089,-0.093,-0.075,-0.05,-0.033,-0.025,-0.022,-0.021,-0.021,-0.02,-0.02,-0.019,-0.017,-0.015,-0.014,-0.012,0.004,0.054,0.054,0.055,0.055,0.056,0.056,0.057,0.057,0.058,0.058,0.059,0.059,0.06,0.06,0.061,0.061,0.062,0.063,0.063,0.064,0.064,0.065,0.065,0.066,0.066,0.067,0.067,0.068,0.068,0.069,0.069,0.07,0.07,0.071,0.071,0.072,0.072,0.073,0.074,0.074,0.075,0.075,0.076,0.076,0.077,0.077,0.078,0.078,0.079,0.079,0.08,0.08,0.081,0.081,0.082,0.082,0.083,0.083,0.084,0.085,0.085,0.086,0.086,0.087,0.087,0.088,0.088,-0.035,-0.036,-0.037,0.151,0.24,0.284,0.318,0.35,0.38,0.405,0.427,0.445,0.458,0.467,0.473,0.477,0.478,0.478,0.478,0.477,0.477,0.477,0.478,0.479,0.482,0.487,0.507,0.55,-0.96,-0.932,-0.856,-0.845,-0.834,-0.823,-0.812,-0.801,-0.79,-0.779,-0.768,-0.757,-0.746,-0.735,-0.724,-0.713,-0.398,-0.257,-0.193,-0.185,-0.176,-0.167,-0.159,-0.15,-0.141,-0.133,-0.124,-0.091,-0.086,-0.081,-0.06,-0.039,-0.023,-0.014,-0.011,-0.011,-0.012,-0.012,-0.011,-0.008,-0.006,-0.003,-0.002,-0.003,-0.004,0,0.013,0.017,0.019,0.024,0.03,0.038,0.046,0.053,0.061,0.068,0.077,0.088,0.1,0.116,0.133,0.149,0.164,0.175,0.183,0.189,0.193,0.194,0.189,0.156,0.079,0.079,0.08,0.08,0.081,0.081,0.082,0.082,0.083,0.083,0.084,0.084,0.085,0.086,0.086,0.087,0.228,0.291,0.305,0.3,0.274,0.241,0.239,0.238,0.237,0.236,0.235,0.234,0.233,0.232,0.231,0.23,0.229,0.228,0.108,0.071,0.073,0.083,0.093,0.101,0.106,0.104,0.073,-0.036,-0.037,0.092,0.216,0.285,0.325,0.357,0.387,0.414,0.437,0.458,0.474,0.486,0.496,0.502,0.505,0.507,0.507,0.507,0.506,0.506,0.506,0.507,0.509,0.511,0.516,0.527,0.55,-0.846,-0.851,-0.85,-0.839,-0.828,-0.817,-0.806,-0.795,-0.784,-0.773,-0.762,-0.751,-0.74,-0.729,-0.718,-0.707,-0.382,-0.241,-0.185,-0.176,-0.168,-0.159,-0.107,-0.102,-0.097,-0.093,-0.088,-0.083,-0.079,-0.074,-0.029,-0.003,0.008,0.012,0.01,0.007,0.004,0.003,0.004,0.007,0.011,0.014,0.015,0.014,0.011,0.01,0.011,0.012,0.015,0.021,0.03,0.041,0.052,0.062,0.072,0.082,0.093,0.107,0.125,0.146,0.17,0.192,0.212,0.227,0.237,0.243,0.247,0.249,0.242,0.198,0.091,0.092,0.092,0.093,0.093,0.094,0.094,0.095,0.095,0.096,0.096,0.097,0.097,0.098,0.099,0.099,0.3,0.386,0.404,0.398,0.354,0.253,0.252,0.251,0.25,0.249,0.248,0.247,0.245,0.244,0.243,0.242,0.241,0.24,0.131,0.093,0.098,0.114,0.131,0.147,0.16,0.163,0.124,-0.036,0.117,0.209,0.282,0.331,0.365,0.396,0.424,0.45,0.473,0.493,0.509,0.522,0.532,0.539,0.545,0.548,0.55,0.551,0.551,0.552,0.552,0.553,0.554,0.556,0.557,0.556,0.55,-0.747,-0.78,-0.845,-0.834,-0.823,-0.812,-0.801,-0.79,-0.779,-0.767,-0.756,-0.745,-0.734,-0.723,-0.712,-0.701,-0.368,-0.226,-0.177,-0.168,-0.159,-0.151,-0.099,-0.095,-0.09,-0.085,-0.081,-0.076,-0.071,-0.067,-0.004,0.027,0.037,0.038,0.034,0.028,0.023,0.02,0.022,0.025,0.03,0.034,0.036,0.035,0.032,0.028,0.025,0.024,0.027,0.033,0.043,0.055,0.067,0.078,0.087,0.096,0.107,0.121,0.139,0.162,0.187,0.21,0.229,0.243,0.252,0.257,0.259,0.26,0.253,0.211,0.104,0.104,0.105,0.105,0.106,0.106,0.107,0.107,0.108,0.108,0.109,0.109,0.11,0.11,0.111,0.112,0.322,0.411,0.428,0.423,0.377,0.265,0.264,0.263,0.262,0.261,0.26,0.259,0.258,0.257,0.256,0.255,0.254,0.252,0.177,0.151,0.157,0.174,0.194,0.217,0.24,0.261,0.267,0.247,0.293,0.324,0.347,0.375,0.406,0.435,0.463,0.488,0.511,0.531,0.548,0.563,0.575,0.585,0.592,0.598,0.603,0.606,0.609,0.611,0.612,0.612,0.612,0.611,0.607,0.59,0.55,-0.668,-0.724,-0.839,-0.828,-0.817,-0.806,-0.795,-0.784,-0.773,-0.762,-0.751,-0.74,-0.729,-0.718,-0.707,-0.696,-0.353,-0.21,-0.169,-0.16,-0.151,-0.143,-0.092,-0.087,-0.083,-0.078,-0.073,-0.069,-0.064,-0.059,0.012,0.047,0.059,0.06,0.056,0.048,0.041,0.038,0.038,0.043,0.048,0.053,0.055,0.055,0.052,0.046,0.041,0.037,0.039,0.045,0.056,0.07,0.084,0.095,0.103,0.111,0.12,0.133,0.151,0.174,0.199,0.222,0.239,0.251,0.258,0.261,0.262,0.262,0.256,0.216,0.116,0.117,0.117,0.118,0.118,0.119,0.119,0.12,0.12,0.121,0.121,0.122,0.122,0.123,0.123,0.124,0.331,0.418,0.435,0.429,0.385,0.278,0.277,0.276,0.275,0.274,0.273,0.271,0.27,0.269,0.268,0.267,0.266,0.265,0.238,0.229,0.234,0.248,0.269,0.297,0.329,0.362,0.39,0.406,0.423,0.422,0.409,0.419,0.445,0.474,0.501,0.527,0.55,0.571,0.589,0.606,0.62,0.632,0.643,0.651,0.659,0.664,0.669,0.671,0.673,0.672,0.671,0.668,0.659,0.626,0.55,-0.612,-0.683,-0.833,-0.822,-0.811,-0.8,-0.789,-0.778,-0.767,-0.756,-0.745,-0.734,-0.723,-0.712,-0.701,-0.69,-0.339,-0.195,-0.16,-0.152,-0.143,-0.134,-0.085,-0.08,-0.075,-0.071,-0.066,-0.061,-0.057,-0.052,0.021,0.058,0.072,0.075,0.071,0.063,0.055,0.051,0.052,0.057,0.063,0.068,0.071,0.071,0.068,0.061,0.054,0.051,0.053,0.059,0.071,0.087,0.102,0.113,0.12,0.126,0.133,0.144,0.162,0.185,0.209,0.231,0.247,0.257,0.262,0.264,0.264,0.263,0.257,0.22,0.129,0.129,0.13,0.13,0.131,0.131,0.132,0.132,0.133,0.133,0.134,0.134,0.135,0.135,0.136,0.137,0.337,0.421,0.437,0.431,0.39,0.29,0.289,0.288,0.287,0.286,0.285,0.284,0.283,0.282,0.281,0.28,0.278,0.277,0.298,0.308,0.313,0.324,0.345,0.376,0.414,0.452,0.483,0.505,0.514,0.497,0.461,0.459,0.483,0.511,0.539,0.564,0.588,0.609,0.629,0.646,0.662,0.676,0.688,0.699,0.707,0.714,0.719,0.722,0.724,0.723,0.721,0.717,0.704,0.658,0.55,-0.577,-0.657,-0.827,-0.816,-0.805,-0.794,-0.783,-0.772,-0.761,-0.75,-0.739,-0.728,-0.717,-0.706,-0.695,-0.684,-0.328,-0.184,-0.152,-0.143,-0.135,-0.126,-0.077,-0.073,-0.068,-0.063,-0.059,-0.054,-0.049,-0.045,0.024,0.061,0.075,0.079,0.077,0.069,0.062,0.059,0.062,0.067,0.074,0.079,0.082,0.083,0.08,0.074,0.069,0.069,0.073,0.081,0.092,0.108,0.123,0.133,0.138,0.141,0.146,0.156,0.172,0.194,0.218,0.238,0.252,0.261,0.264,0.265,0.265,0.265,0.259,0.226,0.141,0.142,0.142,0.143,0.143,0.144,0.144,0.145,0.145,0.146,0.146,0.147,0.147,0.148,0.148,0.149,0.342,0.422,0.437,0.432,0.394,0.303,0.302,0.301,0.3,0.298,0.297,0.296,0.295,0.294,0.293,0.292,0.291,0.29,0.349,0.375,0.383,0.393,0.413,0.444,0.483,0.52,0.548,0.566,0.57,0.547,0.502,0.496,0.519,0.547,0.574,0.599,0.623,0.645,0.664,0.682,0.699,0.713,0.725,0.735,0.744,0.751,0.755,0.758,0.759,0.759,0.756,0.752,0.738,0.681,0.55,-0.559,-0.643,-0.821,-0.81,-0.799,-0.788,-0.777,-0.766,-0.755,-0.744,-0.733,-0.722,-0.711,-0.7,-0.689,-0.678,-0.321,-0.176,-0.144,-0.135,-0.126,-0.118,-0.07,-0.065,-0.061,-0.056,-0.051,-0.047,-0.042,-0.037,0.024,0.054,0.06,0.065,0.066,0.063,0.06,0.06,0.064,0.071,0.077,0.083,0.087,0.09,0.09,0.089,0.089,0.092,0.099,0.107,0.117,0.13,0.142,0.15,0.154,0.157,0.162,0.17,0.184,0.201,0.219,0.235,0.247,0.255,0.259,0.261,0.263,0.264,0.261,0.236,0.154,0.154,0.155,0.155,0.156,0.156,0.157,0.157,0.158,0.158,0.159,0.159,0.16,0.16,0.161,0.161,0.345,0.421,0.436,0.431,0.397,0.315,0.314,0.313,0.312,0.311,0.31,0.309,0.308,0.307,0.306,0.304,0.303,0.302,0.392,0.431,0.442,0.45,0.468,0.497,0.533,0.564,0.587,0.599,0.6,0.577,0.534,0.529,0.551,0.579,0.605,0.63,0.654,0.675,0.694,0.712,0.727,0.74,0.752,0.761,0.768,0.773,0.777,0.779,0.78,0.78,0.778,0.774,0.76,0.697,0.55,-0.554,-0.638,-0.815,-0.804,-0.793,-0.782,-0.771,-0.76,-0.749,-0.738,-0.727,-0.716,-0.705,-0.694,-0.683,-0.672,-0.317,-0.171,-0.135,-0.127,-0.118,-0.109,-0.063,-0.058,-0.053,-0.049,-0.044,-0.039,-0.035,-0.03,0.023,0.04,0.018,0.025,0.032,0.039,0.046,0.053,0.06,0.066,0.073,0.08,0.087,0.094,0.101,0.108,0.115,0.122,0.128,0.135,0.142,0.149,0.156,0.163,0.17,0.177,0.184,0.191,0.197,0.204,0.211,0.218,0.225,0.232,0.239,0.246,0.253,0.26,0.266,0.273,0.166,0.167,0.167,0.168,0.168,0.169,0.169,0.17,0.17,0.171,0.171,0.172,0.172,0.173,0.173,0.174,0.354,0.418,0.431,0.428,0.401,0.328,0.327,0.326,0.324,0.323,0.322,0.321,0.32,0.319,0.318,0.317,0.316,0.315,0.435,0.481,0.492,0.498,0.511,0.536,0.565,0.591,0.607,0.615,0.614,0.595,0.559,0.558,0.581,0.607,0.633,0.657,0.68,0.7,0.718,0.734,0.748,0.76,0.769,0.777,0.782,0.786,0.789,0.791,0.791,0.791,0.789,0.787,0.773,0.707,0.55,-0.555,-0.637,-0.809,-0.798,-0.787,-0.776,-0.765,-0.754,-0.743,-0.732,-0.721,-0.71,-0.699,-0.688,-0.677,-0.666,-0.315,-0.168,-0.127,-0.118,-0.11,-0.101,-0.056,-0.04,-0.033,-0.027,-0.019,-0.011,-0.002,0.009,0.03,0.041,0.04,0.044,0.049,0.053,0.057,0.063,0.071,0.078,0.085,0.091,0.097,0.102,0.107,0.112,0.118,0.124,0.132,0.141,0.151,0.163,0.172,0.178,0.181,0.184,0.187,0.194,0.204,0.216,0.228,0.24,0.249,0.256,0.262,0.267,0.271,0.275,0.279,0.284,0.29,0.29,0.29,0.29,0.29,0.29,0.255,0.252,0.256,0.264,0.274,0.286,0.299,0.31,0.321,0.338,0.395,0.419,0.424,0.423,0.411,0.385,0.365,0.338,0.308,0.285,0.277,0.285,0.303,0.325,0.349,0.371,0.39,0.414,0.495,0.529,0.535,0.535,0.543,0.561,0.585,0.605,0.616,0.621,0.62,0.605,0.579,0.583,0.606,0.632,0.657,0.68,0.701,0.72,0.736,0.751,0.763,0.773,0.781,0.786,0.791,0.793,0.795,0.796,0.796,0.796,0.795,0.793,0.78,0.713,0.55,-0.559,-0.638,-0.803,-0.792,-0.781,-0.77,-0.759,-0.748,-0.737,-0.726,-0.715,-0.704,-0.693,-0.682,-0.671,-0.66,-0.314,-0.168,-0.119,-0.11,-0.101,-0.093,-0.028,-0.021,-0.014,-0.008,-0.001,0.006,0.013,0.02,0.027,0.033,0.04,0.047,0.054,0.061,0.068,0.074,0.081,0.088,0.095,0.102,0.108,0.115,0.122,0.129,0.136,0.143,0.149,0.156,0.163,0.17,0.177,0.184,0.19,0.197,0.204,0.211,0.218,0.225,0.231,0.238,0.245,0.252,0.259,0.266,0.272,0.279,0.286,0.293,0.29,0.29,0.29,0.29,0.29,0.29,0.284,0.285,0.291,0.3,0.313,0.329,0.345,0.361,0.374,0.386,0.403,0.41,0.412,0.411,0.409,0.421,0.417,0.414,0.41,0.406,0.402,0.398,0.395,0.391,0.387,0.383,0.38,0.376,0.516,0.56,0.566,0.563,0.565,0.577,0.596,0.611,0.62,0.624,0.623,0.613,0.597,0.605,0.628,0.653,0.676,0.698,0.717,0.735,0.75,0.762,0.773,0.781,0.787,0.792,0.795,0.797,0.798,0.798,0.798,0.798,0.798,0.796,0.783,0.716,0.55,-0.563,-0.64,-0.797,-0.786,-0.775,-0.764,-0.753,-0.742,-0.731,-0.72,-0.709,-0.698,-0.687,-0.676,-0.665,-0.654,-0.316,-0.177,-0.146,-0.137,-0.116,-0.076,-0.039,-0.029,-0.023,-0.016,-0.009,-0.002,0.004,0.009,0.014,0.017,0.02,0.022,0.026,0.034,0.044,0.057,0.07,0.081,0.089,0.095,0.099,0.104,0.109,0.117,0.126,0.139,0.153,0.168,0.18,0.188,0.191,0.191,0.189,0.188,0.19,0.197,0.21,0.227,0.246,0.262,0.275,0.284,0.29,0.294,0.296,0.298,0.299,0.301,0.3,0.298,0.296,0.294,0.292,0.291,0.29,0.292,0.297,0.305,0.317,0.332,0.347,0.362,0.375,0.385,0.393,0.397,0.397,0.393,0.384,0.371,0.348,0.32,0.295,0.282,0.287,0.313,0.355,0.405,0.45,0.483,0.503,0.522,0.569,0.587,0.586,0.581,0.579,0.587,0.601,0.614,0.621,0.625,0.625,0.619,0.612,0.624,0.646,0.67,0.692,0.712,0.73,0.746,0.759,0.77,0.779,0.786,0.791,0.795,0.797,0.798,0.799,0.799,0.799,0.799,0.799,0.798,0.785,0.717,0.55,-0.565,-0.64,-0.791,-0.78,-0.769,-0.758,-0.747,-0.736,-0.725,-0.714,-0.703,-0.692,-0.681,-0.67,-0.659,-0.648,-0.319,-0.185,-0.158,-0.151,-0.125,-0.07,-0.038,-0.029,-0.024,-0.018,-0.011,-0.006,-0.003,0,0.002,0.004,0.005,0.006,0.01,0.018,0.031,0.047,0.063,0.077,0.086,0.092,0.095,0.099,0.104,0.112,0.123,0.138,0.156,0.172,0.185,0.192,0.194,0.191,0.186,0.183,0.184,0.192,0.208,0.23,0.253,0.273,0.288,0.298,0.304,0.307,0.308,0.308,0.308,0.308,0.306,0.304,0.301,0.297,0.295,0.293,0.292,0.293,0.297,0.304,0.315,0.327,0.341,0.354,0.365,0.374,0.38,0.383,0.382,0.376,0.364,0.345,0.318,0.289,0.265,0.257,0.272,0.312,0.372,0.44,0.5,0.541,0.565,0.581,0.596,0.6,0.597,0.59,0.586,0.591,0.602,0.613,0.621,0.624,0.625,0.624,0.624,0.639,0.662,0.684,0.705,0.723,0.74,0.754,0.766,0.776,0.784,0.789,0.794,0.796,0.798,0.799,0.799,0.8,0.8,0.8,0.799,0.798,0.786,0.718,0.55,-0.566,-0.639,-0.785,-0.774,-0.763,-0.752,-0.741,-0.73,-0.719,-0.708,-0.697,-0.686,-0.675,-0.664,-0.653,-0.642,-0.324,-0.192,-0.165,-0.158,-0.128,-0.068,-0.035,-0.026,-0.021,-0.016,-0.011,-0.008,-0.007,-0.006,-0.005,-0.005,-0.004,-0.002,0.003,0.012,0.025,0.042,0.059,0.074,0.084,0.091,0.095,0.098,0.104,0.111,0.122,0.137,0.154,0.169,0.18,0.186,0.188,0.185,0.182,0.18,0.183,0.192,0.209,0.231,0.255,0.275,0.291,0.301,0.308,0.311,0.312,0.313,0.312,0.312,0.31,0.307,0.304,0.3,0.297,0.295,0.293,0.294,0.297,0.303,0.312,0.322,0.334,0.346,0.355,0.363,0.368,0.369,0.367,0.361,0.35,0.333,0.313,0.294,0.282,0.285,0.308,0.353,0.413,0.478,0.532,0.568,0.588,0.599,0.605,0.606,0.601,0.594,0.589,0.591,0.6,0.611,0.618,0.622,0.624,0.627,0.635,0.652,0.674,0.695,0.714,0.732,0.747,0.76,0.771,0.779,0.786,0.791,0.795,0.797,0.798,0.799,0.8,0.8,0.8,0.8,0.8,0.799,0.786,0.719,0.55,-0.564,-0.635,-0.78,-0.769,-0.758,-0.747,-0.735,-0.724,-0.713,-0.702,-0.691,-0.68,-0.669,-0.658,-0.647,-0.636,-0.329,-0.2,-0.172,-0.163,-0.131,-0.067,-0.033,-0.024,-0.019,-0.014,-0.011,-0.009,-0.009,-0.01,-0.01,-0.01,-0.009,-0.006,-0.001,0.008,0.022,0.038,0.055,0.07,0.081,0.088,0.093,0.098,0.103,0.11,0.121,0.133,0.147,0.16,0.17,0.175,0.177,0.176,0.175,0.176,0.181,0.191,0.209,0.231,0.254,0.274,0.289,0.3,0.307,0.311,0.313,0.313,0.313,0.312,0.311,0.308,0.305,0.301,0.298,0.295,0.294,0.294,0.296,0.301,0.308,0.317,0.327,0.337,0.346,0.352,0.356,0.357,0.355,0.349,0.34,0.329,0.317,0.308,0.307,0.319,0.346,0.39,0.445,0.501,0.547,0.578,0.595,0.603,0.607,0.606,0.6,0.593,0.588,0.589,0.596,0.606,0.613,0.618,0.622,0.628,0.642,0.662,0.684,0.703,0.721,0.737,0.751,0.763,0.773,0.781,0.787,0.792,0.795,0.797,0.798,0.799,0.799,0.799,0.799,0.799,0.799,0.798,0.786,0.718,0.55,-0.56,-0.63,-0.774,-0.763,-0.752,-0.741,-0.73,-0.719,-0.708,-0.697,-0.686,-0.675,-0.664,-0.652,-0.641,-0.63,-0.334,-0.208,-0.18,-0.169,-0.137,-0.079,-0.046,-0.037,-0.033,-0.03,-0.027,-0.026,-0.026,-0.027,-0.028,-0.027,-0.026,-0.023,-0.018,-0.009,0.003,0.018,0.034,0.048,0.059,0.066,0.072,0.077,0.083,0.09,0.099,0.109,0.121,0.131,0.14,0.146,0.15,0.152,0.154,0.158,0.165,0.178,0.196,0.218,0.24,0.26,0.275,0.287,0.294,0.299,0.301,0.303,0.303,0.302,0.301,0.299,0.296,0.293,0.29,0.287,0.285,0.285,0.287,0.291,0.297,0.304,0.312,0.321,0.328,0.333,0.336,0.337,0.336,0.332,0.327,0.32,0.315,0.314,0.321,0.338,0.367,0.407,0.455,0.502,0.541,0.569,0.586,0.595,0.598,0.598,0.593,0.588,0.583,0.584,0.59,0.598,0.606,0.612,0.616,0.626,0.645,0.667,0.687,0.704,0.721,0.735,0.748,0.758,0.767,0.774,0.779,0.783,0.784,0.786,0.787,0.788,0.788,0.788,0.788,0.788,0.788,0.787,0.775,0.709,0.55,-0.553,-0.625,-0.768,-0.757,-0.746,-0.735,-0.724,-0.713,-0.702,-0.691,-0.68,-0.669,-0.658,-0.647,-0.636,-0.625,-0.338,-0.216,-0.188,-0.18,-0.165,-0.142,-0.127,-0.121,-0.119,-0.117,-0.115,-0.115,-0.115,-0.115,-0.116,-0.115,-0.114,-0.112,-0.107,-0.101,-0.092,-0.081,-0.069,-0.059,-0.05,-0.043,-0.038,-0.033,-0.027,-0.021,-0.013,-0.003,0.007,0.018,0.028,0.038,0.047,0.056,0.066,0.077,0.092,0.11,0.131,0.154,0.177,0.197,0.214,0.226,0.235,0.242,0.246,0.249,0.25,0.251,0.251,0.249,0.248,0.246,0.244,0.242,0.241,0.241,0.242,0.245,0.249,0.254,0.26,0.266,0.271,0.275,0.278,0.279,0.279,0.278,0.277,0.276,0.278,0.283,0.294,0.314,0.341,0.377,0.417,0.458,0.493,0.522,0.542,0.557,0.566,0.572,0.573,0.573,0.574,0.576,0.582,0.59,0.597,0.602,0.607,0.617,0.635,0.653,0.668,0.681,0.693,0.704,0.713,0.72,0.727,0.732,0.735,0.735,0.731,0.73,0.73,0.731,0.731,0.731,0.731,0.731,0.731,0.73,0.72,0.67,0.55,-0.543,-0.638,-0.762,-0.751,-0.74,-0.729,-0.718,-0.707,-0.696,-0.685,-0.674,-0.663,-0.652,-0.641,-0.63,-0.619,-0.349,-0.232,-0.206,-0.207,-0.228,-0.265,-0.287,-0.292,-0.292,-0.292,-0.291,-0.291,-0.291,-0.291,-0.291,-0.291,-0.291,-0.29,-0.288,-0.285,-0.282,-0.277,-0.272,-0.268,-0.263,-0.259,-0.256,-0.251,-0.246,-0.24,-0.232,-0.223,-0.211,-0.198,-0.183,-0.166,-0.147,-0.126,-0.104,-0.079,-0.053,-0.025,0.003,0.03,0.055,0.077,0.096,0.111,0.123,0.132,0.139,0.144,0.148,0.151,0.152,0.153,0.154,0.154,0.154,0.153,0.153,0.153,0.154,0.155,0.157,0.159,0.162,0.164,0.167,0.169,0.171,0.173,0.175,0.178,0.181,0.186,0.193,0.203,0.218,0.238,0.263,0.294,0.329,0.365,0.401,0.434,0.464,0.49,0.511,0.529,0.542,0.553,0.561,0.569,0.576,0.583,0.589,0.593,0.596,0.601,0.61,0.617,0.624,0.629,0.633,0.638,0.641,0.644,0.646,0.648,0.648,0.641,0.627,0.619,0.618,0.618,0.618,0.618,0.618,0.618,0.618,0.618,0.616,0.598,0.55,-0.53,-0.729,-0.756,-0.745,-0.734,-0.723,-0.712,-0.701,-0.69,-0.679,-0.668,-0.657,-0.646,-0.635,-0.624,-0.613,-0.398,-0.282,-0.256,-0.259,-0.288,-0.342,-0.372,-0.379,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.379,-0.379,-0.378,-0.377,-0.375,-0.373,-0.371,-0.369,-0.366,-0.363,-0.358,-0.352,-0.345,-0.335,-0.323,-0.309,-0.291,-0.271,-0.247,-0.22,-0.19,-0.158,-0.125,-0.092,-0.061,-0.031,-0.004,0.019,0.039,0.055,0.068,0.079,0.087,0.093,0.098,0.101,0.104,0.105,0.107,0.108,0.108,0.109,0.109,0.109,0.11,0.11,0.111,0.111,0.112,0.113,0.114,0.116,0.117,0.119,0.122,0.126,0.131,0.138,0.147,0.159,0.175,0.195,0.22,0.249,0.282,0.318,0.355,0.392,0.427,0.459,0.487,0.511,0.531,0.546,0.559,0.568,0.576,0.582,0.587,0.59,0.593,0.595,0.598,0.6,0.601,0.602,0.604,0.604,0.605,0.606,0.606,0.606,0.604,0.594,0.574,0.564,0.562,0.562,0.562,0.562,0.562,0.562,0.562,0.562,0.562,0.559,0.55,-1.2,-1.058,-1.053,-1.053,-1.051,-1.047,-1.043,-1.04,-1.036,-1.033,-1.029,-1.026,-1.022,-1.016,-0.984,-0.841,-0.538,-0.379,-0.346,-0.344,-0.356,-0.382,-0.395,-0.397,-0.397,-0.397,-0.398,-0.398,-0.398,-0.398,-0.398,-0.398,-0.398,-0.398,-0.397,-0.397,-0.397,-0.396,-0.395,-0.394,-0.393,-0.391,-0.389,-0.386,-0.381,-0.376,-0.369,-0.359,-0.348,-0.333,-0.315,-0.294,-0.269,-0.24,-0.208,-0.174,-0.14,-0.105,-0.072,-0.041,-0.014,0.01,0.03,0.047,0.06,0.07,0.078,0.084,0.089,0.092,0.095,0.097,0.098,0.099,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.102,0.102,0.103,0.103,0.104,0.106,0.108,0.11,0.114,0.119,0.126,0.135,0.147,0.163,0.183,0.208,0.237,0.271,0.308,0.346,0.385,0.423,0.457,0.486,0.512,0.532,0.549,0.562,0.571,0.579,0.584,0.588,0.591,0.593,0.595,0.596,0.597,0.598,0.598,0.598,0.599,0.599,0.599,0.599,0.598,0.596,0.585,0.564,0.553,0.551,0.551,0.551,0.551,0.551,0.551,0.551,0.551,0.551,0.551,0.55,-1.2,-1.175,-1.177,-1.177,-1.177,-1.176,-1.176,-1.175,-1.175,-1.174,-1.174,-1.173,-1.173,-1.17,-1.134,-0.955,-0.605,-0.425,-0.39,-0.388,-0.39,-0.396,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.398,-0.397,-0.396,-0.394,-0.392,-0.389,-0.385,-0.38,-0.373,-0.364,-0.352,-0.338,-0.32,-0.299,-0.273,-0.244,-0.212,-0.177,-0.141,-0.105,-0.071,-0.04,-0.012,0.012,0.032,0.048,0.061,0.072,0.079,0.085,0.09,0.093,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.103,0.104,0.106,0.108,0.111,0.116,0.122,0.131,0.143,0.159,0.179,0.203,0.233,0.268,0.306,0.346,0.386,0.425,0.46,0.491,0.516,0.537,0.553,0.565,0.575,0.582,0.587,0.59,0.593,0.595,0.596,0.597,0.598,0.598,0.598,0.599,0.599,0.599,0.599,0.599,0.598,0.596,0.585,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.198,-1.199,-1.199,-1.199,-1.199,-1.199,-1.199,-1.199,-1.198,-1.198,-1.198,-1.198,-1.196,-1.161,-0.978,-0.616,-0.434,-0.399,-0.397,-0.397,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.396,-0.395,-0.393,-0.39,-0.387,-0.382,-0.375,-0.367,-0.355,-0.341,-0.324,-0.302,-0.276,-0.247,-0.214,-0.178,-0.141,-0.105,-0.07,-0.038,-0.01,0.015,0.035,0.051,0.064,0.074,0.081,0.087,0.091,0.094,0.096,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.103,0.104,0.107,0.11,0.114,0.12,0.128,0.14,0.155,0.175,0.2,0.23,0.265,0.305,0.346,0.388,0.428,0.464,0.495,0.52,0.541,0.557,0.569,0.578,0.584,0.589,0.592,0.595,0.596,0.597,0.598,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.597,0.585,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.434,-0.4,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.392,-0.388,-0.384,-0.377,-0.369,-0.358,-0.344,-0.327,-0.305,-0.279,-0.249,-0.216,-0.179,-0.142,-0.104,-0.069,-0.036,-0.007,0.017,0.037,0.053,0.066,0.075,0.083,0.088,0.092,0.095,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.102,0.104,0.105,0.108,0.112,0.118,0.126,0.137,0.152,0.171,0.196,0.227,0.263,0.304,0.347,0.39,0.43,0.467,0.499,0.524,0.545,0.56,0.572,0.58,0.586,0.591,0.594,0.596,0.597,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.597,0.586,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.4,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.398,-0.397,-0.395,-0.393,-0.389,-0.385,-0.379,-0.371,-0.36,-0.347,-0.329,-0.308,-0.282,-0.251,-0.217,-0.18,-0.142,-0.104,-0.068,-0.035,-0.006,0.019,0.039,0.055,0.067,0.077,0.084,0.089,0.093,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.104,0.107,0.11,0.116,0.123,0.134,0.149,0.168,0.193,0.224,0.261,0.303,0.347,0.391,0.433,0.47,0.502,0.528,0.548,0.563,0.575,0.583,0.588,0.592,0.595,0.597,0.598,0.599,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.597,0.586,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.4,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.391,-0.386,-0.381,-0.373,-0.362,-0.349,-0.332,-0.31,-0.284,-0.253,-0.219,-0.181,-0.142,-0.103,-0.067,-0.033,-0.004,0.021,0.041,0.057,0.069,0.078,0.085,0.09,0.093,0.096,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.106,0.109,0.114,0.121,0.132,0.146,0.165,0.19,0.222,0.259,0.302,0.347,0.392,0.435,0.473,0.505,0.531,0.551,0.566,0.577,0.584,0.59,0.593,0.596,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.4,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.398,-0.396,-0.394,-0.391,-0.387,-0.382,-0.374,-0.364,-0.351,-0.333,-0.312,-0.286,-0.255,-0.22,-0.182,-0.142,-0.103,-0.066,-0.032,-0.002,0.022,0.042,0.058,0.07,0.079,0.086,0.091,0.094,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.105,0.108,0.113,0.12,0.13,0.144,0.163,0.188,0.22,0.258,0.301,0.347,0.393,0.437,0.475,0.508,0.533,0.553,0.568,0.578,0.586,0.591,0.594,0.596,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.401,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.392,-0.388,-0.383,-0.375,-0.365,-0.352,-0.335,-0.313,-0.287,-0.256,-0.221,-0.183,-0.143,-0.103,-0.065,-0.031,-0.001,0.024,0.044,0.059,0.071,0.08,0.087,0.091,0.094,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.103,0.104,0.107,0.112,0.119,0.128,0.142,0.161,0.186,0.218,0.257,0.3,0.347,0.394,0.438,0.477,0.51,0.535,0.555,0.57,0.58,0.587,0.592,0.595,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.618,-0.435,-0.401,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.392,-0.389,-0.383,-0.376,-0.366,-0.353,-0.336,-0.314,-0.288,-0.257,-0.222,-0.183,-0.143,-0.103,-0.065,-0.03,0,0.024,0.044,0.06,0.072,0.081,0.087,0.091,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.118,0.127,0.141,0.16,0.185,0.217,0.256,0.3,0.347,0.395,0.439,0.478,0.511,0.537,0.556,0.571,0.581,0.588,0.592,0.595,0.597,0.598,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.618,-0.435,-0.401,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.376,-0.367,-0.354,-0.337,-0.315,-0.289,-0.258,-0.222,-0.183,-0.143,-0.102,-0.064,-0.03,0,0.025,0.045,0.06,0.072,0.081,0.087,0.092,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.117,0.127,0.14,0.159,0.184,0.216,0.255,0.3,0.347,0.395,0.44,0.479,0.512,0.538,0.557,0.571,0.581,0.588,0.593,0.596,0.597,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.618,-0.435,-0.401,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.377,-0.367,-0.354,-0.337,-0.315,-0.289,-0.258,-0.222,-0.183,-0.143,-0.102,-0.064,-0.03,0,0.025,0.045,0.061,0.072,0.081,0.087,0.092,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.106,0.111,0.117,0.126,0.14,0.159,0.184,0.216,0.255,0.3,0.347,0.395,0.44,0.479,0.512,0.538,0.557,0.572,0.582,0.588,0.593,0.596,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.618,-0.435,-0.401,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.393,-0.389,-0.384,-0.376,-0.367,-0.354,-0.337,-0.315,-0.289,-0.258,-0.222,-0.183,-0.143,-0.102,-0.064,-0.03,0,0.025,0.045,0.06,0.072,0.081,0.087,0.092,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.117,0.127,0.14,0.159,0.184,0.216,0.255,0.3,0.347,0.395,0.44,0.479,0.512,0.538,0.557,0.571,0.581,0.588,0.593,0.596,0.597,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.618,-0.435,-0.401,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.392,-0.389,-0.383,-0.376,-0.366,-0.353,-0.336,-0.314,-0.288,-0.257,-0.222,-0.183,-0.143,-0.103,-0.065,-0.03,0,0.024,0.044,0.06,0.072,0.081,0.087,0.091,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.107,0.111,0.118,0.127,0.141,0.16,0.185,0.217,0.256,0.3,0.347,0.395,0.439,0.478,0.511,0.537,0.556,0.571,0.581,0.588,0.592,0.595,0.597,0.598,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.401,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.395,-0.392,-0.388,-0.383,-0.375,-0.365,-0.352,-0.335,-0.313,-0.287,-0.256,-0.221,-0.183,-0.143,-0.103,-0.065,-0.031,-0.001,0.024,0.044,0.059,0.071,0.08,0.087,0.091,0.094,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.103,0.104,0.107,0.112,0.119,0.128,0.142,0.161,0.186,0.218,0.257,0.3,0.347,0.394,0.438,0.477,0.51,0.535,0.555,0.57,0.58,0.587,0.592,0.595,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.4,-0.398,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.398,-0.396,-0.394,-0.391,-0.387,-0.382,-0.374,-0.364,-0.351,-0.333,-0.312,-0.286,-0.255,-0.22,-0.182,-0.142,-0.103,-0.066,-0.032,-0.002,0.022,0.042,0.058,0.07,0.079,0.086,0.091,0.094,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.105,0.108,0.113,0.12,0.13,0.144,0.163,0.188,0.22,0.258,0.301,0.347,0.393,0.437,0.475,0.508,0.533,0.553,0.568,0.578,0.586,0.591,0.594,0.596,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.4,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.391,-0.386,-0.381,-0.373,-0.362,-0.349,-0.332,-0.31,-0.284,-0.253,-0.219,-0.181,-0.142,-0.103,-0.067,-0.033,-0.004,0.021,0.041,0.057,0.069,0.078,0.085,0.09,0.093,0.096,0.097,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.104,0.106,0.109,0.114,0.121,0.132,0.146,0.165,0.19,0.222,0.259,0.302,0.347,0.392,0.435,0.473,0.505,0.531,0.551,0.566,0.577,0.584,0.59,0.593,0.596,0.597,0.598,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.597,0.586,0.564,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.435,-0.4,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.398,-0.398,-0.397,-0.395,-0.393,-0.389,-0.385,-0.379,-0.371,-0.36,-0.347,-0.329,-0.308,-0.282,-0.251,-0.217,-0.18,-0.142,-0.104,-0.068,-0.035,-0.006,0.019,0.039,0.055,0.067,0.077,0.084,0.089,0.093,0.095,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.104,0.107,0.11,0.116,0.123,0.134,0.149,0.168,0.193,0.224,0.261,0.303,0.347,0.391,0.433,0.47,0.502,0.528,0.548,0.563,0.575,0.583,0.588,0.592,0.595,0.597,0.598,0.599,0.599,0.599,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.599,0.597,0.586,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.434,-0.4,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.396,-0.394,-0.392,-0.388,-0.384,-0.377,-0.369,-0.358,-0.344,-0.327,-0.305,-0.279,-0.249,-0.216,-0.179,-0.142,-0.104,-0.069,-0.036,-0.007,0.017,0.037,0.053,0.066,0.075,0.083,0.088,0.092,0.095,0.096,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.102,0.104,0.105,0.108,0.112,0.118,0.126,0.137,0.152,0.171,0.196,0.227,0.263,0.304,0.347,0.39,0.43,0.467,0.499,0.524,0.545,0.56,0.572,0.58,0.586,0.591,0.594,0.596,0.597,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.597,0.586,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.163,-0.98,-0.617,-0.434,-0.399,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.4,-0.4,-0.4,-0.4,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.397,-0.396,-0.395,-0.393,-0.39,-0.387,-0.382,-0.375,-0.367,-0.355,-0.341,-0.324,-0.302,-0.276,-0.247,-0.214,-0.178,-0.141,-0.105,-0.07,-0.038,-0.01,0.015,0.035,0.051,0.064,0.074,0.081,0.087,0.091,0.094,0.096,0.097,0.098,0.099,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.101,0.101,0.101,0.101,0.102,0.103,0.104,0.107,0.11,0.114,0.12,0.128,0.14,0.155,0.175,0.2,0.23,0.265,0.305,0.346,0.388,0.428,0.464,0.495,0.52,0.541,0.557,0.569,0.578,0.584,0.589,0.592,0.595,0.596,0.597,0.598,0.598,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.599,0.597,0.585,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.162,-0.98,-0.619,-0.436,-0.401,-0.4,-0.397,-0.397,-0.398,-0.398,-0.398,-0.398,-0.398,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.399,-0.398,-0.398,-0.398,-0.398,-0.397,-0.396,-0.395,-0.393,-0.391,-0.388,-0.384,-0.379,-0.372,-0.363,-0.352,-0.338,-0.32,-0.298,-0.273,-0.244,-0.212,-0.177,-0.141,-0.106,-0.072,-0.04,-0.012,0.011,0.031,0.048,0.061,0.071,0.079,0.084,0.089,0.092,0.094,0.096,0.097,0.098,0.098,0.099,0.099,0.099,0.099,0.1,0.1,0.1,0.1,0.101,0.101,0.102,0.103,0.105,0.107,0.11,0.115,0.122,0.13,0.142,0.158,0.177,0.202,0.232,0.266,0.304,0.345,0.385,0.423,0.458,0.489,0.514,0.535,0.551,0.563,0.573,0.579,0.585,0.588,0.591,0.593,0.594,0.595,0.595,0.596,0.596,0.596,0.599,0.599,0.599,0.598,0.598,0.596,0.585,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.162,-0.987,-0.649,-0.473,-0.439,-0.431,-0.393,-0.388,-0.388,-0.388,-0.389,-0.389,-0.389,-0.389,-0.389,-0.389,-0.389,-0.389,-0.389,-0.389,-0.389,-0.389,-0.388,-0.388,-0.387,-0.386,-0.385,-0.383,-0.381,-0.378,-0.374,-0.369,-0.362,-0.353,-0.342,-0.328,-0.311,-0.291,-0.267,-0.239,-0.209,-0.177,-0.143,-0.11,-0.079,-0.049,-0.023,-0.001,0.018,0.034,0.046,0.056,0.064,0.07,0.074,0.077,0.08,0.082,0.083,0.084,0.084,0.085,0.085,0.085,0.086,0.086,0.086,0.086,0.087,0.087,0.088,0.089,0.09,0.092,0.094,0.098,0.102,0.109,0.118,0.129,0.144,0.163,0.187,0.215,0.247,0.282,0.319,0.356,0.391,0.424,0.453,0.477,0.496,0.512,0.524,0.533,0.54,0.546,0.549,0.552,0.554,0.556,0.557,0.557,0.558,0.558,0.563,0.591,0.596,0.596,0.596,0.596,0.593,0.583,0.563,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.198,-1.169,-1.043,-0.811,-0.684,-0.653,-0.613,-0.375,-0.337,-0.334,-0.334,-0.335,-0.335,-0.335,-0.335,-0.335,-0.335,-0.335,-0.335,-0.335,-0.335,-0.335,-0.335,-0.334,-0.334,-0.333,-0.333,-0.332,-0.33,-0.329,-0.326,-0.323,-0.319,-0.314,-0.308,-0.3,-0.29,-0.278,-0.263,-0.246,-0.227,-0.205,-0.183,-0.159,-0.136,-0.114,-0.093,-0.075,-0.059,-0.045,-0.034,-0.025,-0.018,-0.012,-0.008,-0.005,-0.002,0,0.001,0.002,0.003,0.003,0.003,0.004,0.004,0.004,0.004,0.005,0.005,0.005,0.005,0.006,0.007,0.008,0.009,0.011,0.014,0.017,0.022,0.029,0.037,0.048,0.062,0.078,0.098,0.12,0.145,0.171,0.197,0.221,0.244,0.264,0.281,0.296,0.307,0.316,0.323,0.328,0.332,0.335,0.337,0.338,0.34,0.34,0.341,0.341,0.344,0.372,0.552,0.58,0.583,0.582,0.582,0.58,0.573,0.559,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-1.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55],"zones":[{"id":"garten","label":"Garten Kellenberger","polygon":[[-20.9,-6.6],[3,-6.6],[3,5.95],[-20.9,5.95]]},{"id":"zufahrt","label":"Feuerwehrzufahrt / Schotterwiese West","polygon":[[-26,-9],[-20.9,-9],[-20.9,6.5],[-26,6.5]]},{"id":"zollet","label":"Nachbargarten Zollet","polygon":[[-24,-14.5],[3,-14.5],[3,-6.6],[-24,-6.6]]},{"id":"sued","label":"Nachbargrundstück Süd","polygon":[[-22,5.95],[6,5.95],[6,12],[-22,12]]},{"id":"ost","label":"Wiese Ost","polygon":[[3,-6.6],[9,-6.6],[9,5.95],[3,5.95]]}],"spots":[{"x":-14.174,"z":-7.683,"y":-1.77,"zone":"zollet"},{"x":-22.166,"z":-7.211,"y":-2.08,"zone":"zufahrt"},{"x":-22.139,"z":5.248,"y":-0.14,"zone":"zufahrt"},{"x":2.948,"z":-7.035,"y":-1.57,"zone":"zollet"},{"x":3.073,"z":-3.825,"y":-0.37,"zone":"ost"},{"x":2.586,"z":-1.113,"y":-0.03,"zone":"garten"},{"x":2.561,"z":0.323,"y":-0.03,"zone":"garten"},{"x":1.7,"z":0.131,"y":-0.03,"zone":"garten"},{"x":2.56,"z":4.31,"y":0.63,"zone":"garten"},{"x":-1.638,"z":3.488,"y":-0.04,"zone":"garten"},{"x":-14.035,"z":3.548,"y":-0.04,"zone":"garten"},{"x":-22.121,"z":1.996,"y":-0.28,"zone":"zufahrt"},{"x":-22.457,"z":0.119,"y":-1.08,"zone":"zufahrt"},{"x":-14.741,"z":-4.532,"y":-0.07,"zone":"garten"},{"x":-14.438,"z":1.353,"y":-0.02,"zone":"garten"},{"x":-14.874,"z":-0.78,"y":-0.02,"zone":"garten"},{"x":-15.545,"z":-1.39,"y":-0.17,"zone":"garten"},{"x":-15.772,"z":-0.831,"y":-0.33,"zone":"garten"},{"x":-17.034,"z":0.729,"y":-0.02,"zone":"garten"},{"x":-22.139,"z":4.442,"y":-0.14,"zone":"zufahrt"},{"x":-14.343,"z":-6.206,"y":-0.28,"zone":"garten"},{"x":-21.559,"z":0.171,"y":-0.28,"zone":"zufahrt"},{"x":-19.494,"z":0.663,"y":-0.3,"zone":"garten"},{"x":-0.92,"z":3.682,"y":0.45,"zone":"garten"},{"x":-3.348,"z":3.191,"y":0.45,"zone":"garten"},{"x":-19.486,"z":-6.3,"y":-0.28,"zone":"garten"},{"x":-21.957,"z":2.65,"y":-0.14,"zone":"zufahrt"},{"x":-9.003,"z":3.661,"y":0.26,"zone":"garten"},{"x":-18.351,"z":3.669,"y":0.14,"zone":"garten"},{"x":-18.918,"z":3.639,"y":-0.04,"zone":"garten"},{"x":-21.417,"z":3.35,"y":-0.13,"zone":"zufahrt"},{"x":-21.041,"z":2.228,"y":-0.32,"zone":"zufahrt"},{"x":-9.137,"z":4.635,"y":0.32,"zone":"garten"},{"x":-14.444,"z":3.887,"y":0.14,"zone":"garten"},{"x":-18.28,"z":4.674,"y":-0.02,"zone":"garten"},{"x":-20.391,"z":3.754,"y":-0.04,"zone":"garten"},{"x":-15.135,"z":4.191,"y":0.09,"zone":"garten"},{"x":-0.282,"z":4.718,"y":0.63,"zone":"garten"},{"x":-14.378,"z":-7.312,"y":-1.35,"zone":"zollet"},{"x":-13.628,"z":4.014,"y":0.26,"zone":"garten"},{"x":-0.455,"z":1.522,"y":0,"zone":"garten"},{"x":1.896,"z":-6.003,"y":-0.72,"zone":"garten"},{"x":4.148,"z":-5.045,"y":-0.72,"zone":"ost"},{"x":1.703,"z":-2.727,"y":-0.02,"zone":"garten"},{"x":0.629,"z":-6.701,"y":-0.72,"zone":"zollet"},{"x":-24.5,"z":-8,"y":-2.6,"zone":"zufahrt"},{"x":-24.5,"z":0,"y":-1.6,"zone":"zufahrt"},{"x":-24.5,"z":5,"y":-0.6,"zone":"zufahrt"},{"x":-22.6,"z":5.5,"y":-0.3,"zone":"zufahrt"},{"x":-20,"z":-12.5,"y":-1.75,"zone":"zollet"},{"x":-8,"z":-12.5,"y":-1.7,"zone":"zollet"},{"x":2,"z":-11.5,"y":-1.65,"zone":"zollet"},{"x":-18,"z":9,"y":-0.4,"zone":"sued"},{"x":-6,"z":9,"y":0.1,"zone":"sued"},{"x":4,"z":9,"y":0.6,"zone":"sued"},{"x":7.5,"z":-5,"y":0.1,"zone":"ost"},{"x":7.5,"z":0,"y":0.45,"zone":"ost"},{"x":7.5,"z":5,"y":0.8,"zone":"ost"}]},"surfaces":[{"type":"tegula","area":53.9,"polygon":[[-25.6,-9],[-22.1,-9],[-22.1,6.4],[-25.6,6.4]],"note":"Feuerwehrzufahrt und Zugangsweg, Tegula-Pflastersteine grau","plane":[0.04405,0.02365,0.2196]},{"type":"travertin80","area":33.41,"polygon":[[-16.241,-0.244],[-16.241,0.556],[-18.641,0.555],[-18.642,3.755],[-20.655,3.754],[-20.654,2.154],[-19.441,2.155],[-19.439,-5.845],[-13.839,-5.844],[-13.839,-4.244],[-14.639,-4.244],[-14.64,-3.085],[-15.276,-3.085],[-15.277,-0.244]],"plane":[0.01863,0.02923,0.2097]},{"type":"dekorkies","area":24.25,"polygon":[[-13.932,0.556],[-13.932,0.506],[-13.821,0.506],[-13.821,0.956],[0.276,0.961],[0.275,0.524],[2.123,0.511],[2.124,1.801],[-4.574,1.799],[-4.575,3.949],[-8.715,3.948],[-8.714,1.798],[-14.725,1.796],[-14.725,0.956],[-14.745,0.956],[-14.745,0.556]],"plane":[0.00209,0.04996,-0.0034]},{"type":"rasen","area":21.35,"polygon":[[-18.242,3.745],[-18.241,0.955],[-14.745,0.956],[-14.745,1.816],[-8.734,1.818],[-8.735,3.748]]},{"type":"keramik","area":20.38,"polygon":[[-13.93,-3.06],[-8.73,-3.06],[-8.73,0.86],[-13.93,0.86]],"note":"Gedeckter Sitzplatz 14.4 m2, Keramikplatten 60x60x2 cm","plane":[0,0,-0.02]},{"type":"dekorkies","area":18.35,"polygon":[[-18.642,3.755],[-18.642,3.945],[-20.655,3.944],[-20.655,4.404],[-21.652,4.404],[-21.649,0.611],[-20.618,0.596],[-20.078,-6.622],[-20.078,-6.322],[-13.819,-6.32],[-13.703,-5.844],[-18.639,-5.845],[-18.639,-5.045],[-19.439,-5.045],[-19.441,2.155]],"plane":[0.03465,0.03326,0.4851]},{"type":"schotterwiese","area":14.14,"polygon":[[-21.74,0.521],[-21.737,-10.773],[-21.737,-10.773],[-20.012,-8.667],[-20.088,-7.67],[-20.287,-7.685],[-20.302,-7.486],[-20.462,-7.498],[-20.523,-6.7],[-20.164,-6.673],[-20.71,0.507]]},{"type":"keramik","area":13.9,"polygon":[[-20.013,-7.465],[-18.77,-7.472],[-18.768,-9.575],[-14.568,-9.573],[-14.567,-11.961],[-13.967,-11.973],[-13.968,-7.173],[-18.168,-7.174],[-18.169,-6.872],[-20.059,-6.865]],"plane":[0,0,-1.56]},{"type":"rasen","area":13.76,"polygon":[[-19.401,-7.468],[-19,-12.703],[-14.567,-11.961],[-14.568,-9.573],[-18.768,-9.575],[-18.77,-7.472]]},{"type":"keramik","area":12.86,"polygon":[[2.115,-4.483],[2.123,0.511],[-0.874,0.51],[-0.873,-2.672],[0.277,-2.672],[0.278,-4.484]],"plane":[-0.01073,-0.00107,-0.005]},{"type":"spielsand","area":6.89,"polygon":[[-0.944,1.82],[-0.945,1.9],[-0.845,1.9],[-0.844,1.8],[-0.144,1.801],[-0.145,3.951],[-3.375,3.95],[-3.374,1.82]],"plane":[-0.00433,0.04981,0.1269]},{"type":"travertin80","area":5.39,"polygon":[[-15.32,-3.12],[-13.87,-3.12],[-13.87,0.6],[-15.32,0.6]],"note":"Schwebende Stufen (Travertin) zwischen den beiden Sitzplaetzen","plane":[0.04871,-0.01127,0.5987]},{"type":"travertinstell","area":4.74,"polygon":[[-20.595,4.404],[-20.595,4.004],[-8.735,4.008],[-8.735,4.408]],"plane":[0.02732,0.04075,0.3587]},{"type":"beet","area":3.51,"polygon":[[0.856,1.861],[2.184,1.861],[2.183,4.501],[0.855,4.501]]},{"type":"verbundstein","area":3.5,"polygon":[[2.518,-4.183],[2.535,-3.343],[2.814,-0.367],[2.861,1.913],[2.183,2.324],[2.183,0.511],[2.123,0.511],[2.119,-1.032],[2.179,-1.032],[2.176,-4.183]],"plane":[-0.0029,-0.0028,-0.0237]},{"type":"beet","area":2.72,"polygon":[[2.175,-4.543],[0.497,-4.544],[0.494,-5.532],[0.497,-6.278],[1.922,-6.272],[1.919,-5.533],[2.174,-5.533]]},{"type":"travertin80","area":1.9,"polygon":[[-8.735,3.748],[-8.735,3.948],[-18.242,3.945],[-18.242,3.745]],"plane":[0.02759,0.04132,0.3599]},{"type":"beet","area":1.89,"polygon":[[-4.554,1.819],[-3.394,1.82],[-3.395,3.45],[-4.555,3.449]]},{"type":"travertinstell","area":1.25,"polygon":[[-0.145,4.011],[-0.145,4.411],[-3.273,4.41],[-3.273,4.01]],"plane":[-0.01515,0.04765,0.1694]},{"type":"dekorkies","area":1.21,"polygon":[[-13.819,-4.244],[-13.82,-2.694],[-14.477,-2.694],[-14.476,-3.084],[-14.64,-3.085],[-14.639,-4.244]],"plane":[0,0,-0.07]},{"type":"beet","area":1.07,"polygon":[[-4.515,3.509],[-3.435,3.51],[-3.435,4.01],[-3.273,4.01],[-3.273,4.41],[-4.575,4.409],[-4.575,3.949],[-4.545,3.949]]},{"type":"dekorkies","area":1.01,"polygon":[[-15.277,-0.244],[-15.277,0.115],[-14.745,0.115],[-14.745,0.556],[-16.241,0.556],[-16.241,-0.244]],"plane":[0.0106,0.04886,0.0613]},{"type":"beet","area":0.98,"polygon":[[2.172,-7.039],[2.173,-6.523],[0.278,-6.521],[0.278,-7.037]]},{"type":"tegula","area":0.69,"polygon":[[-4.575,3.949],[-4.575,4.409],[-6.075,4.409],[-6.075,3.949]]},{"type":"tegula","area":0.69,"polygon":[[-7.235,3.948],[-7.235,4.408],[-8.735,4.408],[-8.735,3.948]],"plane":[0,0,0.29]},{"type":"travertinstell","area":0.66,"polygon":[[1.922,-6.272],[0.277,-6.278],[0.278,-6.528],[2.173,-6.523],[2.174,-5.533],[1.924,-5.532]],"plane":[0,0,-0.72]},{"type":"keramik","area":0.49,"polygon":[[-6.956,2.474],[-6.256,2.474],[-6.256,3.174],[-6.956,3.174]]},{"type":"keramik","area":0.47,"polygon":[[-18.169,-6.872],[-18.169,-6.622],[-20.078,-6.622],[-20.059,-6.865]]},{"type":"travertinstell","area":0.46,"polygon":[[-6.075,4.009],[-6.075,4.409],[-7.235,4.408],[-7.235,4.008]]},{"type":"dekorkies","area":0.35,"polygon":[[0.278,-6.278],[0.477,-6.278],[0.477,-4.544],[0.278,-4.544]]},{"type":"travertinstell","area":0.34,"polygon":[[-14.05,4.291],[-14.049,3.946],[-8.735,3.948],[-8.735,4.008],[-13.989,4.006],[-13.99,4.291]]},{"type":"travertinstell","area":0.32,"polygon":[[-4.575,3.949],[-4.575,3.449],[-3.375,3.45],[-3.375,3.95],[-0.145,3.951],[-0.145,4.011],[-3.435,4.01],[-3.435,3.51],[-4.515,3.509],[-4.515,3.949]]}],"slabs":[{"x":0.624,"z":1.401,"w":0.4,"d":0.8},{"x":1.274,"z":1.351,"w":0.4,"d":0.7},{"x":1.924,"z":1.351,"w":0.4,"d":0.7},{"x":0.624,"z":0.756,"w":0.4,"d":0.49},{"x":1.274,"z":0.756,"w":0.4,"d":0.49},{"x":1.924,"z":0.756,"w":0.4,"d":0.49},{"x":-5.876,"z":1.399,"w":0.4,"d":0.6},{"x":-5.226,"z":1.399,"w":0.4,"d":0.6},{"x":-7.176,"z":1.398,"w":0.4,"d":0.6},{"x":-6.526,"z":1.399,"w":0.4,"d":0.6},{"x":-7.826,"z":1.398,"w":0.4,"d":0.6},{"x":-9.126,"z":1.398,"w":0.4,"d":0.6},{"x":-8.476,"z":1.398,"w":0.4,"d":0.6},{"x":-10.426,"z":1.397,"w":0.4,"d":0.6},{"x":-9.776,"z":1.398,"w":0.4,"d":0.6},{"x":-11.076,"z":1.397,"w":0.4,"d":0.6},{"x":-12.376,"z":1.397,"w":0.4,"d":0.6},{"x":-11.726,"z":1.397,"w":0.4,"d":0.6},{"x":-13.676,"z":1.396,"w":0.4,"d":0.6},{"x":-13.026,"z":1.397,"w":0.4,"d":0.6},{"x":-14.326,"z":1.396,"w":0.4,"d":0.6},{"x":-0.676,"z":1.401,"w":0.4,"d":0.6},{"x":-0.026,"z":1.401,"w":0.4,"d":0.6},{"x":-1.976,"z":1.4,"w":0.4,"d":0.6},{"x":-1.326,"z":1.4,"w":0.4,"d":0.6},{"x":-2.626,"z":1.4,"w":0.4,"d":0.6},{"x":-3.926,"z":1.399,"w":0.4,"d":0.6},{"x":-3.276,"z":1.4,"w":0.4,"d":0.6},{"x":-4.576,"z":1.399,"w":0.4,"d":0.6},{"x":-14.326,"z":0.826,"w":0.4,"d":0.54}],"plants":[{"type":"eibe","x":-15.527,"z":-6.098,"r":0.2},{"type":"eibe","x":-15.928,"z":-6.098,"r":0.2},{"type":"eibe","x":-14.727,"z":-6.099,"r":0.2},{"type":"eibe","x":-15.127,"z":-6.099,"r":0.2},{"type":"eibe","x":-13.923,"z":-6.1,"r":0.2},{"type":"eibe","x":-14.324,"z":-6.1,"r":0.2},{"type":"eibe","x":-6.275,"z":4.209,"r":0.2},{"type":"eibe","x":-7.035,"z":4.208,"r":0.2},{"type":"eibe","x":-6.655,"z":4.209,"r":0.2},{"type":"eibe","x":-8.934,"z":4.208,"r":0.2},{"type":"eibe","x":-9.694,"z":4.208,"r":0.2},{"type":"eibe","x":-9.314,"z":4.208,"r":0.2},{"type":"eibe","x":-11.583,"z":4.207,"r":0.2},{"type":"eibe","x":-12.343,"z":4.207,"r":0.2},{"type":"eibe","x":-11.963,"z":4.207,"r":0.2},{"type":"eibe","x":-14.241,"z":4.209,"r":0.2},{"type":"eibe","x":-15.001,"z":4.208,"r":0.2},{"type":"eibe","x":-14.621,"z":4.208,"r":0.2},{"type":"eibe","x":-2.512,"z":4.21,"r":0.2},{"type":"eibe","x":-3.272,"z":4.21,"r":0.2},{"type":"eibe","x":-2.892,"z":4.21,"r":0.2},{"type":"eibe","x":-2.132,"z":4.21,"r":0.2},{"type":"eibe","x":-20.636,"z":0.895,"r":0.2},{"type":"eibe","x":-21.395,"z":0.894,"r":0.2},{"type":"eibe","x":-21.015,"z":0.894,"r":0.2},{"type":"eibe","x":-20.201,"z":-1.769,"r":0.2},{"type":"eibe","x":-20.268,"z":-0.976,"r":0.2},{"type":"eibe","x":-20.235,"z":-1.371,"r":0.2},{"type":"eibe","x":-20.101,"z":-2.961,"r":0.2},{"type":"eibe","x":-20.168,"z":-2.168,"r":0.2},{"type":"eibe","x":-20.134,"z":-2.563,"r":0.2},{"type":"eibe","x":-19.87,"z":-5.693,"r":0.2},{"type":"eibe","x":-19.937,"z":-4.901,"r":0.2},{"type":"eibe","x":-19.903,"z":-5.295,"r":0.2},{"type":"eibe","x":-19.435,"z":-6.093,"r":0.2},{"type":"eibe","x":-19.836,"z":-6.092,"r":0.2},{"type":"eibe","x":-18.635,"z":-6.094,"r":0.2},{"type":"eibe","x":-17.831,"z":-6.095,"r":0.2},{"type":"eibe","x":-18.232,"z":-6.095,"r":0.2},{"type":"eibe","x":-21.296,"z":4.157,"r":0.2},{"type":"eibe","x":-20.892,"z":4.17,"r":0.2},{"type":"eibe","x":-17.6,"z":4.201,"r":0.2},{"type":"eibe","x":-18.36,"z":4.2,"r":0.2},{"type":"eibe","x":-17.98,"z":4.2,"r":0.2},{"type":"eibe","x":-15.355,"z":4.198,"r":0.2},{"type":"eibe","x":-15.736,"z":4.198,"r":0.2},{"type":"eibe","x":-20.325,"z":4.195,"r":0.2},{"type":"kraut","x":-16.571,"z":-5.965,"r":0.11},{"type":"kraut","x":-17.268,"z":-5.96,"r":0.11},{"type":"kraut","x":-19.867,"z":-4.231,"r":0.17},{"type":"kraut","x":-20.221,"z":0.343,"r":0.17},{"type":"kraut","x":-19.2,"z":4.113,"r":0.1},{"type":"kraut","x":-19.857,"z":4.15,"r":0.12},{"type":"kraut","x":-11.021,"z":4.152,"r":0.13},{"type":"kraut","x":-16.336,"z":4.143,"r":0.13},{"type":"kraut","x":-12.957,"z":4.146,"r":0.13},{"type":"kraut","x":-14.97,"z":0.342,"r":0.22},{"type":"kraut","x":-3.526,"z":1.962,"r":0.15},{"type":"kraut","x":-3.961,"z":1.996,"r":0.16},{"type":"kraut","x":-3.639,"z":2.382,"r":0.09},{"type":"kraut","x":-4.159,"z":2.454,"r":0.24},{"type":"kraut","x":-3.619,"z":2.784,"r":0.16},{"type":"kraut","x":-4.388,"z":1.95,"r":0.09},{"type":"kraut","x":-4.299,"z":3.025,"r":0.22},{"type":"kraut","x":-3.852,"z":3.072,"r":0.09},{"type":"solitaer","x":1.521,"z":2.316,"r":0.35},{"type":"strauch","x":1.691,"z":3.207,"r":0.37},{"type":"solitaer","x":0.881,"z":-5.85,"r":0.35},{"type":"strauch","x":1.125,"z":-4.918,"r":0.37},{"type":"solitaer","x":1.578,"z":-5.509,"r":0.35},{"type":"solitaer","x":1.842,"z":-6.789,"r":0.21},{"type":"kraut","x":0.69,"z":-6.797,"r":0.21},{"type":"eibe","x":1.325,"z":-6.793,"r":0.21},{"type":"hecke","kind":"liguster","height":1.7,"width":0.75,"polygon":[[-20.013,-7.465],[-19.401,-7.468],[-19,-12.703],[-19.587,-13.027]]}],"trees":[{"name":"Solitärgehölz Sitzplatz Süd","x":-17.5,"z":1.6,"crown":1.34,"height":4.6,"species":"parrotia"},{"name":"Solitärgehölz Terrasse NW","x":-19.1,"z":-5.5,"crown":0.67,"height":3.2,"species":"parrotia"},{"name":"Solitärgehölz Flammengrill","x":-4,"z":3.9,"crown":0.63,"height":3,"species":"parrotia"},{"name":"Apfelbaum","x":1.69,"z":4.05,"crown":0.9,"height":3.4,"species":"apfel"},{"name":"Solitärgehölz Zollet","x":-17.6,"z":-10.2,"crown":1.34,"height":4.6,"species":"parrotia","neighbour":true}],"lamps":[{"x":4.073,"z":-6.866,"kind":"poller"},{"x":4.079,"z":-0.185,"kind":"poller"},{"x":4.084,"z":4.632,"kind":"poller"},{"x":-3.045,"z":4.6,"kind":"poller"},{"x":-12.371,"z":4.597,"kind":"poller"},{"x":-20.195,"z":-7.578,"kind":"poller"},{"x":-16.865,"z":-6.051,"kind":"boden"},{"x":-18.897,"z":-5.263,"kind":"boden"},{"x":-17.562,"z":1.356,"kind":"boden"},{"x":-20.311,"z":-0.029,"kind":"boden"},{"x":-19.937,"z":-3.924,"kind":"boden"},{"x":-16.682,"z":4.117,"kind":"boden"},{"x":-1.249,"z":4.105,"kind":"boden"},{"x":-19.444,"z":4.101,"kind":"boden"},{"x":-19.137,"z":-6.771,"kind":"boden"},{"x":-16.03,"z":-6.72,"kind":"boden"},{"x":-17.463,"z":-10.093,"kind":"boden"}],"walls":[{"id":"travertinmauer-nord","type":"travertin","note":"Travertinmauer an der Grenze zum Nachbargrundstueck Zollet, stuetzt rund 1.5 m ab","path":[[-18.17,-6.895],[-13.82,-6.895]],"t":0.55,"top":-0.3,"base":-1.9},{"id":"sitzmauer-nord","type":"travertin","note":"Sitzmauer 25 cm ueber der Travertinmauer (gelbe Kote \"25\" im Plan)","path":[[-20.08,-6.47],[-13.82,-6.47]],"t":0.3,"top":-0.03,"base":-0.45},{"id":"winkelelemente-west","type":"beton","note":"Winkelelemente aus Beton entlang der Westgrenze, stuetzen den Garten ueber der Feuerwehrzufahrt","path":[[-20.12,-6.62],[-20.66,0.51],[-21.7,0.52],[-21.7,2.37]],"t":0.22,"top":null,"base":null,"retains":"west","crestProfile":[-0.705,-0.322,-0.255,-0.243,-0.231,-0.227,-0.222,-0.216,-0.21,-0.204,-0.197,-0.19,-0.182,-0.169,-0.156,-0.144,-0.131,-0.118,-0.133,-0.148,-0.155,-0.135,-0.121,-0.107,-0.085],"footProfile":[-2.174,-2.085,-2.113,-2.124,-2.084,-1.936,-1.715,-1.467,-1.252,-1.095,-0.995,-0.931,-0.883,-0.837,-0.791,-0.762,-0.763,-0.737,-0.62,-0.722,-1.014,-1.004,-0.994,-0.984,-0.974]},{"id":"travertinsitzmauer-west","type":"travertin","note":"Travertinsitzmauer als Abschluss des Hauptsitzplatzes gegen den Rasen","path":[[-18.64,0.755],[-14.73,0.755]],"t":0.41,"top":0.4,"base":-0.45,"seating":true},{"id":"travertinsitzmauer-sued","type":"travertin","note":"Schenkel der Travertinsitzmauer laengs des Rasens","path":[[-18.44,0.55],[-18.44,3.94]],"t":0.4,"top":0.4,"base":-0.4,"seating":true},{"id":"betonmauer-nachbar","type":"beton","note":"Bestehende Betonmauer des Suednachbarn entlang der Grenze","path":[[-17.41,6.07],[1.99,6.07]],"t":0.2,"top":1.1,"base":-0.6},{"id":"betonmauer-nachbar-ost","type":"beton","note":"Rueckspringender Schenkel der Nachbarmauer","path":[[2.09,6.07],[2.09,9.05]],"t":0.2,"top":1.1,"base":-0.6},{"id":"holzscheiterwand","type":"holzscheiter","note":"Holzscheiterwand 150 cm breit, 200 cm hoch, hinter dem Flammengrill","path":[[-5.75,4.35],[-4.25,4.35]],"t":0.45,"top":2.26,"base":0.2},{"id":"stufe-gartentor","type":"travertin","note":"Blockstufen beim Gartentor an der Suedwestecke","path":[[-21.05,2.15],[-21.05,3.75]],"t":0.8,"top":-0.13,"base":-0.75},{"id":"lamellenwand","type":"lamellen","note":"Lamellenwand zum Sitzen: senkrechte Holzlamellen am gedeckten Sitzplatz","path":[[-13.26,0.91],[-8.73,0.91]],"t":0.34,"top":2.72,"base":-0.05,"openSlats":true}],"props":[{"id":"gartenhaus","type":"gartenhaus","x":1.2,"z":-3.6,"w":1.8,"d":1.8,"h":2.15,"rot":0,"note":"Standort Gartenhaus 1,8 x 1,8 m"},{"id":"spielhaus","type":"spielhaus","x":0,"z":3.15,"w":1.8,"d":2.7,"h":2.3,"rot":0,"note":"Spielhaus durch Zimmermann, Podest auf 1.47"},{"id":"flammengrill","type":"flammengrill","x":-6.95,"z":2.45,"w":0.7,"d":0.7,"h":0.85,"rot":0,"note":"Flammengrill im Dekorkiesfeld"},{"id":"baenkli","type":"bank","x":-20.62,"z":1.42,"w":0.5,"d":1.5,"h":0.45,"rot":90,"note":"Baenkli aus Travertin"},{"id":"maehroboter","type":"roboter","x":-17.87,"z":3.72,"w":0.75,"d":0.55,"h":0.4,"rot":0,"note":"Garage Maehroboter"},{"id":"wasserhahn","type":"wasserhahn","x":-13.9,"z":-4.6,"w":0.12,"d":0.12,"h":0.85,"rot":0},{"id":"schlaufschacht","type":"schacht","x":-14.35,"z":-3.95,"w":0.3,"d":0.3,"h":0.02,"rot":0,"note":"Schlaufschacht D = 30 cm"},{"id":"gartentor","type":"tor","x":-21.6,"z":3.3,"w":1,"d":0.06,"h":1.1,"rot":0}],"stelen":[{"x":-19.55,"z":-3.1,"h":0.9},{"x":-19.3,"z":-2.3,"h":1.15},{"x":-19.05,"z":-1.55,"h":0.75},{"x":-13.3,"z":4.45,"h":1.05},{"x":-12.6,"z":4.45,"h":0.8},{"x":-10.3,"z":4.6,"h":1.1},{"x":-9.6,"z":4.6,"h":0.85},{"x":-1.3,"z":4.55,"h":1},{"x":-0.6,"z":4.55,"h":0.75}],"building":{"id":"haus-9a","name":"Haus 9a - Jeanine und Damian Kellenberger","floorLevel":0,"upperLevel":2.9,"roofLevel":6.15,"parapet":0.35,"outline":[[-13.82,-6.87],[0.28,-6.87],[0.28,0.96],[-13.82,0.96]],"loggia":{"x0":-13.82,"z0":-3.06,"x1":-9.06,"z1":0.96,"ceiling":2.75},"canopy":{"a":-3.2,"b":0.28,"depth":1.35,"y":2.6,"thickness":0.16},"openings":[{"face":"south","a":-4.4,"b":-0.2,"sill":0,"head":2.45,"kind":"glass"},{"face":"south","a":-12.9,"b":-9.4,"sill":0,"head":2.45,"kind":"glass"},{"face":"south","a":-3.9,"b":-0.6,"sill":3.35,"head":5,"kind":"glass","upper":true},{"face":"south","a":-12.6,"b":-9.7,"sill":3.35,"head":5,"kind":"glass","upper":true},{"face":"west","a":-5.84,"b":-4.24,"sill":0.85,"head":2.35,"kind":"window"},{"face":"west","a":-5.6,"b":-4.5,"sill":3.75,"head":5,"kind":"window","upper":true},{"face":"north","a":-1.9,"b":-0.9,"sill":0,"head":2.35,"kind":"door"},{"face":"north","a":-5.6,"b":-3.9,"sill":0.9,"head":2.35,"kind":"window"},{"face":"north","a":-11.6,"b":-10.2,"sill":0.9,"head":2.35,"kind":"slats"},{"face":"north","a":-5.4,"b":-4.1,"sill":3.75,"head":5.1,"kind":"window","upper":true},{"face":"north","a":-11.4,"b":-10.4,"sill":3.75,"head":5.1,"kind":"slats","upper":true},{"face":"east","a":-5.6,"b":-4.3,"sill":0.9,"head":2.35,"kind":"window"}]},"neighbourBuildings":[{"id":"haus-9","name":"Haus 9 - Sharon und Alan Zollet","outline":[[-13.9,-14.7],[0.2,-14.7],[0.2,-6.87],[-13.9,-6.87]],"floorLevel":-1.7,"roofLevel":4.45}],"startViews":[{"id":"sitzplatz","label":"Hauptsitzplatz","x":-18.6,"z":-2.6,"yaw":135,"note":"Travertinplatten 80x80x3 cm, Blick über den Sitzplatz gegen den Rasen"},{"id":"gedeckt","label":"Gedeckter Sitzplatz","x":-11,"z":-1.2,"yaw":215,"note":"Keramikplatten unter dem Obergeschoss, hinter der Lamellenwand"},{"id":"rasen","label":"Rasen Süd","x":-13,"z":2.8,"yaw":75,"note":"Blick der Südfassade entlang zum Spielbereich"},{"id":"grill","label":"Flammengrill","x":-7.8,"z":2.6,"yaw":110,"note":"Dekorkiesfeld mit Flammengrill und Holzscheiterwand"},{"id":"spielplatz","label":"Spielbereich","x":-3.4,"z":1.4,"yaw":150,"note":"Spielsand, Spielhaus und Apfelbaum"},{"id":"eingang","label":"Hauseingang","x":1.3,"z":-1.8,"yaw":250,"note":"Keramikplatten beim Fixpunkt 0.00"}]} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index eadba86..cb4ffd1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -13,7 +13,8 @@ import './style.css'; import { loadSite, makeHeightSampler, type SiteData } from './site'; import { buildTerrain } from './scene/terrain'; import { buildSurfaces } from './scene/surfaces'; -import { buildWalls, buildStelen, buildProps, buildLamps } from './scene/structures'; +import { buildStelen, buildProps, buildLamps } from './scene/structures'; +import { buildWalls } from './scene/walls'; import { buildVegetation } from './scene/vegetation'; import { buildBuilding, buildNeighbourBuildings } from './scene/building'; import { buildEnvironment } from './scene/environment'; @@ -52,7 +53,7 @@ async function main() { scene.add(buildTerrain(site.terrain)); await progress(38, 'Beläge werden verlegt …'); - scene.add(buildSurfaces(site.surfaces, height)); + scene.add(buildSurfaces(site.surfaces, site.slabs, height)); await progress(52, 'Mauern und Bauteile …'); scene.add(buildWalls(site.walls, height)); diff --git a/src/scene/building.ts b/src/scene/building.ts index cf38666..b487717 100644 --- a/src/scene/building.ts +++ b/src/scene/building.ts @@ -244,30 +244,73 @@ export function buildBuilding(b: Building): Group { return group; } +/** + * Nachbargebaeude als Kontextbau: gleiche Machart wie Haus 9a - Holzschalung, + * Betonsockel, Attika und begruentes Flachdach, dazu einige Oeffnungen, damit + * es nicht als glatter Klotz wirkt. + */ export function buildNeighbourBuildings(list: NeighbourBuilding[]): Group { const group = new Group(); group.name = 'Nachbargebäude'; const holz = tex.fassadeHolz(); - const mat = new MeshStandardMaterial({ map: holz.map, roughness: holz.roughness }); - const attika = new MeshStandardMaterial({ color: 0x8b8377, roughness: 0.7 }); + const holzMat = new MeshStandardMaterial({ + map: holz.map, normalMap: holz.normalMap ?? null, + normalScale: holz.normalScale, roughness: holz.roughness, + }); + const sockelTex = tex.sockel(); + const sockelMat = new MeshStandardMaterial({ map: sockelTex.map, roughness: sockelTex.roughness }); + const attikaMat = new MeshStandardMaterial({ color: 0x8b8377, roughness: 0.7, metalness: 0.15 }); + const gruen = tex.gruendach(); + const glasMat = glassMaterial(); for (const b of list) { let x0 = Infinity, z0 = Infinity, x1 = -Infinity, z1 = -Infinity; for (const [x, z] of b.outline) { x0 = Math.min(x0, x); x1 = Math.max(x1, x); z0 = Math.min(z0, z); z1 = Math.max(z1, z); } + const cx = (x0 + x1) / 2, cz = (z0 + z1) / 2; + const w = x1 - x0, d = z1 - z0; + const node = new Group(); + node.name = b.name; + + const sockel = new Mesh( + boxGeometry(cx, cz, w, d, b.floorLevel - 0.9, b.floorLevel + 0.35, 0, sockelTex.tile), sockelMat, + ); const body = new Mesh( - boxGeometry((x0 + x1) / 2, (z0 + z1) / 2, x1 - x0, z1 - z0, b.floorLevel - 0.8, b.roofLevel, 0, holz.tile), - mat, + boxGeometry(cx, cz, w, d, b.floorLevel + 0.35, b.roofLevel, 0, holz.tile), holzMat, ); - body.name = b.name; - body.castShadow = true; - body.receiveShadow = true; - group.add(body); - const cap = new Mesh( - boxGeometry((x0 + x1) / 2, (z0 + z1) / 2, x1 - x0 + 0.2, z1 - z0 + 0.2, b.roofLevel, b.roofLevel + 0.3, 0, 2), - attika, + for (const m of [sockel, body]) { m.castShadow = true; m.receiveShadow = true; node.add(m); } + + // Begruentes Flachdach hinter der Attika + const roof = new Mesh( + boxGeometry(cx, cz, w - 0.3, d - 0.3, b.roofLevel - 0.06, b.roofLevel + 0.02, 0, gruen.tile), + new MeshStandardMaterial({ map: gruen.map, roughness: 1 }), ); - cap.castShadow = true; - group.add(cap); + roof.receiveShadow = true; + node.add(roof); + for (const [ax, az, aw, ad] of [ + [cx, z0, w + 0.16, 0.16], [cx, z1, w + 0.16, 0.16], + [x0, cz, 0.16, d + 0.16], [x1, cz, 0.16, d + 0.16], + ] as const) { + const m = new Mesh(boxGeometry(ax, az, aw, ad, b.roofLevel, b.roofLevel + 0.32, 0, 2), attikaMat); + m.castShadow = true; + node.add(m); + } + + // Fensteroeffnungen auf den beiden Langseiten + for (const side of [-1, 1] as const) { + const zf = side < 0 ? z0 + 0.02 : z1 - 0.02; + for (const [u, wdt, sill, head] of [ + [-0.30, 2.6, 0.9, 2.4], [0.18, 1.8, 0.9, 2.4], + [-0.28, 2.2, 3.7, 5.0], [0.20, 1.6, 3.7, 5.0], + ] as const) { + const px = cx + u * w; + const m = new Mesh( + boxGeometry(px, zf, wdt, 0.06, b.floorLevel + sill, b.floorLevel + head, 0, 1), glasMat, + ); + node.add(m); + } + } + + group.add(node); } return group; } diff --git a/src/scene/geometry.ts b/src/scene/geometry.ts index 93d6c30..9fb8552 100644 --- a/src/scene/geometry.ts +++ b/src/scene/geometry.ts @@ -218,9 +218,11 @@ export function boxGeometry( [cx + u * ca - v * sa, y, cz + u * sa + v * ca]; const hw = w / 2, hd = d / 2; const s = 1 / tile; - const faces: [Vec2, Vec2, number][] = [ - [[-hw, -hd], [hw, -hd], 1], [[hw, -hd], [hw, hd], 1], - [[hw, hd], [-hw, hd], 1], [[-hw, hd], [-hw, -hd], 1], + // Umlauf im Uhrzeigersinn in (u, v). Damit zeigen die Flaechennormalen nach + // aussen - andersherum sieht man in die Box hinein. + const faces: [Vec2, Vec2][] = [ + [[-hw, -hd], [-hw, hd]], [[-hw, hd], [hw, hd]], + [[hw, hd], [hw, -hd]], [[hw, -hd], [-hw, -hd]], ]; let uRun = 0; for (const [p0, p1] of faces) { @@ -232,9 +234,13 @@ export function boxGeometry( uv.push(uRun * s, y0 * s, (uRun + len) * s, y1 * s, uRun * s, y1 * s); uRun += len; } - // Deckel + // Deckel, ebenfalls nach aussen (oben) gewickelt const t0 = P(-hw, -hd, y1), t1 = P(hw, -hd, y1), t2 = P(hw, hd, y1), t3 = P(-hw, hd, y1); - pos.push(...t0, ...t1, ...t2, ...t0, ...t2, ...t3); + pos.push(...t0, ...t3, ...t2, ...t0, ...t2, ...t1); + uv.push(0, 0, 0, d * s, w * s, d * s, 0, 0, w * s, d * s, w * s, 0); + // Boden, damit die Box auch von unten geschlossen ist + const b0 = P(-hw, -hd, y0), b1 = P(hw, -hd, y0), b2 = P(hw, hd, y0), b3 = P(-hw, hd, y0); + pos.push(...b0, ...b1, ...b2, ...b0, ...b2, ...b3); uv.push(0, 0, w * s, 0, w * s, d * s, 0, 0, w * s, d * s, 0, d * s); const g = new BufferGeometry(); g.setAttribute('position', new BufferAttribute(new Float32Array(pos), 3)); @@ -242,3 +248,112 @@ export function boxGeometry( g.computeVertexNormals(); return g; } + +/** + * Ebener Belag: das Polygon liegt exakt in der Ebene a*x + b*z + c. + * Gebaute Flaechen sind eben - sie duerfen dem Gelaende nicht folgen. + */ +export function planarSurfaceGeometry( + polygon: Vec2[], + plane: [number, number, number], + tile: number, + lift = 0, +): BufferGeometry { + const [a, b, c] = plane; + const tris = refine(triangulate(polygon), 1.6); + const pos = new Float32Array(tris.length * 9); + const uv = new Float32Array(tris.length * 6); + let p = 0, u = 0; + for (const t of tris) { + for (const [x, z] of t) { + pos[p++] = x; + pos[p++] = a * x + b * z + c + lift; + pos[p++] = z; + uv[u++] = x / tile; + uv[u++] = -z / tile; + } + } + const g = new BufferGeometry(); + g.setAttribute('position', new BufferAttribute(pos, 3)); + g.setAttribute('uv', new BufferAttribute(uv, 2)); + g.computeVertexNormals(); + return g; +} + +/** + * Sichtkante eines Belags: senkrechtes Band von der Belagsoberkante hinunter + * bis unter das Gelaende. Erst damit wirkt eine Terrasse wie gebaut und nicht + * wie aufgemalt. + */ +export function surfaceEdgeGeometry( + polygon: Vec2[], + topAt: (x: number, z: number) => number, + bottomAt: (x: number, z: number) => number, + tile: number, + step = 0.4, +): BufferGeometry { + const pos: number[] = []; + const uv: number[] = []; + let run = 0; + const s = 1 / tile; + const n = polygon.length; + for (let i = 0; i < n; i++) { + const [ax, az] = polygon[i]; + const [bx, bz] = polygon[(i + 1) % n]; + const len = Math.hypot(bx - ax, bz - az); + const parts = Math.max(1, Math.round(len / step)); + for (let k = 0; k < parts; k++) { + const t0 = k / parts, t1 = (k + 1) / parts; + const x0 = ax + (bx - ax) * t0, z0 = az + (bz - az) * t0; + const x1 = ax + (bx - ax) * t1, z1 = az + (bz - az) * t1; + const ty0 = topAt(x0, z0), ty1 = topAt(x1, z1); + const by0 = Math.min(bottomAt(x0, z0), ty0 - 0.012); + const by1 = Math.min(bottomAt(x1, z1), ty1 - 0.012); + const u0 = run, u1 = run + len / parts; + // Aussenseite: Polygon laeuft im Gegenuhrzeigersinn, also liegt die + // Sichtseite rechts der Laufrichtung. + pos.push(x0, ty0, z0, x0, by0, z0, x1, by1, z1); + uv.push(u0 * s, ty0 * s, u0 * s, by0 * s, u1 * s, by1 * s); + pos.push(x0, ty0, z0, x1, by1, z1, x1, ty1, z1); + uv.push(u0 * s, ty0 * s, u1 * s, by1 * s, u1 * s, ty1 * s); + run = u1; + } + } + const g = new BufferGeometry(); + g.setAttribute('position', new BufferAttribute(new Float32Array(pos), 3)); + g.setAttribute('uv', new BufferAttribute(new Float32Array(uv), 2)); + g.computeVertexNormals(); + return g; +} + +/** + * Metallband: schmales Stahlband entlang eines Polygonrandes, wie es der Plan + * zwischen Kies, Rasen und Beeten zeigt. + */ +export function edgingGeometry( + polygon: Vec2[], + topAt: (x: number, z: number) => number, + thickness = 0.005, + proud = 0.022, + depth = 0.12, +): BufferGeometry { + const parts: BufferGeometry[] = []; + const n = polygon.length; + for (let i = 0; i < n; i++) { + const [ax, az] = polygon[i]; + const [bx, bz] = polygon[(i + 1) % n]; + const len = Math.hypot(bx - ax, bz - az); + if (len < 0.12) continue; + const steps = Math.max(1, Math.round(len / 1.2)); + for (let k = 0; k < steps; k++) { + const t0 = k / steps, t1 = (k + 1) / steps; + const x0 = ax + (bx - ax) * t0, z0 = az + (bz - az) * t0; + const x1 = ax + (bx - ax) * t1, z1 = az + (bz - az) * t1; + const cx = (x0 + x1) / 2, cz = (z0 + z1) / 2; + const y = topAt(cx, cz); + const ang = (Math.atan2(z1 - z0, x1 - x0) * 180) / Math.PI; + parts.push(boxGeometry(cx, cz, len / steps + 0.004, thickness, y + proud - depth, y + proud, ang, 1)); + } + } + return parts.length ? mergeGeometries(parts) : new BufferGeometry(); +} diff --git a/src/scene/structures.ts b/src/scene/structures.ts index 2b6254e..7a0355e 100644 --- a/src/scene/structures.ts +++ b/src/scene/structures.ts @@ -1,104 +1,34 @@ /** - * Bauteile: Stuetz- und Sitzmauern, Travertinstelen, Gartenhaus, Spielhaus, - * Flammengrill, Baenkli, Leuchten. + * Freistehende Bauteile: Travertinstelen, Gartenhaus, Spielhaus, + * Flammengrill, Baenkli, Maehroboter-Garage, Gartentor und die Leuchten. + * Die Mauern stehen in walls.ts. */ import { BoxGeometry, CylinderGeometry, Group, Mesh, MeshStandardMaterial, PointLight, type MeshStandardMaterialParameters, } from 'three'; -import type { Lamp, Prop, Stele, Wall } from '../site'; -import { boxGeometry, wallGeometry } from './geometry'; +import type { Lamp, Prop, Stele } from '../site'; +import { boxGeometry } from './geometry'; import * as tex from './textures'; function material(belag: tex.Belag, extra: MeshStandardMaterialParameters = {}) { return new MeshStandardMaterial({ - map: belag.map, roughness: belag.roughness, metalness: 0, ...extra, + map: belag.map, + normalMap: belag.normalMap ?? null, + normalScale: belag.normalScale, + roughness: belag.roughness, + metalness: 0, + ...extra, }); } - -const WALL_LOOK: Record tex.Belag> = { - travertin: tex.travertinMauer, - beton: tex.beton, - holzscheiter: tex.holzscheiter, - lamellen: tex.fassadeHolz, -}; - -/** Wertet ein Hoehenprofil (Stuetzelemente) an der Stelle t aus. */ -function profileAt(profile: number[] | undefined, t: number, fallback: number): number { - if (!profile || !profile.length) return fallback; - const f = t * (profile.length - 1); - const i = Math.max(0, Math.min(profile.length - 2, Math.floor(f))); - const u = f - i; - return profile[i] * (1 - u) + profile[i + 1] * u; -} - -export function buildWalls(walls: Wall[], height: (x: number, z: number) => number): Group { - const group = new Group(); - group.name = 'Mauern und Wände'; - - for (const w of walls) { - const belag = WALL_LOOK[w.type](); - const top = (t: number, x: number, z: number) => - w.crestProfile ? profileAt(w.crestProfile, t, 0) : (w.top ?? height(x, z) + 0.4); - const base = (t: number, x: number, z: number) => - w.footProfile ? profileAt(w.footProfile, t, -1) : (w.base ?? height(x, z) - 0.5); - - if (w.openSlats) { - // Lamellenwand: senkrechte Bretter im Plan-Rhythmus (10 cm breit, - // 35 cm tief, rund 90 cm Achsabstand), dazu das schmale Randband. - const slats = new Group(); - const [a, b] = [w.path[0], w.path[w.path.length - 1]]; - const len = Math.hypot(b[0] - a[0], b[1] - a[1]); - const n = Math.max(2, Math.round(len / 0.9)); - const mat = material(belag, { roughness: 0.85 }); - const dirX = (b[0] - a[0]) / len, dirZ = (b[1] - a[1]) / len; - const angle = (Math.atan2(dirZ, dirX) * 180) / Math.PI; - for (let i = 0; i <= n; i++) { - const t = i / n; - const x = a[0] + (b[0] - a[0]) * t; - const z = a[1] + (b[1] - a[1]) * t; - const g = boxGeometry(x, z, 0.10, w.t, base(t, x, z), top(t, x, z), angle, 1.2); - const m = new Mesh(g, mat); - m.castShadow = true; - m.receiveShadow = true; - slats.add(m); - } - // durchlaufendes Randband an der Fassadenkante - const band = new Mesh( - wallGeometry(w.path, 0.10, top, base, { segments: 6, tile: belag.tile }), - mat, - ); - band.castShadow = true; - band.receiveShadow = true; - slats.add(band); - slats.name = w.id; - slats.userData.note = w.note; - group.add(slats); - continue; - } - - const geo = wallGeometry(w.path, w.t, top, base, { - segments: w.crestProfile ? w.crestProfile.length - 1 : 16, - tile: belag.tile, - }); - const mesh = new Mesh(geo, material(belag)); - mesh.name = w.id; - mesh.castShadow = true; - mesh.receiveShadow = true; - mesh.userData.note = w.note; - group.add(mesh); - } - - return group; -} - export function buildStelen(stelen: Stele[], height: (x: number, z: number) => number): Group { const group = new Group(); group.name = 'Travertinstelen'; - const mat = material(tex.travertinMauer(), { roughness: 0.68 }); + const stein = tex.travertinMauer(); + const mat = material(stein, { roughness: 0.66 }); for (const s of stelen) { const y0 = height(s.x, s.z) - 0.3; - const geo = boxGeometry(s.x, s.z, 0.22, 0.22, y0, y0 + 0.3 + s.h, 0, 1.6); + const geo = boxGeometry(s.x, s.z, 0.22, 0.22, y0, y0 + 0.3 + s.h, 0, stein.tile); const m = new Mesh(geo, mat); m.castShadow = true; m.receiveShadow = true; @@ -165,30 +95,59 @@ function spielhaus(p: Prop, y: number): Group { return g; } +/** + * Flammengrill: Cortenstahl-Kubus mit umlaufender Grillplatte und offener + * Feuerkammer, wie auf dem Referenzfoto des Plans. + */ function flammengrill(p: Prop, y: number): Group { const g = new Group(); - const steel = new MeshStandardMaterial({ color: 0x3a3b3e, roughness: 0.5, metalness: 0.45 }); - const body = new Mesh(boxGeometry(p.x, p.z, p.w, p.d, y + 0.06, y + p.h, p.rot, 1), steel); + const corten = new MeshStandardMaterial({ color: 0x5c3a26, roughness: 0.62, metalness: 0.45 }); + const dark = new MeshStandardMaterial({ color: 0x241d18, roughness: 0.75, metalness: 0.3 }); + const plateMat = new MeshStandardMaterial({ color: 0x3b3a37, roughness: 0.34, metalness: 0.72 }); + + // Sockel etwas eingezogen, damit der Kubus zu schweben scheint + const base = new Mesh(boxGeometry(p.x, p.z, p.w - 0.12, p.d - 0.12, y, y + 0.08, p.rot, 1), dark); + g.add(base); + + const bodyTop = y + p.h - 0.05; + const body = new Mesh(boxGeometry(p.x, p.z, p.w, p.d, y + 0.08, bodyTop, p.rot, 1), corten); body.castShadow = true; body.receiveShadow = true; g.add(body); + + // Feuerkammer: dunkle Nische in der Vorderseite + const a = (p.rot * Math.PI) / 180; + const fx = p.x - Math.sin(a) * (p.d / 2 - 0.02); + const fz = p.z + Math.cos(a) * (p.d / 2 - 0.02); + const fire = new Mesh( + boxGeometry(fx, fz, p.w * 0.62, 0.06, y + 0.24, y + 0.52, p.rot, 1), dark, + ); + g.add(fire); + + // Grillplatte mit Ausschnitt fuer das Feuer const plate = new Mesh( - boxGeometry(p.x, p.z, p.w + 0.1, p.d + 0.1, y + p.h, y + p.h + 0.03, p.rot, 1), - new MeshStandardMaterial({ color: 0x3a3a3c, roughness: 0.35, metalness: 0.7 }), + boxGeometry(p.x, p.z, p.w + 0.14, p.d + 0.14, bodyTop, bodyTop + 0.035, p.rot, 1), plateMat, ); plate.castShadow = true; + plate.receiveShadow = true; g.add(plate); + const ring = new Mesh( + new CylinderGeometry(p.w * 0.24, p.w * 0.24, 0.05, 20), dark, + ); + ring.position.set(p.x, bodyTop + 0.04, p.z); + g.add(ring); return g; } function bank(p: Prop, y: number): Group { const g = new Group(); - const stein = material(tex.travertinMauer(), { roughness: 0.65 }); - const seat = new Mesh(boxGeometry(p.x, p.z, p.w, p.d, y + p.h - 0.09, y + p.h, p.rot, 1.6), stein); + const belag = tex.travertinMauer(); + const stein = material(belag, { roughness: 0.65 }); + const seat = new Mesh(boxGeometry(p.x, p.z, p.w, p.d, y + p.h - 0.09, y + p.h, p.rot, belag.tile), stein); seat.castShadow = true; seat.receiveShadow = true; g.add(seat); for (const s of [-1, 1]) { const m = new Mesh( - boxGeometry(p.x, p.z + (s * (p.d / 2 - 0.22)), p.w - 0.08, 0.14, y, y + p.h - 0.09, p.rot, 1.6), + boxGeometry(p.x, p.z + (s * (p.d / 2 - 0.22)), p.w - 0.08, 0.14, y, y + p.h - 0.09, p.rot, belag.tile), stein, ); m.castShadow = true; @@ -197,14 +156,52 @@ function bank(p: Prop, y: number): Group { return g; } -function simpleBox(p: Prop, y: number, color: number, rough = 0.7): Mesh { - const m = new Mesh( - boxGeometry(p.x, p.z, p.w, p.d, y, y + p.h, p.rot, 1), - new MeshStandardMaterial({ color, roughness: rough }), +/** Garage fuer den Maehroboter: flaches Pultdach auf zwei Seitenwangen. */ +function roboterGarage(p: Prop, y: number): Group { + const g = new Group(); + const holz = material(tex.fassadeHolz(), { color: 0x9aa08e, roughness: 0.82 }); + const dach = new MeshStandardMaterial({ color: 0x4e5348, roughness: 0.6, metalness: 0.2 }); + const hw = p.w / 2; + for (const s of [-1, 1]) { + const m = new Mesh(boxGeometry(p.x + s * (hw - 0.03), p.z, 0.06, p.d, y, y + p.h, p.rot, 1), holz); + m.castShadow = true; m.receiveShadow = true; + g.add(m); + } + const back = new Mesh(boxGeometry(p.x, p.z + p.d / 2 - 0.03, p.w, 0.06, y, y + p.h, p.rot, 1), holz); + back.castShadow = true; + g.add(back); + const roof = new Mesh( + boxGeometry(p.x, p.z, p.w + 0.1, p.d + 0.12, y + p.h, y + p.h + 0.05, p.rot, 1), dach, ); - m.castShadow = true; - m.receiveShadow = true; - return m; + roof.castShadow = true; + g.add(roof); + return g; +} + +/** Wasserhahn: verzinkter Standrohrsockel mit Auslauf. */ +function wasserhahn(p: Prop, y: number): Group { + const g = new Group(); + const metal = new MeshStandardMaterial({ color: 0x8d9095, roughness: 0.38, metalness: 0.8 }); + const post = new Mesh(new CylinderGeometry(0.045, 0.05, p.h, 12), metal); + post.position.set(p.x, y + p.h / 2, p.z); + post.castShadow = true; + g.add(post); + const spout = new Mesh(new CylinderGeometry(0.016, 0.016, 0.16, 8), metal); + spout.rotation.z = Math.PI / 2; + spout.position.set(p.x + 0.08, y + p.h - 0.08, p.z); + g.add(spout); + return g; +} + +/** Schlaufschacht D = 30 cm: buendiger Deckel im Belag. */ +function schachtdeckel(p: Prop, y: number): Group { + const g = new Group(); + const metal = new MeshStandardMaterial({ color: 0x6f6c66, roughness: 0.55, metalness: 0.6 }); + const lid = new Mesh(new CylinderGeometry(p.w / 2, p.w / 2, 0.03, 24), metal); + lid.position.set(p.x, y + 0.012, p.z); + lid.receiveShadow = true; + g.add(lid); + return g; } function gartentor(p: Prop, y: number): Group { @@ -235,9 +232,9 @@ export function buildProps(props: Prop[], height: (x: number, z: number) => numb case 'flammengrill': obj = flammengrill(p, y); break; case 'bank': obj = bank(p, y); break; case 'tor': obj = gartentor(p, y); break; - case 'roboter': obj = simpleBox(p, y, 0x33413a, 0.6); break; - case 'wasserhahn': obj = simpleBox(p, y, 0x8a8d90, 0.4); break; - case 'schacht': obj = simpleBox(p, y - 0.01, 0x77746e, 0.9); break; + case 'roboter': obj = roboterGarage(p, y); break; + case 'wasserhahn': obj = wasserhahn(p, y); break; + case 'schacht': obj = schachtdeckel(p, y); break; default: continue; } obj.name = p.id; diff --git a/src/scene/surfaces.ts b/src/scene/surfaces.ts index 8790ef0..179a0f2 100644 --- a/src/scene/surfaces.ts +++ b/src/scene/surfaces.ts @@ -1,27 +1,68 @@ /** - * Belagsflaechen aus dem Gartenplan: Travertin, Keramik, Tegula, Rasen, - * Schotterwiese, Beete, Spielsand. + * Belagsflaechen aus dem Gartenplan. + * + * Gebaute Belaege (Travertin, Keramik, Tegula, Verbundstein, Spielsand, + * Dekorkies) sind **eben**: sie liegen in der Ebene, die im Szenenmodell aus + * den Hoehenkoten bestimmt wurde, und bekommen eine senkrechte Sichtkante zum + * angrenzenden Gelaende. Wachsende Flaechen (Rasen, Schotterwiese, Beet) + * folgen dem Gelaende. + * + * Dazu die Details, die den Plan ausmachen: das Metallband als Einfassung und + * die einzeln im Kies verlegten Travertinplatten 40x60x3 cm. */ -import { Group, Mesh, MeshStandardMaterial, DoubleSide } from 'three'; -import type { Surface, SurfaceType } from '../site'; -import { surfaceGeometryMulti } from './geometry'; +import { + BufferGeometry, DoubleSide, Group, InstancedMesh, Mesh, MeshStandardMaterial, + Object3D, +} from 'three'; +import type { Slab, Surface, SurfaceType, Vec2 } from '../site'; +import { + boxGeometry, edgingGeometry, mergeGeometries, planarSurfaceGeometry, + surfaceEdgeGeometry, surfaceGeometryMulti, +} from './geometry'; import * as tex from './textures'; -const BELAG: Record tex.Belag; offset: number; label: string }> = { - travertin80: { belag: tex.travertin80, offset: 0.042, label: 'Travertinplatten 80×80×3 cm' }, - travertin4060: { belag: tex.travertin4060, offset: 0.042, label: 'Travertinplatten 40×60×3 cm mit Dekorkies' }, - travertinstell: { belag: tex.travertinstell, offset: 0.038, label: 'Travertinstellplatten' }, - keramik: { belag: tex.keramik, offset: 0.032, label: 'Keramikplatten 60×60×2 cm' }, - verbundstein: { belag: tex.verbundstein, offset: 0.030, label: 'Verbundsteine (Anpassung Nachbar)' }, - tegula: { belag: tex.tegula, offset: 0.034, label: 'Tegula-Pflastersteine grau' }, - rasen: { belag: tex.rasen, offset: 0.022, label: 'Rasen' }, - schotterwiese: { belag: tex.schotterwiese, offset: 0.020, label: 'Schotterwiese' }, - beet: { belag: tex.beet, offset: 0.018, label: 'Pflanzbeet' }, - spielsand: { belag: tex.spielsand, offset: 0.016, label: 'Spielsand' }, +interface BelagDef { + belag: () => tex.Belag; + label: string; + /** Aufbauhoehe ueber der Ebene bzw. ueber dem Gelaende. */ + lift: number; + /** Gebaute Flaeche: eben, mit Sichtkante. */ + built: boolean; + /** Kante mit Metallband einfassen. */ + edging?: boolean; + /** Material der Sichtkante, falls abweichend. */ + edge?: () => tex.Belag; +} + +const BELAG: Record = { + travertin80: { belag: tex.travertin80, label: 'Travertinplatten 80×80×3 cm', lift: 0.030, built: true, edge: tex.travertinMauer }, + travertinstell: { belag: tex.travertinstell, label: 'Travertinstellplatten', lift: 0.028, built: true, edge: tex.travertinMauer }, + keramik: { belag: tex.keramik, label: 'Keramikplatten 60×60×2 cm', lift: 0.020, built: true, edge: tex.beton }, + verbundstein: { belag: tex.verbundstein, label: 'Verbundsteine (Nachbar)', lift: 0.014, built: true, edge: tex.beton }, + tegula: { belag: tex.tegula, label: 'Tegula-Pflastersteine grau', lift: 0.014, built: true, edge: tex.beton }, + dekorkies: { belag: tex.dekorkies, label: 'Dekorkies', lift: 0.004, built: true, edging: true, edge: tex.beton }, + spielsand: { belag: tex.spielsand, label: 'Spielsand', lift: 0.002, built: true, edging: true, edge: tex.beton }, + rasen: { belag: tex.rasen, label: 'Rasen', lift: 0.012, built: false }, + schotterwiese: { belag: tex.schotterwiese, label: 'Schotterwiese', lift: 0.010, built: false }, + beet: { belag: tex.beet, label: 'Pflanzbeet', lift: 0.008, built: false, edging: true }, }; +const STAHL = () => new MeshStandardMaterial({ color: 0x8a877f, roughness: 0.55, metalness: 0.62 }); + +function material(belag: tex.Belag, extra: Record = {}) { + return new MeshStandardMaterial({ + map: belag.map, + normalMap: belag.normalMap ?? null, + normalScale: belag.normalScale, + roughness: belag.roughness, + metalness: 0, + ...extra, + }); +} + export function buildSurfaces( surfaces: Surface[], + slabs: Slab[], height: (x: number, z: number) => number, ): Group { const group = new Group(); @@ -34,29 +75,87 @@ export function buildSurfaces( byType.set(s.type, list); } + const edgingParts: BufferGeometry[] = []; + for (const [type, list] of byType) { const def = BELAG[type]; if (!def) continue; const belag = def.belag(); - const geo = surfaceGeometryMulti( - list.map((s) => s.polygon), - height, - { offset: def.offset, tile: belag.tile, maxEdge: 0.28 }, - ); - const mesh = new Mesh(geo, new MeshStandardMaterial({ - map: belag.map, - roughness: belag.roughness, - metalness: 0, - side: DoubleSide, - polygonOffset: true, - polygonOffsetFactor: -1, - polygonOffsetUnits: -1, + + const tops: BufferGeometry[] = []; + const sides: BufferGeometry[] = []; + + for (const s of list) { + const plane = def.built ? s.plane : undefined; + if (plane) { + const topAt = (x: number, z: number) => plane[0] * x + plane[1] * z + plane[2] + def.lift; + tops.push(planarSurfaceGeometry(s.polygon, plane, belag.tile, def.lift)); + sides.push(surfaceEdgeGeometry( + s.polygon, topAt, + (x, z) => Math.min(height(x, z), topAt(x, z)) - 0.16, + (def.edge ?? def.belag)().tile, + )); + if (def.edging) edgingParts.push(edgingGeometry(s.polygon, topAt)); + } else { + tops.push(surfaceGeometryMulti([s.polygon], height, { + offset: def.lift, tile: belag.tile, maxEdge: 0.28, + })); + if (def.edging) { + edgingParts.push(edgingGeometry(s.polygon, (x, z) => height(x, z) + def.lift)); + } + } + } + + const mesh = new Mesh(mergeGeometries(tops), material(belag, { + side: DoubleSide, polygonOffset: true, polygonOffsetFactor: -1, polygonOffsetUnits: -1, })); mesh.name = def.label; mesh.receiveShadow = true; mesh.userData.surfaceType = type; group.add(mesh); + + if (sides.length) { + const edgeBelag = (def.edge ?? def.belag)(); + const edgeMesh = new Mesh(mergeGeometries(sides), material(edgeBelag, { side: DoubleSide })); + edgeMesh.name = `${def.label} – Sichtkante`; + edgeMesh.castShadow = true; + edgeMesh.receiveShadow = true; + group.add(edgeMesh); + } + } + + if (edgingParts.length) { + const band = new Mesh(mergeGeometries(edgingParts), STAHL()); + band.name = 'Metallband'; + band.castShadow = true; + band.receiveShadow = true; + group.add(band); + } + + // --- Einzeln verlegte Travertinplatten 40x60x3 cm ------------------------ + if (slabs.length) { + const belag = tex.travertinSlab(); + const proto = boxGeometry(0, 0, 0.40, 0.60, 0, 0.05, 0, belag.tile); + const mesh = new InstancedMesh(proto, material(belag), slabs.length); + const dummy = new Object3D(); + slabs.forEach((s, i) => { + dummy.position.set(s.x, height(s.x, s.z) + 0.005, s.z); + dummy.scale.set(s.w / 0.4, 1, s.d / 0.6); + dummy.rotation.set(0, 0, 0); + dummy.updateMatrix(); + mesh.setMatrixAt(i, dummy.matrix); + }); + mesh.instanceMatrix.needsUpdate = true; + mesh.castShadow = true; + mesh.receiveShadow = true; + mesh.name = 'Travertinplatten 40×60×3 cm im Dekorkies'; + group.add(mesh); } return group; } + +/** Randpolygone der Belaege, damit andere Bauteile sauber anschliessen. */ +export function surfacePolygons(surfaces: Surface[], type: SurfaceType): Vec2[][] { + return surfaces.filter((s) => s.type === type).map((s) => s.polygon); +} diff --git a/src/scene/terrain.ts b/src/scene/terrain.ts index 13abca7..c4e8b96 100644 --- a/src/scene/terrain.ts +++ b/src/scene/terrain.ts @@ -6,7 +6,7 @@ import { BufferAttribute, BufferGeometry, DoubleSide, Mesh, MeshStandardMaterial, Group, } from 'three'; import type { Terrain } from '../site'; -import { rasen, schotterwiese } from './textures'; +import { rohboden } from './textures'; export function buildTerrain(terrain: Terrain): Group { const group = new Group(); @@ -18,7 +18,7 @@ export function buildTerrain(terrain: Terrain): Group { const geo = new BufferGeometry(); const verts = new Float32Array(nx * nz * 3); const uvs = new Float32Array(nx * nz * 2); - const belag = rasen(); + const belag = rohboden(); for (let j = 0; j < nz; j++) { for (let i = 0; i < nx; i++) { const k = j * nx + i; @@ -53,7 +53,7 @@ export function buildTerrain(terrain: Terrain): Group { // Das Grundstueck liegt an einem Hang ueber dem Tal. Das Umland wird als // Kranz direkt an die Randpunkte des Rasters gehaengt - so entsteht keine // sichtbare Kante - und faellt gegen aussen ab, vor allem nach Suedwesten. - const wiese = schotterwiese(); + const wiese = rohboden(); const cx = x0 + ((nx - 1) * cell) / 2; const cz = z0 + ((nz - 1) * cell) / 2; @@ -91,7 +91,7 @@ export function buildTerrain(terrain: Terrain): Group { // Nach Suedwesten faellt das Gelaende deutlich staerker ab (Blick ins Tal). const sw = (1 - Math.cos(Math.atan2(dz, dx) - 2.4)) / 2; ringPos.push(x, p.y - t * (6 + 26 * sw * sw), z); - ringUv.push(x / (wiese.tile * 5), -z / (wiese.tile * 5)); + ringUv.push(x / wiese.tile, -z / wiese.tile); } } for (let k = 0; k < RINGS; k++) { @@ -107,7 +107,7 @@ export function buildTerrain(terrain: Terrain): Group { far.setIndex(ringIdx); far.computeVertexNormals(); const surroundings = new Mesh(far, new MeshStandardMaterial({ - map: wiese.map, roughness: 1, metalness: 0, color: 0x86935f, side: DoubleSide, + map: wiese.map, roughness: 1, metalness: 0, color: 0xa9b096, side: DoubleSide, })); surroundings.name = 'Umland'; group.add(surroundings); diff --git a/src/scene/textures.ts b/src/scene/textures.ts index 1761af2..5f2c623 100644 --- a/src/scene/textures.ts +++ b/src/scene/textures.ts @@ -8,6 +8,7 @@ */ import { CanvasTexture, RepeatWrapping, SRGBColorSpace, LinearMipmapLinearFilter, + LinearSRGBColorSpace, Vector2, } from 'three'; const SIZE = 512; @@ -102,6 +103,9 @@ function slabs( export interface Belag { map: CanvasTexture; + /** Aus dem Fugenbild abgeleitete Normalmap - gibt den Belaegen Tiefe. */ + normalMap?: CanvasTexture; + normalScale?: Vector2; tile: number; roughness: number; color?: number; @@ -119,75 +123,210 @@ function make(key: string, tile: number, roughness: number, draw: (ctx: CanvasRe return belag; } +/** + * Rechnet ein Hoehenbild in eine Normalmap um (Sobel, kachelnd). + * Damit bekommen Fugen und Steinkanten echte Tiefe im Streiflicht. + */ +function normalFromHeight(src: HTMLCanvasElement, strength: number): CanvasTexture { + const sctx = src.getContext('2d', { willReadFrequently: true })!; + const h = sctx.getImageData(0, 0, SIZE, SIZE).data; + const [c, ctx] = canvas(); + const out = ctx.createImageData(SIZE, SIZE); + const at = (x: number, y: number) => + h[(((y + SIZE) % SIZE) * SIZE + ((x + SIZE) % SIZE)) * 4] / 255; + for (let y = 0; y < SIZE; y++) { + for (let x = 0; x < SIZE; x++) { + const dx = + at(x - 1, y - 1) + 2 * at(x - 1, y) + at(x - 1, y + 1) - + at(x + 1, y - 1) - 2 * at(x + 1, y) - at(x + 1, y + 1); + const dy = + at(x - 1, y - 1) + 2 * at(x, y - 1) + at(x + 1, y - 1) - + at(x - 1, y + 1) - 2 * at(x, y + 1) - at(x + 1, y + 1); + const nx = dx * strength, ny = dy * strength, nz = 1; + const len = Math.hypot(nx, ny, nz); + const k = (y * SIZE + x) * 4; + out.data[k] = ((nx / len) * 0.5 + 0.5) * 255; + out.data[k + 1] = ((ny / len) * 0.5 + 0.5) * 255; + out.data[k + 2] = ((nz / len) * 0.5 + 0.5) * 255; + out.data[k + 3] = 255; + } + } + ctx.putImageData(out, 0, 0); + const t = new CanvasTexture(c); + t.wrapS = t.wrapT = RepeatWrapping; + t.colorSpace = LinearSRGBColorSpace; + t.anisotropy = 8; + t.minFilter = LinearMipmapLinearFilter; + return t; +} + +/** + * Wie `make`, zusaetzlich mit einem Hoehenbild fuer die Normalmap. + * `drawHeight` zeichnet Graustufen: hell = hoch, dunkel = Fuge. + */ +function makeRelief( + key: string, tile: number, roughness: number, normalStrength: number, + draw: (ctx: CanvasRenderingContext2D) => void, + drawHeight: (ctx: CanvasRenderingContext2D) => void, +): Belag { + const hit = cache.get(key); + if (hit) return hit; + const [c, ctx] = canvas(); + draw(ctx); + const [hc, hctx] = canvas(); + drawHeight(hctx); + const belag: Belag = { + map: texture(c), + normalMap: normalFromHeight(hc, normalStrength), + normalScale: new Vector2(1, 1), + tile, + roughness, + }; + cache.set(key, belag); + return belag; +} + +/** Zeichnet dasselbe Plattenraster als Hoehenbild: Platte hell, Fuge dunkel. */ +function slabHeight( + ctx: CanvasRenderingContext2D, tile: number, slabW: number, slabH: number, + jointM: number, chamfer = 0.012, +) { + const px = SIZE / tile; + ctx.fillStyle = 'rgb(40,40,40)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const cols = Math.round(tile / slabW); + const rows = Math.round(tile / slabH); + const j = Math.max(1.5, jointM * px); + const ch = Math.max(1, chamfer * px); + for (let row = 0; row < rows; row++) { + for (let col = 0; col < cols; col++) { + const x = col * slabW * px + j / 2; + const y = row * slabH * px + j / 2; + const w = slabW * px - j, hgt = slabH * px - j; + // Fase aussen, Plattenspiegel innen + ctx.fillStyle = 'rgb(170,170,170)'; + ctx.fillRect(x, y, w, hgt); + ctx.fillStyle = 'rgb(235,235,235)'; + ctx.fillRect(x + ch, y + ch, w - 2 * ch, hgt - 2 * ch); + } + } +} + // --------------------------------------------------------------------------- // Belaege // --------------------------------------------------------------------------- -/** Travertinplatten 80 x 80 x 3 cm, warmes Creme mit feiner Poren-Struktur. */ -export const travertin80 = () => make('travertin80', 3.2, 0.72, (ctx) => { - slabs(ctx, 3.2, 0.8, 0.8, 'rgb(209,195,168)', 'rgb(170,157,134)', 0.008, 11, 7); - noiseTile(ctx, 21, 32, 0.05); - grain(ctx, 31, 0.05, 2); -}); +/** Travertin-Oberflaeche: warme Wolken und feine Poren. */ +function travertinFinish(ctx: CanvasRenderingContext2D, seed: number) { + noiseTile(ctx, seed, 48, 0.035); + noiseTile(ctx, seed + 100, 144, 0.025); + const rnd = mulberry32(seed + 7); + // Poren und Adern, typisch fuer Travertin + for (let i = 0; i < 900; i++) { + ctx.fillStyle = `rgba(120,105,84,${0.05 + rnd() * 0.10})`; + ctx.beginPath(); + ctx.ellipse(rnd() * SIZE, rnd() * SIZE, 1 + rnd() * 5, 0.6 + rnd() * 1.6, rnd() * 0.6, 0, Math.PI * 2); + ctx.fill(); + } + for (let i = 0; i < 40; i++) { + ctx.strokeStyle = `rgba(146,130,104,${0.06 + rnd() * 0.08})`; + ctx.lineWidth = 1 + rnd() * 2; + ctx.beginPath(); + const y = rnd() * SIZE; + ctx.moveTo(0, y); + for (let x = 0; x <= SIZE; x += 32) ctx.lineTo(x, y + Math.sin(x / 40 + i) * 3); + ctx.stroke(); + } +} -/** Travertinplatten 40 x 60 x 3 cm, im Plan mit Dekorkies in den Fugen. */ -export const travertin4060 = () => make('travertin4060', 2.4, 0.75, (ctx) => { - slabs(ctx, 2.4, 0.4, 0.6, 'rgb(212,199,172)', 'rgb(158,150,133)', 0.02, 12, 8); - noiseTile(ctx, 22, 32, 0.05); - grain(ctx, 32, 0.06, 2); -}); +/** Travertinplatten 80 x 80 x 3 cm, Hauptsitzplatz. */ +export const travertin80 = () => makeRelief('travertin80', 3.2, 0.70, 3.2, + (ctx) => { + slabs(ctx, 3.2, 0.8, 0.8, 'rgb(209,195,168)', 'rgb(158,145,124)', 0.010, 11, 7); + travertinFinish(ctx, 21); + }, + (ctx) => slabHeight(ctx, 3.2, 0.8, 0.8, 0.010, 0.015)); + +/** Einzelne Travertinplatte 40 x 60 x 3 cm - Textur fuer die losen Platten. */ +export const travertinSlab = () => makeRelief('travertinSlab', 0.8, 0.70, 2.2, + (ctx) => { + ctx.fillStyle = 'rgb(213,199,171)'; + ctx.fillRect(0, 0, SIZE, SIZE); + travertinFinish(ctx, 26); + }, + (ctx) => { ctx.fillStyle = 'rgb(210,210,210)'; ctx.fillRect(0, 0, SIZE, SIZE); noiseTile(ctx, 27, 64, 0.06); }); /** Travertinstellplatten als schmaler Randstreifen. */ -export const travertinstell = () => make('travertinstell', 2.4, 0.75, (ctx) => { - slabs(ctx, 2.4, 0.4, 0.4, 'rgb(206,192,166)', 'rgb(164,154,135)', 0.012, 13, 8); - noiseTile(ctx, 23, 32, 0.05); - grain(ctx, 33, 0.05, 2); -}); +export const travertinstell = () => makeRelief('travertinstell', 2.4, 0.73, 3.0, + (ctx) => { + slabs(ctx, 2.4, 0.4, 0.4, 'rgb(206,192,166)', 'rgb(155,144,124)', 0.012, 13, 8); + travertinFinish(ctx, 23); + }, + (ctx) => slabHeight(ctx, 2.4, 0.4, 0.4, 0.012, 0.012)); /** Keramikplatten 60 x 60 x 2 cm, grau - bauseits vorhanden (siehe Fotos). */ -export const keramik = () => make('keramik', 2.4, 0.55, (ctx) => { - slabs(ctx, 2.4, 0.6, 0.6, 'rgb(160,158,154)', 'rgb(128,127,124)', 0.006, 14, 5); - noiseTile(ctx, 24, 48, 0.035); - grain(ctx, 34, 0.04, 1); -}); +export const keramik = () => makeRelief('keramik', 2.4, 0.52, 2.6, + (ctx) => { + slabs(ctx, 2.4, 0.6, 0.6, 'rgb(160,158,154)', 'rgb(118,117,114)', 0.006, 14, 5); + noiseTile(ctx, 24, 48, 0.035); + noiseTile(ctx, 124, 160, 0.02); + grain(ctx, 34, 0.04, 1); + }, + (ctx) => slabHeight(ctx, 2.4, 0.6, 0.6, 0.006, 0.008)); /** Tegula-Pflastersteine grau, kleinformatig und leicht unregelmaessig. */ -export const tegula = () => make('tegula', 1.2, 0.85, (ctx) => { - const px = SIZE / 1.2; - ctx.fillStyle = 'rgb(118,116,114)'; - ctx.fillRect(0, 0, SIZE, SIZE); - const rnd = mulberry32(15); - const sw = 0.15, sh = 0.1; - const cols = Math.round(1.2 / sw), rows = Math.round(1.2 / sh); - for (let row = 0; row < rows; row++) { - const off = (row % 2) * 0.5; - for (let col = -1; col <= cols; col++) { - const v = 140 + rnd() * 34; - ctx.fillStyle = `rgb(${v | 0},${(v - 2) | 0},${(v - 5) | 0})`; - const x = (col + off) * sw * px + 1.2; - const y = row * sh * px + 1.2; - ctx.fillRect(x, y, sw * px - 2.4, sh * px - 2.4); +export const tegula = () => makeRelief('tegula', 1.2, 0.84, 3.4, + (ctx) => { + const px = SIZE / 1.2; + ctx.fillStyle = 'rgb(104,102,100)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(15); + const sw = 0.15, sh = 0.1; + const cols = Math.round(1.2 / sw), rows = Math.round(1.2 / sh); + for (let row = 0; row < rows; row++) { + const off = (row % 2) * 0.5; + for (let col = -1; col <= cols; col++) { + const v = 138 + rnd() * 36; + ctx.fillStyle = `rgb(${v | 0},${(v - 2) | 0},${(v - 6) | 0})`; + ctx.fillRect((col + off) * sw * px + 1.6, row * sh * px + 1.6, sw * px - 3.2, sh * px - 3.2); + } } - } - noiseTile(ctx, 25, 24, 0.06); - grain(ctx, 35, 0.09, 1); -}); + noiseTile(ctx, 25, 24, 0.06); + grain(ctx, 35, 0.10, 1); + }, + (ctx) => { + const px = SIZE / 1.2; + ctx.fillStyle = 'rgb(40,40,40)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(115); + const sw = 0.15, sh = 0.1; + for (let row = 0; row < Math.round(1.2 / sh); row++) { + const off = (row % 2) * 0.5; + for (let col = -1; col <= Math.round(1.2 / sw); col++) { + const v = 200 + rnd() * 45; + ctx.fillStyle = `rgb(${v | 0},${v | 0},${v | 0})`; + ctx.fillRect((col + off) * sw * px + 2.2, row * sh * px + 2.2, sw * px - 4.4, sh * px - 4.4); + } + } + }); /** Verbundsteine des Nachbarn, etwas dunkler als Tegula. */ -export const verbundstein = () => make('verbundstein', 1.2, 0.88, (ctx) => { - const px = SIZE / 1.2; - ctx.fillStyle = 'rgb(110,108,106)'; - ctx.fillRect(0, 0, SIZE, SIZE); - const rnd = mulberry32(16); - for (let row = 0; row < 8; row++) { - for (let col = 0; col < 8; col++) { - const v = 126 + rnd() * 30; - ctx.fillStyle = `rgb(${v | 0},${v | 0},${(v - 4) | 0})`; - ctx.fillRect(col * 0.15 * px + 1.5, row * 0.15 * px + 1.5, 0.15 * px - 3, 0.15 * px - 3); +export const verbundstein = () => makeRelief('verbundstein', 1.2, 0.88, 3.0, + (ctx) => { + const px = SIZE / 1.2; + ctx.fillStyle = 'rgb(100,98,96)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(16); + for (let row = 0; row < 8; row++) { + for (let col = 0; col < 8; col++) { + const v = 124 + rnd() * 32; + ctx.fillStyle = `rgb(${v | 0},${v | 0},${(v - 4) | 0})`; + ctx.fillRect(col * 0.15 * px + 1.8, row * 0.15 * px + 1.8, 0.15 * px - 3.6, 0.15 * px - 3.6); + } } - } - grain(ctx, 36, 0.08, 1); -}); + grain(ctx, 36, 0.08, 1); + }, + (ctx) => slabHeight(ctx, 1.2, 0.15, 0.15, 0.008, 0.006)); /** Rasen: gemaehte Flaeche mit leichten Bahnen. */ export const rasen = () => make('rasen', 2.0, 0.95, (ctx) => { @@ -234,11 +373,11 @@ export const schotterwiese = () => make('schotterwiese', 2.0, 0.98, (ctx) => { /** Dekorkies in den Pflanzflaechen und um den Flammengrill. */ export const dekorkies = () => make('dekorkies', 1.0, 0.99, (ctx) => { - ctx.fillStyle = 'rgb(150,144,132)'; + ctx.fillStyle = 'rgb(118,111,99)'; ctx.fillRect(0, 0, SIZE, SIZE); const rnd = mulberry32(46); for (let i = 0; i < 6500; i++) { - const v = 128 + rnd() * 90; + const v = 104 + rnd() * 78; ctx.fillStyle = `rgb(${v | 0},${(v - 5) | 0},${(v - 16) | 0})`; ctx.beginPath(); ctx.ellipse(rnd() * SIZE, rnd() * SIZE, 2 + rnd() * 4, 2 + rnd() * 3, rnd() * 3.14, 0, Math.PI * 2); @@ -276,26 +415,45 @@ export const spielsand = () => make('spielsand', 1.5, 1.0, (ctx) => { // Bauteile // --------------------------------------------------------------------------- -/** Travertin-Mauerwerk in Schichten, wie auf den Referenzfotos des Plans. */ -export const travertinMauer = () => make('travertinMauer', 1.6, 0.7, (ctx) => { - const px = SIZE / 1.6; - ctx.fillStyle = 'rgb(168,152,126)'; - ctx.fillRect(0, 0, SIZE, SIZE); - const rnd = mulberry32(61); - const h = 0.2; - for (let row = 0; row < Math.round(1.6 / h); row++) { - let x = -((row % 2) * 0.3); - while (x < 1.6) { - const w = 0.4 + rnd() * 0.4; - const v = 202 + rnd() * 26; - ctx.fillStyle = `rgb(${v | 0},${(v - 17) | 0},${(v - 44) | 0})`; - ctx.fillRect(x * px + 1, row * h * px + 1, w * px - 2, h * px - 2); - x += w; +/** + * Travertin als Steinoberflaeche - warm, geschichtet, mit den typischen + * Poren. Die Schichtung der Mauer entsteht in walls.ts aus echten Bloecken, + * die Textur liefert nur das Material. + */ +export const travertinMauer = () => makeRelief('travertinMauer', 0.7, 0.68, 1.9, + (ctx) => { + ctx.fillStyle = 'rgb(203,183,148)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(61); + // liegende Sedimentbaender, bewusst zurueckhaltend - sonst wirkt der Stein + // aus der Naehe fleckig statt geschichtet + for (let i = 0; i < 34; i++) { + const y = rnd() * SIZE; + const hgt = 3 + rnd() * 12; + ctx.fillStyle = `rgba(${(188 + rnd() * 20) | 0},${(168 + rnd() * 18) | 0},${(134 + rnd() * 16) | 0},0.35)`; + ctx.beginPath(); + ctx.moveTo(0, y); + for (let x = 0; x <= SIZE; x += 24) ctx.lineTo(x, y + Math.sin(x / 55 + i) * 4); + for (let x = SIZE; x >= 0; x -= 24) ctx.lineTo(x, y + hgt + Math.sin(x / 48 + i * 1.7) * 4); + ctx.closePath(); + ctx.fill(); } - } - noiseTile(ctx, 62, 40, 0.045); - grain(ctx, 63, 0.05, 2); -}); + travertinFinish(ctx, 62); + grain(ctx, 63, 0.05, 2); + }, + (ctx) => { + ctx.fillStyle = 'rgb(190,190,190)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(64); + // Poren als feine Vertiefungen + for (let i = 0; i < 2400; i++) { + ctx.fillStyle = `rgba(60,60,60,${0.18 + rnd() * 0.32})`; + ctx.beginPath(); + ctx.ellipse(rnd() * SIZE, rnd() * SIZE, 0.8 + rnd() * 2.2, 0.6 + rnd() * 1.1, rnd() * 0.7, 0, Math.PI * 2); + ctx.fill(); + } + noiseTile(ctx, 65, 96, 0.07); + }); /** Sichtbeton der Winkelelemente und der Nachbarmauer. */ export const beton = () => make('beton', 2.0, 0.8, (ctx) => { @@ -340,28 +498,46 @@ export const holzscheiter = () => make('holzscheiter', 1.0, 0.9, (ctx) => { }); /** Vertikale Holzschalung der Fassade - graubraun vergraut, wie auf den Fotos. */ -export const fassadeHolz = () => make('fassadeHolz', 1.2, 0.78, (ctx) => { - const px = SIZE / 1.2; - ctx.fillStyle = 'rgb(124,114,100)'; - ctx.fillRect(0, 0, SIZE, SIZE); - const rnd = mulberry32(71); - const w = 0.06; - for (let col = 0; col < Math.round(1.2 / w); col++) { - const v = 152 + rnd() * 32; - ctx.fillStyle = `rgb(${v | 0},${(v - 8) | 0},${(v - 20) | 0})`; - ctx.fillRect(col * w * px + 1.5, 0, w * px - 3, SIZE); - ctx.strokeStyle = 'rgba(84,76,66,0.45)'; - ctx.lineWidth = 1; - for (let i = 0; i < 14; i++) { - const y = rnd() * SIZE; - ctx.beginPath(); - ctx.moveTo(col * w * px + 2, y); - ctx.lineTo(col * w * px + w * px - 3, y + (rnd() - 0.5) * 5); - ctx.stroke(); +export const fassadeHolz = () => makeRelief('fassadeHolz', 1.2, 0.78, 3.6, + (ctx) => { + const px = SIZE / 1.2; + ctx.fillStyle = 'rgb(96,88,76)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(71); + const w = 0.06; + for (let col = 0; col < Math.round(1.2 / w); col++) { + const v = 150 + rnd() * 34; + ctx.fillStyle = `rgb(${v | 0},${(v - 9) | 0},${(v - 22) | 0})`; + ctx.fillRect(col * w * px + 1.5, 0, w * px - 3, SIZE); + // Maserung in Faserrichtung + ctx.strokeStyle = 'rgba(84,76,66,0.42)'; + ctx.lineWidth = 1; + for (let i = 0; i < 16; i++) { + const y = rnd() * SIZE; + ctx.beginPath(); + ctx.moveTo(col * w * px + 2, y); + ctx.lineTo(col * w * px + w * px - 3, y + (rnd() - 0.5) * 6); + ctx.stroke(); + } } - } - noiseTile(ctx, 72, 32, 0.03); -}); + noiseTile(ctx, 72, 32, 0.035); + }, + (ctx) => { + // Hoehenbild: jede Latte gewoelbt, dazwischen die Schattenfuge + const px = SIZE / 1.2; + ctx.fillStyle = 'rgb(30,30,30)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const w = 0.06; + for (let col = 0; col < Math.round(1.2 / w); col++) { + const x0 = col * w * px + 2.2, wPx = w * px - 4.4; + const g = ctx.createLinearGradient(x0, 0, x0 + wPx, 0); + g.addColorStop(0, 'rgb(150,150,150)'); + g.addColorStop(0.5, 'rgb(240,240,240)'); + g.addColorStop(1, 'rgb(150,150,150)'); + ctx.fillStyle = g; + ctx.fillRect(x0, 0, wPx, SIZE); + } + }); /** Heller Betonsockel unter der Holzschalung. */ export const sockel = () => make('sockel', 2.0, 0.72, (ctx) => { @@ -399,3 +575,82 @@ export const spritzschutz = () => make('spritzschutz', 1.0, 0.98, (ctx) => { ctx.fill(); } }); + +/** + * Rohboden mit spaerlichem Bewuchs. Das ist der Grundton des Gelaendes - + * die eigentlichen Flaechen des Plans liegen als eigene Meshes darueber. + */ +export const rohboden = () => make('rohboden', 2.0, 0.99, (ctx) => { + ctx.fillStyle = 'rgb(104,122,68)'; + ctx.fillRect(0, 0, SIZE, SIZE); + noiseTile(ctx, 81, 14, 0.11); + noiseTile(ctx, 82, 56, 0.06); + const rnd = mulberry32(83); + // Wiesenhalme, unregelmaessiger und matter als der gemaehte Rasen + for (let i = 0; i < 4200; i++) { + const x = rnd() * SIZE, y = rnd() * SIZE; + const v = rnd(); + ctx.strokeStyle = `rgba(${(88 + v * 66) | 0},${(112 + v * 62) | 0},${(52 + v * 44) | 0},0.6)`; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(x + (rnd() - 0.5) * 4, y - 3 - rnd() * 5); + ctx.stroke(); + } + // vereinzelt offene Bodenstellen + for (let i = 0; i < 500; i++) { + ctx.fillStyle = `rgba(122,110,84,${0.15 + rnd() * 0.25})`; + ctx.beginPath(); + ctx.arc(rnd() * SIZE, rnd() * SIZE, 2 + rnd() * 6, 0, Math.PI * 2); + ctx.fill(); + } + grain(ctx, 84, 0.04, 1); +}); + +/** + * Laub fuer geschnittene Hecken: dichte, kleinblaettrige Oberflaeche mit + * Relief. Ohne das wirken die Heckenkoerper wie lackierte Bloecke. + */ +function laub(key: string, base: string, seed: number, leaf: number): Belag { + return makeRelief(key, 0.55, 0.97, 2.6, + (ctx) => { + ctx.fillStyle = base; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(seed); + const [r, g, b] = base.match(/\d+/g)!.map(Number); + for (let i = 0; i < 5200; i++) { + const v = (rnd() - 0.45) * 70; + ctx.fillStyle = `rgb(${Math.max(0, Math.min(255, r + v)) | 0},${Math.max(0, Math.min(255, g + v * 1.15)) | 0},${Math.max(0, Math.min(255, b + v * 0.7)) | 0})`; + ctx.save(); + ctx.translate(rnd() * SIZE, rnd() * SIZE); + ctx.rotate(rnd() * Math.PI); + ctx.beginPath(); + ctx.ellipse(0, 0, leaf * (0.7 + rnd() * 0.6), leaf * (0.4 + rnd() * 0.35), 0, 0, Math.PI * 2); + ctx.fill(); + ctx.restore(); + } + noiseTile(ctx, seed + 5, 12, 0.10); + }, + (ctx) => { + ctx.fillStyle = 'rgb(120,120,120)'; + ctx.fillRect(0, 0, SIZE, SIZE); + const rnd = mulberry32(seed + 11); + for (let i = 0; i < 3600; i++) { + const v = 90 + rnd() * 150; + ctx.fillStyle = `rgb(${v | 0},${v | 0},${v | 0})`; + ctx.save(); + ctx.translate(rnd() * SIZE, rnd() * SIZE); + ctx.rotate(rnd() * Math.PI); + ctx.beginPath(); + ctx.ellipse(0, 0, leaf * 0.9, leaf * 0.5, 0, 0, Math.PI * 2); + ctx.fill(); + ctx.restore(); + } + noiseTile(ctx, seed + 13, 10, 0.16); + }); +} + +/** Eibe: dunkel, feinnadelig. */ +export const laubEibe = () => laub('laubEibe', 'rgb(64,92,52)', 201, 3.4); +/** Liguster: mittelgruen, groesseres Blatt. */ +export const laubLiguster = () => laub('laubLiguster', 'rgb(85,118,55)', 211, 5.2); diff --git a/src/scene/vegetation.ts b/src/scene/vegetation.ts index 55f4903..afa3cec 100644 --- a/src/scene/vegetation.ts +++ b/src/scene/vegetation.ts @@ -6,12 +6,12 @@ * statt Blattgeometrie - das bleibt auch auf dem Handy fluessig. */ import { - BoxGeometry, BufferAttribute, Color, CylinderGeometry, Group, IcosahedronGeometry, - InstancedMesh, Matrix4, Mesh, MeshStandardMaterial, Object3D, Quaternion, Vector3, - type BufferGeometry, + BoxGeometry, BufferAttribute, BufferGeometry, Color, CylinderGeometry, DoubleSide, + Group, IcosahedronGeometry, InstancedMesh, Matrix4, Mesh, MeshStandardMaterial, + Object3D, Quaternion, Vector3, } from 'three'; -import type { Plant, Tree } from '../site'; -import { boxGeometry } from './geometry'; +import type { Plant, Tree, Vec2 } from '../site'; +import * as tex from './textures'; function rng(seed: number) { let a = seed >>> 0; @@ -108,6 +108,197 @@ function buildTree(t: Tree, y: number): Group { return g; } +/** + * Fasst Pflanzstandorte zu Reihen zusammen: benachbarte Punkte werden zu einem + * Polyzug verkettet. So wird aus einer Reihe Einzelpflanzen eine Hecke. + */ +function chainRows(points: Vec2[], maxGap: number): Vec2[][] { + const open = points.map((p) => [...p] as Vec2); + const rows: Vec2[][] = []; + while (open.length) { + const row: Vec2[] = [open.pop()!]; + // in beide Richtungen weitersuchen + for (const end of [1, 0]) { + for (;;) { + const from = end ? row[row.length - 1] : row[0]; + let best = -1, bd = maxGap; + for (let i = 0; i < open.length; i++) { + const d = Math.hypot(open[i][0] - from[0], open[i][1] - from[1]); + if (d < bd) { bd = d; best = i; } + } + if (best < 0) break; + const [p] = open.splice(best, 1); + if (end) row.push(p); else row.unshift(p); + } + } + rows.push(row); + } + return rows; +} + +/** Douglas-Peucker: begradigt eine Punktreihe zu einem knappen Polyzug. */ +function simplifyLine(points: Vec2[], tol: number): Vec2[] { + if (points.length <= 2) return points; + const first = points[0], last = points[points.length - 1]; + let idx = -1, maxD = tol; + const dx = last[0] - first[0], dz = last[1] - first[1]; + const l2 = dx * dx + dz * dz; + for (let i = 1; i < points.length - 1; i++) { + const px = points[i][0] - first[0], pz = points[i][1] - first[1]; + const t = l2 > 0 ? Math.max(0, Math.min(1, (px * dx + pz * dz) / l2)) : 0; + const d = Math.hypot(px - dx * t, pz - dz * t); + if (d > maxD) { maxD = d; idx = i; } + } + if (idx < 0) return [first, last]; + return [ + ...simplifyLine(points.slice(0, idx + 1), tol).slice(0, -1), + ...simplifyLine(points.slice(idx), tol), + ]; +} + +/** Trennt einen Polyzug an Knicken ueber `maxTurnDeg` in eigene Abschnitte. */ +function splitAtCorners(line: Vec2[], maxTurnDeg: number): Vec2[][] { + if (line.length <= 2) return [line]; + const out: Vec2[][] = []; + let current: Vec2[] = [line[0]]; + for (let i = 1; i < line.length - 1; i++) { + current.push(line[i]); + const a = Math.atan2(line[i][1] - line[i - 1][1], line[i][0] - line[i - 1][0]); + const b = Math.atan2(line[i + 1][1] - line[i][1], line[i + 1][0] - line[i][0]); + let turn = Math.abs(((b - a) * 180) / Math.PI) % 360; + if (turn > 180) turn = 360 - turn; + if (turn > maxTurnDeg) { + out.push(current); + current = [line[i]]; + } + } + current.push(line[line.length - 1]); + out.push(current); + return out.filter((p) => p.length >= 2); +} + +/** + * Geschnittene Hecke entlang eines Polyzugs: kompakter Koerper mit leicht + * unruhiger, weicher Oberkante - so wirkt sie als Sichtschutz und nicht als + * Reihe von Kugeln. + */ +function hedgeMesh( + row: Vec2[], hgt: number, width: number, + mat: MeshStandardMaterial, height: (x: number, z: number) => number, + rnd: () => number, name: string, +): Mesh { + // Querschnitt einer geschnittenen Hecke: senkrechte Flanken, oben gerundet. + // (u quer zur Reihe, v in der Hoehe, beide relativ zu Breite und Hoehe) + // Der Fuss liegt bewusst unter Terrain, damit die Hecke nirgends schwebt. + const profile: Vec2[] = [ + [-0.44, -0.14], [-0.50, 0.06], [-0.50, 0.72], [-0.46, 0.88], [-0.34, 0.97], + [0.00, 1.00], + [0.34, 0.97], [0.46, 0.88], [0.50, 0.72], [0.50, 0.06], [0.44, -0.14], + ]; + + // Die Pflanzstandorte streuen leicht. Erst begradigen, sonst verdreht sich + // das Profil an jedem Zickzack. + const line = row; + if (line.length < 2) return new Mesh(new BufferGeometry(), mat); + + // Enden etwas ueberstehen lassen, damit die Hecke nicht abrupt abbricht + const ends: Vec2[] = [...line]; + const grow = (from: Vec2, to: Vec2, by: number): Vec2 => { + const dx = to[0] - from[0], dz = to[1] - from[1]; + const l = Math.hypot(dx, dz) || 1; + return [to[0] + (dx / l) * by, to[1] + (dz / l) * by]; + }; + ends[0] = grow(line[1], line[0], 0.22); + ends[ends.length - 1] = grow(line[line.length - 2], line[line.length - 1], 0.22); + + // Stationen mit gemittelter Normale an den Knicken + const stations: { x: number; z: number; nx: number; nz: number; h: number; w: number }[] = []; + const dirs = ends.slice(1).map((p, i) => { + const dx = p[0] - ends[i][0], dz = p[1] - ends[i][1]; + const l = Math.hypot(dx, dz) || 1; + return [dx / l, dz / l] as Vec2; + }); + const normalAt = (vertexIndex: number): Vec2 => { + const a = dirs[Math.max(0, vertexIndex - 1)]; + const b = dirs[Math.min(dirs.length - 1, vertexIndex)]; + const nx = -(a[1] + b[1]) / 2, nz = (a[0] + b[0]) / 2; + const l = Math.hypot(nx, nz) || 1; + return [nx / l, nz / l]; + }; + for (let i = 0; i < ends.length - 1; i++) { + const [ax, az] = ends[i]; + const [bx, bz] = ends[i + 1]; + const len = Math.hypot(bx - ax, bz - az); + const steps = Math.max(1, Math.round(len / 0.35)); + const n0 = normalAt(i), n1 = normalAt(i + 1); + for (let k = i === 0 ? 0 : 1; k <= steps; k++) { + const t = k / steps; + const nx = n0[0] * (1 - t) + n1[0] * t; + const nz = n0[1] * (1 - t) + n1[1] * t; + const l = Math.hypot(nx, nz) || 1; + stations.push({ + x: ax + (bx - ax) * t, z: az + (bz - az) * t, + nx: nx / l, nz: nz / l, + h: hgt * (0.96 + rnd() * 0.08), + w: width * (0.96 + rnd() * 0.08), + }); + } + } + + const pos: number[] = []; + const uv: number[] = []; + let run = 0; + for (let i = 0; i < stations.length - 1; i++) { + const s0 = stations[i], s1 = stations[i + 1]; + const y0 = height(s0.x, s0.z) - 0.06; + const y1 = height(s1.x, s1.z) - 0.06; + const seg = Math.hypot(s1.x - s0.x, s1.z - s0.z); + const at = (s: typeof s0, y: number, p: Vec2) => + [s.x + s.nx * p[0] * s.w, y + p[1] * s.h, s.z + s.nz * p[0] * s.w] as [number, number, number]; + // v folgt der Bogenlaenge des Profils, sonst zieht sich das Laub in die Laenge + let arc = 0; + const U0 = run / 0.55, U1 = (run + seg) / 0.55; + for (let k = 0; k < profile.length - 1; k++) { + const A = at(s0, y0, profile[k]); + const B = at(s1, y1, profile[k]); + const C = at(s1, y1, profile[k + 1]); + const D = at(s0, y0, profile[k + 1]); + const step = Math.hypot( + (profile[k + 1][0] - profile[k][0]) * s0.w, + (profile[k + 1][1] - profile[k][1]) * s0.h, + ); + const v0 = arc / 0.55, v1 = (arc + step) / 0.55; + arc += step; + // Wickelsinn so, dass die Normalen nach aussen zeigen + pos.push(...A, ...D, ...C, ...A, ...C, ...B); + uv.push(U0, v0, U0, v1, U1, v1, U0, v0, U1, v1, U1, v0); + } + // Stirnflaechen an den Enden + if (i === 0 || i === stations.length - 2) { + const s = i === 0 ? s0 : s1; + const y = i === 0 ? y0 : y1; + const c = at(s, y, [0, 0.5]); + for (let k = 0; k < profile.length - 1; k++) { + const A = at(s, y, profile[k]); + const B = at(s, y, profile[k + 1]); + if (i === 0) pos.push(...c, ...A, ...B); else pos.push(...c, ...B, ...A); + uv.push(0.5, 0.5, 0, 0, 1, 1); + } + } + run += seg; + } + + const geo = new BufferGeometry(); + geo.setAttribute('position', new BufferAttribute(new Float32Array(pos), 3)); + geo.setAttribute('uv', new BufferAttribute(new Float32Array(uv), 2)); + geo.computeVertexNormals(); + const mesh = new Mesh(geo, mat); + mesh.name = name; + mesh.castShadow = true; + mesh.receiveShadow = true; + return mesh; +} + /** Baut eine InstancedMesh aus Transformationen. */ function instances( geo: BufferGeometry, mat: MeshStandardMaterial, @@ -148,16 +339,34 @@ export function buildVegetation( const r = rng(4242); - // --- Eiben `Hilli` 80/100 cm: aufrechte, dichte Polster ------------------ - // Plan: Pflanzhoehe 80/100 cm, Breite rund 45 cm. Die Streckung steckt in - // der Geometrie, die Instanzen werden nur gleichmaessig skaliert. - const eiben = plants.filter((p) => p.type === 'eibe' && p.x !== undefined); - const eibeGeo = blob(1, 2, 0.028, 3, 1.9); - const eibeMesh = instances(eibeGeo, foliage(LAUB.eibe, 0.96), eiben.map((p) => { - const s = Math.max(0.22, (p.r ?? 0.2) * 1.1) * (0.92 + r() * 0.18); - return { x: p.x!, y: height(p.x!, p.z!) + s * 1.9, z: p.z!, s, rot: r() * 6.28 }; - }), 'Eiben `Hilli`'); - if (eibeMesh) group.add(eibeMesh); + // --- Eibenhecke `Hilli` 80/100 cm --------------------------------------- + // Der Plan setzt die Eiben in dichten Reihen: das ist eine geschnittene + // Hecke und der eigentliche Sichtschutz im Garten, keine Einzelkugeln. + const eiben = plants.filter((p) => p.type === 'eibe' && p.x !== undefined) + .map((p) => [p.x!, p.z!] as Vec2); + // Reihen begradigen und an scharfen Knicken trennen: eine gemiterte Hecke + // um eine 90-Grad-Ecke herum verdreht sich sonst. + const rows = chainRows(eiben, 2.2).flatMap((row) => splitAtCorners(simplifyLine(row, 0.22), 32)); + const eibeLaub = tex.laubEibe(); + const eibeMat = new MeshStandardMaterial({ + map: eibeLaub.map, normalMap: eibeLaub.normalMap ?? null, + normalScale: eibeLaub.normalScale, roughness: eibeLaub.roughness, metalness: 0, + side: DoubleSide, + }); + for (const row of rows) { + if (row.length >= 2) { + group.add(hedgeMesh(row, 0.95, 0.52, eibeMat, height, r, 'Eibenhecke `Hilli`')); + } else { + // Einzelstand: als Solitaerpolster + const [x, z] = row[0]; + const geo = blob(0.26, 2, 0.05, 3, 1.8); + const m = new Mesh(geo, eibeMat); + m.position.set(x, height(x, z) + 0.47, z); + m.castShadow = true; + m.receiveShadow = true; + group.add(m); + } + } // --- Beerenstraeucher und Heidelbeeren ---------------------------------- const straeucher = plants.filter((p) => p.type === 'strauch' && p.x !== undefined); @@ -205,20 +414,22 @@ export function buildVegetation( if (krautMesh) group.add(krautMesh); // --- Ligusterhecke, Hoehe 170 cm, Breite 75 cm -------------------------- + const ligusterLaub = tex.laubLiguster(); + const ligusterMat = new MeshStandardMaterial({ + map: ligusterLaub.map, normalMap: ligusterLaub.normalMap ?? null, + normalScale: ligusterLaub.normalScale, roughness: ligusterLaub.roughness, metalness: 0, + side: DoubleSide, + }); for (const p of plants) { if (p.type !== 'hecke' || !p.polygon) continue; const poly = p.polygon; let x0 = Infinity, z0 = Infinity, x1 = -Infinity, z1 = -Infinity; for (const [x, z] of poly) { x0 = Math.min(x0, x); x1 = Math.max(x1, x); z0 = Math.min(z0, z); z1 = Math.max(z1, z); } - const cx = (x0 + x1) / 2, cz = (z0 + z1) / 2; - const y = height(cx, cz); - const h = p.height ?? 1.7; - const geo = boxGeometry(cx, cz, x1 - x0, z1 - z0, y, y + h, 0, 0.8); - const m = new Mesh(geo, foliage(LAUB.liguster, 0.97)); - m.castShadow = true; - m.receiveShadow = true; - m.name = 'Ligusterhecke'; - group.add(m); + // Laengsachse des Streifens bestimmen und als Hecke daran entlang bauen + const along: Vec2[] = (x1 - x0) > (z1 - z0) + ? [[x0, (z0 + z1) / 2], [x1, (z0 + z1) / 2]] + : [[(x0 + x1) / 2, z0], [(x0 + x1) / 2, z1]]; + group.add(hedgeMesh(along, p.height ?? 1.7, p.width ?? 0.75, ligusterMat, height, r, 'Ligusterhecke')); } return group; diff --git a/src/scene/walls.ts b/src/scene/walls.ts new file mode 100644 index 0000000..42dc4bb --- /dev/null +++ b/src/scene/walls.ts @@ -0,0 +1,293 @@ +/** + * Mauern als gebaute Elemente, nicht als hochgezogene Flaechen. + * + * Der Plan nennt vier verschiedene Konstruktionen, die auch verschieden + * aussehen muessen: + * + * - **Travertinmauer / Sitzmauer** – Schichtmauerwerk aus einzelnen Bloecken + * mit Lagerfugen und einer ueberstehenden Abdeckplatte. + * - **Winkelelemente aus Beton** – Fertigteile von rund 1 m Breite, einzeln + * versetzt, mit sichtbaren Stossfugen und leicht geneigter Ansichtsflaeche. + * - **Betonmauer Nachbar** – Ortbeton in Schaltafelfeldern mit Ankerloechern + * und abgefaster Krone. + * - **Lamellenwand** – senkrechte Holzlamellen im Rhythmus des Plans. + * - **Holzscheiterwand** – Stahlrahmen, gefuellt mit gestapelten Scheitern. + */ +import { + BufferGeometry, Group, Mesh, MeshStandardMaterial, + type MeshStandardMaterialParameters, +} from 'three'; +import type { Vec2, Wall } from '../site'; +import { boxGeometry, mergeGeometries, wallGeometry } from './geometry'; +import * as tex from './textures'; + +function material(belag: tex.Belag, extra: MeshStandardMaterialParameters = {}) { + return new MeshStandardMaterial({ + map: belag.map, + normalMap: belag.normalMap ?? null, + normalScale: belag.normalScale, + roughness: belag.roughness, + metalness: 0, + ...extra, + }); +} + +function rng(seed: number) { + let a = seed >>> 0; + return () => { + a = (a + 0x9e3779b9) >>> 0; + let t = Math.imul(a ^ (a >>> 16), 0x21f0aaad); + t = Math.imul(t ^ (t >>> 15), 0x735a2d97); + return ((t ^ (t >>> 15)) >>> 0) / 4294967296; + }; +} + +/** Wertet ein Hoehenprofil (Stuetzelemente) an der Stelle t aus. */ +function profileAt(profile: number[] | undefined, t: number, fallback: number): number { + if (!profile || !profile.length) return fallback; + const f = t * (profile.length - 1); + const i = Math.max(0, Math.min(profile.length - 2, Math.floor(f))); + const u = f - i; + return profile[i] * (1 - u) + profile[i + 1] * u; +} + +interface Axis { + /** Gesamtlaenge des Polyzugs. */ + length: number; + /** Punkt, Richtung und Normale bei Bogenlaenge s. */ + at(s: number): { x: number; z: number; dx: number; dz: number; angle: number; t: number }; +} + +function axisOf(path: Vec2[]): Axis { + const segs = path.slice(1).map((p, i) => ({ + a: path[i], b: p, len: Math.hypot(p[0] - path[i][0], p[1] - path[i][1]), + })); + const length = segs.reduce((s, g) => s + g.len, 0); + return { + length, + at(s: number) { + let want = Math.max(0, Math.min(length, s)); + for (let i = 0; i < segs.length; i++) { + const g = segs[i]; + if (want <= g.len || i === segs.length - 1) { + const u = g.len > 0 ? Math.min(1, want / g.len) : 0; + const dx = (g.b[0] - g.a[0]) / (g.len || 1); + const dz = (g.b[1] - g.a[1]) / (g.len || 1); + return { + x: g.a[0] + (g.b[0] - g.a[0]) * u, + z: g.a[1] + (g.b[1] - g.a[1]) * u, + dx, dz, + angle: (Math.atan2(dz, dx) * 180) / Math.PI, + t: length > 0 ? s / length : 0, + }; + } + want -= g.len; + } + return { x: path[0][0], z: path[0][1], dx: 1, dz: 0, angle: 0, t: 0 }; + }, + }; +} + +/** + * Schichtmauerwerk: Lage fuer Lage aus einzelnen Bloecken, darueber eine + * ueberstehende Abdeckplatte. Fugen entstehen durch echte Zwischenraeume. + */ +function masonry( + axis: Axis, thickness: number, + top: (t: number) => number, base: (t: number) => number, + seed: number, +): { blocks: BufferGeometry; coping: BufferGeometry } { + const COURSE = 0.19; // Schichthoehe + const JOINT = 0.012; // Lagerfuge + const CAP = 0.06; // Abdeckplatte + const rnd = rng(seed); + const blocks: BufferGeometry[] = []; + + const topMid = top(0.5); + const baseMid = base(0.5); + const wallTop = topMid - CAP; + const courses = Math.max(1, Math.round((wallTop - baseMid) / COURSE)); + const courseH = (wallTop - baseMid) / courses; + + for (let c = 0; c < courses; c++) { + const y0 = baseMid + c * courseH; + const y1 = y0 + courseH - JOINT; + // Jede zweite Lage beginnt mit einem halben Stein - so versetzen sich die + // Stossfugen, ohne dass Luecken entstehen. + let s = 0; + let first = true; + while (s < axis.length - 0.02) { + let len = 0.42 + rnd() * 0.40; + if (first && c % 2 === 1) len *= 0.55; + first = false; + len = Math.min(len, axis.length - s); + // Reststueck lieber an den letzten Stein anhaengen als einen Splitter setzen + if (axis.length - (s + len) < 0.18) len = axis.length - s; + const p = axis.at(s + len / 2); + const d = thickness + (rnd() - 0.5) * 0.016; + blocks.push(boxGeometry(p.x, p.z, len - JOINT, d, y0, y1, p.angle, 1.6)); + s += len; + } + } + + // Abdeckplatte, beidseits 2 cm ueberstehend + const coping: BufferGeometry[] = []; + const capSegs = Math.max(2, Math.round(axis.length / 0.9)); + for (let i = 0; i < capSegs; i++) { + const s0 = (i / capSegs) * axis.length; + const len = axis.length / capSegs; + const p = axis.at(s0 + len / 2); + const y = top(p.t); + coping.push(boxGeometry(p.x, p.z, len - 0.006, thickness + 0.04, y - CAP, y, p.angle, 1.6)); + } + + return { blocks: mergeGeometries(blocks), coping: mergeGeometries(coping) }; +} + +/** + * Winkelelemente: Fertigteile von rund 1 m Breite. Sichtbar sind die + * Ansichtsflaeche mit den Stossfugen und die schmale Krone. + */ +function angleElements( + axis: Axis, thickness: number, + crest: (t: number) => number, foot: (t: number) => number, +): BufferGeometry { + const WIDTH = 1.0; + const JOINT = 0.015; + const parts: BufferGeometry[] = []; + const n = Math.max(1, Math.round(axis.length / WIDTH)); + const w = axis.length / n; + for (let i = 0; i < n; i++) { + const p = axis.at(i * w + w / 2); + const yTop = crest(p.t); + const yBottom = foot(p.t); + // Stiel: oben duenn, unten dicker - wie ein echtes L-Element + const stem = 3; + for (let k = 0; k < stem; k++) { + const a = yBottom + ((yTop - yBottom) * k) / stem; + const b = yBottom + ((yTop - yBottom) * (k + 1)) / stem; + const th = thickness * (1.55 - 0.4 * (k / stem)); + parts.push(boxGeometry(p.x, p.z, w - JOINT, th, a, b, p.angle, 2.0)); + } + // Fussplatte, meist verdeckt, aber am Fuss sichtbar + parts.push(boxGeometry( + p.x - p.dz * thickness * 1.1, p.z + p.dx * thickness * 1.1, + w - JOINT, thickness * 2.4, yBottom, yBottom + 0.14, p.angle, 2.0, + )); + } + return mergeGeometries(parts); +} + +/** Ortbetonwand in Schaltafelfeldern mit abgefaster Krone. */ +function concretePanels( + axis: Axis, thickness: number, + top: (t: number) => number, base: (t: number) => number, +): BufferGeometry { + const FIELD = 2.5; + const JOINT = 0.012; + const parts: BufferGeometry[] = []; + const n = Math.max(1, Math.round(axis.length / FIELD)); + const w = axis.length / n; + for (let i = 0; i < n; i++) { + const p = axis.at(i * w + w / 2); + const yTop = top(p.t); + const yBase = base(p.t); + parts.push(boxGeometry(p.x, p.z, w - JOINT, thickness, yBase, yTop - 0.03, p.angle, 2.0)); + // abgefaste Krone: schmaler Aufsatz + parts.push(boxGeometry(p.x, p.z, w - JOINT, thickness - 0.03, yTop - 0.03, yTop, p.angle, 2.0)); + } + return mergeGeometries(parts); +} + +export function buildWalls(walls: Wall[], height: (x: number, z: number) => number): Group { + const group = new Group(); + group.name = 'Mauern und Wände'; + + const travertin = tex.travertinMauer(); + const beton = tex.beton(); + const holz = tex.fassadeHolz(); + const scheiter = tex.holzscheiter(); + + const stahl = new MeshStandardMaterial({ color: 0x3f3a35, roughness: 0.5, metalness: 0.6 }); + + for (const w of walls) { + const axis = axisOf(w.path); + const top = (t: number) => { + if (w.crestProfile) return profileAt(w.crestProfile, t, 0); + if (w.top !== null) return w.top; + const p = axis.at(t * axis.length); + return height(p.x, p.z) + 0.4; + }; + const base = (t: number) => { + if (w.footProfile) return profileAt(w.footProfile, t, -1); + if (w.base !== null) return w.base; + const p = axis.at(t * axis.length); + return height(p.x, p.z) - 0.5; + }; + + const node = new Group(); + node.name = w.id; + node.userData.note = w.note; + + if (w.type === 'travertin') { + const { blocks, coping } = masonry(axis, w.t, top, base, w.id.length * 977 + 13); + const body = new Mesh(blocks, material(travertin)); + const cap = new Mesh(coping, material(travertin, { roughness: 0.6 })); + for (const m of [body, cap]) { m.castShadow = true; m.receiveShadow = true; node.add(m); } + } else if (w.retains) { + const m = new Mesh(angleElements(axis, w.t, top, base), material(beton)); + m.castShadow = true; m.receiveShadow = true; + node.add(m); + } else if (w.type === 'beton') { + const m = new Mesh(concretePanels(axis, w.t, top, base), material(beton)); + m.castShadow = true; m.receiveShadow = true; + node.add(m); + } else if (w.openSlats) { + // Lamellenwand: Rahmen aus Kanthoelzern, dazwischen senkrechte Bretter + const mat = material(holz, { roughness: 0.84 }); + const parts: BufferGeometry[] = []; + const n = Math.max(2, Math.round(axis.length / 0.9)); + for (let i = 0; i <= n; i++) { + const p = axis.at((i / n) * axis.length); + parts.push(boxGeometry(p.x, p.z, 0.10, w.t, base(p.t), top(p.t), p.angle, 1.2)); + } + const slats = new Mesh(mergeGeometries(parts), mat); + slats.castShadow = true; slats.receiveShadow = true; + node.add(slats); + const band = new Mesh( + wallGeometry(w.path, 0.10, (t) => top(t), (t) => base(t), { segments: 8, tile: holz.tile }), + mat, + ); + band.castShadow = true; band.receiveShadow = true; + node.add(band); + } else if (w.type === 'holzscheiter') { + // Stahlrahmen mit Scheiterfuellung + const y0 = base(0.5), y1 = top(0.5); + const fill = new Mesh( + boxGeometry( + (w.path[0][0] + w.path[1][0]) / 2, (w.path[0][1] + w.path[1][1]) / 2, + axis.length - 0.12, w.t - 0.08, y0 + 0.06, y1 - 0.06, axis.at(0).angle, scheiter.tile, + ), + material(scheiter, { roughness: 0.92 }), + ); + fill.castShadow = true; fill.receiveShadow = true; + node.add(fill); + const frameParts: BufferGeometry[] = []; + const cx = (w.path[0][0] + w.path[1][0]) / 2, cz = (w.path[0][1] + w.path[1][1]) / 2; + const ang = axis.at(0).angle; + frameParts.push(boxGeometry(cx, cz, axis.length, w.t, y0, y0 + 0.06, ang, 1)); + frameParts.push(boxGeometry(cx, cz, axis.length, w.t, y1 - 0.06, y1, ang, 1)); + for (const s of [-1, 1]) { + const p = axis.at(s < 0 ? 0.03 : axis.length - 0.03); + frameParts.push(boxGeometry(p.x, p.z, 0.06, w.t, y0, y1, ang, 1)); + } + const frame = new Mesh(mergeGeometries(frameParts), stahl); + frame.castShadow = true; + node.add(frame); + } + + group.add(node); + } + + return group; +} diff --git a/src/site.ts b/src/site.ts index 22a2f1d..8a06298 100644 --- a/src/site.ts +++ b/src/site.ts @@ -10,13 +10,24 @@ export type Vec2 = [number, number]; export type SurfaceType = - | 'travertin80' | 'travertin4060' | 'travertinstell' | 'keramik' + | 'travertin80' | 'dekorkies' | 'travertinstell' | 'keramik' | 'verbundstein' | 'tegula' | 'rasen' | 'schotterwiese' | 'beet' | 'spielsand'; export interface Surface { type: SurfaceType; area: number; polygon: Vec2[]; + /** Ebene a*x + b*z + c, sofern es sich um einen gebauten Belag handelt. */ + plane?: [number, number, number]; + note?: string; +} + +/** Einzeln verlegte Travertinplatte 40x60x3 cm im Dekorkies. */ +export interface Slab { + x: number; + z: number; + w: number; + d: number; } export interface Plant { @@ -138,6 +149,7 @@ export interface SiteData { }; terrain: Terrain; surfaces: Surface[]; + slabs: Slab[]; plants: Plant[]; trees: Tree[]; lamps: Lamp[]; diff --git a/tools/authoring.mjs b/tools/authoring.mjs index 2bc6eb0..d825dce 100644 --- a/tools/authoring.mjs +++ b/tools/authoring.mjs @@ -14,8 +14,8 @@ /** Farbe im Plan -> Belagsart. Reihenfolge egal, Zuordnung ueber Hex. */ export const SURFACE_BY_COLOR = { - '#ffffcc': 'travertin80', // Travertinplatten 80x80x3, Hauptsitzplatz West - '#fcffe7': 'travertin4060', // Travertinplatten 40x60x3 mit Dekorkies + Keramikterrasse Zollet + '#ffffcc': 'travertin80', // Travertinplatten: grosse Felder 80x80x3, kleine Rechtecke 40x60x3 + '#fcffe7': 'dekorkies', // Dekorkies-Bett; noerdlich der Grenze die Keramikterrasse Zollet '#f8ffcc': 'travertinstell',// Travertinstellplatten-Streifen '#eee8cc': 'travertinmauer',// Mauerkronen, Sitzmauern, schwebende Stufen '#e5ffe5': 'rasen', @@ -115,8 +115,13 @@ export const WALLS = [ }, { id: 'holzscheiterwand', type: 'holzscheiter', - note: 'Holzscheiterwand 150 x 200 cm hinter dem Flammengrill', - path: [[-5.75, 4.35], [-4.25, 4.35]], t: 0.45, top: 1.75, base: 0.26, + note: 'Holzscheiterwand 150 cm breit, 200 cm hoch, hinter dem Flammengrill', + path: [[-5.75, 4.35], [-4.25, 4.35]], t: 0.45, top: 2.26, base: 0.20, + }, + { + id: 'stufe-gartentor', type: 'travertin', + note: 'Blockstufen beim Gartentor an der Suedwestecke', + path: [[-21.05, 2.15], [-21.05, 3.75]], t: 0.80, top: -0.13, base: -0.75, }, { id: 'lamellenwand', type: 'lamellen', @@ -153,26 +158,19 @@ export const EXTRA_SURFACES = [ note: 'Gedeckter Sitzplatz 14.4 m2, Keramikplatten 60x60x2 cm', polygon: [[-13.93, -3.06], [-8.73, -3.06], [-8.73, 0.86], [-13.93, 0.86]], }, - { - type: 'travertin80', - note: 'Schwebende Stufe Travertin, obere Tritthoehe -0.17', - polygon: [[-14.74, -2.69], [-13.93, -2.69], [-13.93, 0.56], [-14.74, 0.56]], - }, - { - type: 'travertin80', - note: 'Schwebende Stufe Travertin, untere Tritthoehe -0.33', - polygon: [[-15.28, -3.08], [-14.48, -3.08], [-14.48, 0.12], [-15.28, 0.12]], - }, - { - type: 'travertin80', - note: 'Schwebende Stufen beim Gartentor an der Suedwestecke', - polygon: [[-21.45, 2.15], [-20.65, 2.15], [-20.66, 3.75], [-21.45, 3.75]], - }, { type: 'tegula', note: 'Feuerwehrzufahrt und Zugangsweg, Tegula-Pflastersteine grau', polygon: [[-25.60, -9.00], [-22.10, -9.00], [-22.10, 6.40], [-25.60, 6.40]], }, + { + // Die schwebenden Stufen im Plan: eine Zwischenebene zwischen dem + // gedeckten Sitzplatz (-0.02) und dem Hauptsitzplatz (rund -0.15). + // Die Hoehensprünge zeigen sich als Sichtkanten der Belaege. + type: 'travertin80', + note: 'Schwebende Stufen (Travertin) zwischen den beiden Sitzplaetzen', + polygon: [[-15.32, -3.12], [-13.87, -3.12], [-13.87, 0.60], [-15.32, 0.60]], + }, ]; /** @@ -237,8 +235,11 @@ export const BUILDING = { */ export const NEIGHBOUR_BUILDINGS = [ { + // Gleicher Baukoerper wie 9a, gegen Nordwesten versetzt und 1.70 m tiefer. + // Die Westkante endet bei x = -13.9, damit die Keramikterrasse des + // Nachbargartens (Plan: Schwerpunkt -17.1 / -8.6) frei bleibt. id: 'haus-9', name: 'Haus 9 - Sharon und Alan Zollet', - outline: [[-15.60, -13.60], [-1.20, -13.60], [-1.20, -6.87], [-15.60, -6.87]], + outline: [[-13.90, -14.70], [0.20, -14.70], [0.20, -6.87], [-13.90, -6.87]], floorLevel: -1.70, roofLevel: 4.45, }, ]; diff --git a/tools/build-site.mjs b/tools/build-site.mjs index 6b5d8a3..8992a04 100644 --- a/tools/build-site.mjs +++ b/tools/build-site.mjs @@ -87,12 +87,39 @@ function fitPlane(points) { /** Bauteile, die als Mauer modelliert werden - nicht als begehbare Flaeche. */ const NOT_A_SURFACE = new Set(['travertinmauer', 'winkelelement', 'spielhaus', 'gartenhaus', 'roboter', 'ligusterhecke']); +const bboxOf = (pts) => { + let x0 = Infinity, z0 = Infinity, x1 = -Infinity, z1 = -Infinity; + for (const [x, z] of pts) { x0 = Math.min(x0, x); x1 = Math.max(x1, x); z0 = Math.min(z0, z); z1 = Math.max(z1, z); } + return { x0, z0, x1, z1, w: x1 - x0, d: z1 - z0 }; +}; + +/** + * Einzelne Travertinplatten 40x60x3 cm. Der Plan zeichnet sie als Reihe + * loser Platten im Dekorkies - kein geschlossener Belag. Sie werden als + * erhabene Platten modelliert, nicht als Flaeche. + */ +const slabs = []; const surfaces = []; + for (const s of raw.shapes) { if (s.op !== 'f' || s.circle) continue; - const type = SURFACE_BY_COLOR[s.hex]; + let type = SURFACE_BY_COLOR[s.hex]; if (!type) continue; - if (s.area < 0.35) continue; + const b = bboxOf(s.pts); + + // Lose 40x60-Platten (Plan: 0.40 breit, 0.49 bis 0.80 lang) + if (s.hex === '#ffffcc' && s.area < 0.6 && Math.abs(b.w - 0.4) < 0.06 && b.d > 0.4 && b.d < 0.9) { + slabs.push({ + x: round((b.x0 + b.x1) / 2), z: round((b.z0 + b.z1) / 2), + w: round(b.w, 2), d: round(b.d, 2), + }); + continue; + } + // Der Plan verwendet denselben hellen Ton fuer Dekorkies und fuer die + // Keramikterrasse des Nachbarn; unterschieden wird ueber die Lage. + if (type === 'dekorkies' && (b.z0 + b.z1) / 2 < -6.6) type = 'keramik'; + + if (s.area < 0.3) continue; if (NOT_A_SURFACE.has(type)) continue; const poly = polygonArea(s.pts) < 0 ? [...s.pts].reverse() : s.pts; surfaces.push({ type, area: round(s.area, 2), polygon: poly.map((p) => [round(p[0]), round(p[1])]) }); @@ -162,26 +189,66 @@ const spots = [ // Die Kote 1.47 gehoert zum Spielhauspodest, nicht zum Gelaende. const terrainSpots = spots.filter((s) => s.zone && s.y < 1.2); -/** Flaechen, die als Ebene ausgebildet sind - dort wird das Raster begradigt. */ -const FLAT_TYPES = new Set(['travertin80', 'travertin4060', 'travertinstell', 'keramik', 'verbundstein', 'tegula', 'spielsand']); +/** + * Belaege sind gebaute Flaechen und muessen eben sein. Fuer jede solche Flaeche + * wird eine Ebene bestimmt - aus den Koten darin und knapp daneben, mit + * begrenztem Gefaelle. Die Ebene geht als `plane` mit ins Szenenmodell; das + * Gelaenderaster wird darauf gezwungen und in diesen Feldern nicht geglaettet. + */ +const FLAT_TYPES = new Set([ + 'travertin80', 'travertin4060', 'travertinstell', 'keramik', + 'verbundstein', 'tegula', 'spielsand', 'dekorkies', +]); +/** Abstand eines Punktes zum Polygonrand (positiv aussen wie innen). */ +function distToPolygon(x, z, poly) { + let best = Infinity; + for (let i = 0; i < poly.length; i++) { + const [ax, az] = poly[i], [bx, bz] = poly[(i + 1) % poly.length]; + const dx = bx - ax, dz = bz - az; + const l2 = dx * dx + dz * dz; + const t = l2 > 0 ? Math.max(0, Math.min(1, ((x - ax) * dx + (z - az) * dz) / l2)) : 0; + best = Math.min(best, Math.hypot(x - (ax + dx * t), z - (az + dz * t))); + } + return best; +} + const flatSurfaces = []; for (const s of surfaces) { - if (!FLAT_TYPES.has(s.type) || s.area < 1.0) continue; + if (!FLAT_TYPES.has(s.type) || s.area < 0.6) continue; const inside = terrainSpots.filter((sp) => pointInPolygon(sp.x, sp.z, s.polygon)); - if (!inside.length) continue; - let plane = inside.length >= 3 ? fitPlane(inside) : null; - // Fast kollineare Koten liefern wilde Ebenen. Nur uebernehmen, wenn das - // Gefaelle plausibel ist (< 10 %) und alle Koten getroffen werden. + // Nur Koten derselben Gelaendezone heranziehen - ueber eine Stuetzmauer + // hinweg gehoert die Nachbarkote nicht zu dieser Flaeche. + const [pcx, pcz] = centroid(s.polygon); + const zone = zoneOf(pcx, pcz); + const near = terrainSpots.filter( + (sp) => !inside.includes(sp) && sp.zone === zone && distToPolygon(sp.x, sp.z, s.polygon) < 1.1, + ); + const pool = [...inside, ...near]; + if (!pool.length) continue; + + const ys = pool.map((p) => p.y); + const mean = ys.reduce((a, b) => a + b, 0) / ys.length; + const px = pool.reduce((a, p) => a + p.x, 0) / pool.length; + const pz = pool.reduce((a, p) => a + p.z, 0) / pool.length; + + let plane = pool.length >= 3 ? fitPlane(pool) : null; + // Ein Belag hat hoechstens rund 5 % Gefaelle - genug fuer die Entwaesserung. Bei fast kollinearen Koten + // kippt die Ausgleichsebene weg; dann nur das Gefaelle begrenzen und die + // Ebene wieder am Schwerpunkt der Koten aufhaengen - nie am Polygonrand, + // sonst wandert sie mit dem gekappten Gefaelle davon. if (plane) { const slope = Math.hypot(plane.a, plane.b); - const maxDev = Math.max(...inside.map((p) => Math.abs(plane.a * p.x + plane.b * p.z + plane.c - p.y))); - if (slope > 0.10 || maxDev > 0.06) plane = null; + const k = slope > 0.05 ? 0.05 / slope : 1; + const a = plane.a * k, b = plane.b * k; + plane = { a, b, c: mean - (a * px + b * pz) }; + } else { + plane = { a: 0, b: 0, c: mean }; } - const ys = inside.map((p) => p.y); - const mean = ys.reduce((a, b) => a + b, 0) / ys.length; + + s.plane = [round(plane.a, 5), round(plane.b, 5), round(plane.c, 4)]; flatSurfaces.push({ - polygon: s.polygon, plane, mean, type: s.type, - min: Math.min(...ys) - 0.15, max: Math.max(...ys) + 0.15, + polygon: s.polygon, plane, type: s.type, + min: Math.min(...ys) - 0.12, max: Math.max(...ys) + 0.12, }); } @@ -206,6 +273,9 @@ function interpolate(x, z, zoneId) { return num / den; } +/** Merkt sich, welche Rasterfelder von einem Belag festgelegt sind. */ +const locked = new Uint8Array(nx * nz); + for (let j = 0; j < nz; j++) { const z = GRID.z0 + j * CELL; for (let i = 0; i < nx; i++) { @@ -225,8 +295,8 @@ for (let j = 0; j < nz; j++) { y = interpolate(x, z, zone); for (const f of flatSurfaces) { if (!pointInPolygon(x, z, f.polygon)) continue; - y = f.plane ? f.plane.a * x + f.plane.b * z + f.plane.c : f.mean; - y = Math.max(f.min, Math.min(f.max, y)); + y = Math.max(f.min, Math.min(f.max, f.plane.a * x + f.plane.b * z + f.plane.c)); + locked[j * nx + i] = 1; break; } } @@ -234,16 +304,16 @@ for (let j = 0; j < nz; j++) { } } -// Zwei Glaettungsrunden, damit weder die Kanten der Ebenen schneiden noch -// einzelne Koten als Beulen stehenbleiben. +// Glaetten - aber nur die freien Felder. Die Belaege bleiben exakt eben. let smoothed = Float32Array.from(height); -for (let pass = 0; pass < 2; pass++) { +for (let pass = 0; pass < 3; pass++) { const src = smoothed; const dst = Float32Array.from(src); for (let j = 1; j < nz - 1; j++) { for (let i = 1; i < nx - 1; i++) { const k = j * nx + i; - dst[k] = (src[k] * 4 + src[k - 1] + src[k + 1] + src[k - nx] + src[k + nx]) / 8; + if (locked[k]) continue; + dst[k] = (src[k] * 3 + src[k - 1] + src[k + 1] + src[k - nx] + src[k + nx]) / 7; } } smoothed = dst; @@ -323,6 +393,7 @@ const site = { spots: terrainSpots.map((s) => ({ x: round(s.x), z: round(s.z), y: s.y, zone: s.zone })), }, surfaces, + slabs, plants, trees, lamps, @@ -345,6 +416,7 @@ console.log(`Belagsflaechen ${surfaces.length}:`); for (const [t, a] of Object.entries(byType).sort((x, y) => y[1] - x[1])) { console.log(' ' + t.padEnd(16) + a.toFixed(1).padStart(7) + ' m2'); } +console.log(`Lose Travertinplatten 40x60: ${slabs.length}`); console.log(`Pflanzen ${plants.length}, Baeume ${trees.length}, Leuchten ${lamps.length}, Mauern ${walls.length}, Objekte ${PROPS.length}, Stelen ${STELEN.length}`); console.log(`Hoehenraster ${nx} x ${nz} (${CELL} m), Koten ${terrainSpots.length}`); const hs = Array.from(smoothed);