瀏覽代碼

Initial commit

Michael Zitzmann 5 年之前
當前提交
8c4c3c3858
共有 83 個文件被更改,包括 9524 次插入0 次删除
  1. 27 0
      .babelrc.js
  2. 26 0
      .editorconfig
  3. 15 0
      .eslintrc.json
  4. 4 0
      .gitignore
  5. 101 0
      README.md
  6. 0 0
      assets/blob-stream.min.js
  7. 二進制
      assets/fonts/Asap-Bold.ttf
  8. 二進制
      assets/fonts/Asap-Italic.ttf
  9. 二進制
      assets/fonts/Asap-Regular.ttf
  10. 二進制
      assets/fonts/AsapCondensed-Regular.ttf
  11. 二進制
      assets/fonts/fontello.eot
  12. 20 0
      assets/fonts/fontello.svg
  13. 二進制
      assets/fonts/fontello.ttf
  14. 二進制
      assets/fonts/fontello.woff
  15. 二進制
      assets/fonts/fontello.woff2
  16. 0 0
      assets/pdfkit.min.js
  17. 36 0
      assets/shared/css/main.css
  18. 二進制
      assets/shared/fonts/lora/Lora-Regular.ttf
  19. 44 0
      assets/shared/fonts/lora/SIL Open Font License.txt
  20. 二進制
      assets/shared/fonts/montserrat/Montserrat-SemiBold.otf
  21. 43 0
      assets/shared/fonts/montserrat/SIL Open Font License.txt
  22. 170 0
      aurelia_project/aurelia.json
  23. 4 0
      aurelia_project/environments/dev.js
  24. 4 0
      aurelia_project/environments/prod.js
  25. 4 0
      aurelia_project/environments/stage.js
  26. 44 0
      aurelia_project/generators/attribute.js
  27. 4 0
      aurelia_project/generators/attribute.json
  28. 41 0
      aurelia_project/generators/binding-behavior.js
  29. 4 0
      aurelia_project/generators/binding-behavior.json
  30. 48 0
      aurelia_project/generators/element.js
  31. 4 0
      aurelia_project/generators/element.json
  32. 73 0
      aurelia_project/generators/generator.js
  33. 4 0
      aurelia_project/generators/generator.json
  34. 41 0
      aurelia_project/generators/task.js
  35. 4 0
      aurelia_project/generators/task.json
  36. 41 0
      aurelia_project/generators/value-converter.js
  37. 4 0
      aurelia_project/generators/value-converter.json
  38. 24 0
      aurelia_project/tasks/build.js
  39. 11 0
      aurelia_project/tasks/build.json
  40. 15 0
      aurelia_project/tasks/process-css.js
  41. 10 0
      aurelia_project/tasks/process-markup.js
  42. 67 0
      aurelia_project/tasks/run.js
  43. 16 0
      aurelia_project/tasks/run.json
  44. 11 0
      aurelia_project/tasks/test.js
  45. 16 0
      aurelia_project/tasks/test.json
  46. 32 0
      aurelia_project/tasks/transpile.js
  47. 869 0
      data/data.json
  48. 512 0
      data/data.tsv
  49. 二進制
      data/original/RA_ExpFB_Renditedaten.xlsx
  50. 二進制
      favicon.ico
  51. 69 0
      index.html
  52. 7 0
      jsconfig.json
  53. 34 0
      karma.conf.js
  54. 95 0
      package.json
  55. 15 0
      sampling.html
  56. 3793 0
      scripts/_vendor-bundle.js
  57. 156 0
      scripts/configuration.js
  58. 二進制
      scripts/jsbundles.zip
  59. 36 0
      scripts/require.js
  60. 391 0
      scripts/text.js
  61. 121 0
      src/app.html
  62. 337 0
      src/app.js
  63. 29 0
      src/config_visual.js
  64. 266 0
      src/configuration.js
  65. 10 0
      src/d3custom.js
  66. 4 0
      src/environment.js
  67. 27 0
      src/main.js
  68. 3 0
      src/messages.js
  69. 356 0
      src/pdfExport.js
  70. 181 0
      src/resources/HardingCenter_Logo_de.svg
  71. 3 0
      src/resources/index.js
  72. 13 0
      src/sampler-textual.html
  73. 3 0
      src/sampler-visual.html
  74. 241 0
      src/sampler-visual.js
  75. 108 0
      src/sampler.js
  76. 118 0
      src/sampling-info.html
  77. 49 0
      src/sampling-info.json
  78. 116 0
      src/scss/partials/_colours.scss
  79. 154 0
      src/scss/partials/_form_elements.scss
  80. 311 0
      src/scss/styles.scss
  81. 75 0
      test/aurelia-karma.js
  82. 7 0
      test/unit/app.spec.js
  83. 3 0
      test/unit/setup.js

+ 27 - 0
.babelrc.js

@@ -0,0 +1,27 @@
+module.exports = api => {
+  api.cache.using(() => {
+    // cache based on the two env vars
+    return 'babel:' + process.env.BABEL_TARGET +
+      ' protractor:' + process.env.IN_PROTRACTOR;
+  });
+
+  return {
+    "plugins": [
+      ['@babel/plugin-proposal-decorators', { legacy: true }],
+      ['@babel/plugin-proposal-class-properties', { loose: true }]
+    ],
+    "presets": [
+      [
+        "@babel/preset-env", {
+          "targets": process.env.BABEL_TARGET === 'node' ? {
+            "node": process.env.IN_PROTRACTOR ? '6' : 'current'
+          } : {
+            "browsers": [ "last 2 versions" ]
+          },
+          "loose": true,
+          "modules": process.env.BABEL_TARGET === 'node' ? 'commonjs' : false
+        }
+      ]
+    ]
+  }
+}

+ 26 - 0
.editorconfig

@@ -0,0 +1,26 @@
+# editorconfig.org
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.{css,scss,sass,js,json}]
+indent_size = 4
+indent_style = space
+
+[*.{html,php,twig,tmpl}]
+indent_size = 4
+indent_style = space
+
+[*.{yml,yaml,ini}]
+indent_size = 4
+indent_style = space
+
+[*.{md,markdown,rst,txt}]
+indent_size = 4
+indent_style = space
+trim_trailing_whitespace = false

+ 15 - 0
.eslintrc.json

@@ -0,0 +1,15 @@
+{
+  "extends": "./node_modules/aurelia-tools/.eslintrc.json",
+  "parserOptions": {
+    "ecmaFeatures": {
+      "legacyDecorators": true
+    }
+  },
+  "rules": {
+      "camelcase": "off",
+      "indent": ["warn", 4],
+      "padded-blocks": "off",
+      "radix": "off",
+      "space-infix-ops": "warn"
+  }
+}

+ 4 - 0
.gitignore

@@ -0,0 +1,4 @@
+scripts/app-bundle.js
+scripts/vendor-bundle.js
+package-lock.json
+data/~$*.xlsx

+ 101 - 0
README.md

@@ -0,0 +1,101 @@
+# Erfahrungsfaktenbox – ohne Ziel
+
+Die Faktenbox soll den Verbrauchern ein Verständnis für die Eintrittswahrscheinlichkeit bestimmter Ereignisse geben und ihm Handlungsoptionen vermitteln.
+
+## Entwicklungsumgebung
+
+Diese WebApp wurde auf Basis von [aurelia] entwickelt. Für die Weiterentwicklung des Projekts werden [`nodejs`][nodejs] und `npm` benötigt. Die Abhängigkeiten werden wie üblich per `npm install` installiert.
+
+Für die Entwicklung steht der *Development Build Prozess* zur Verfügung, in dem Javascript Dateien transpiliert, und `css` aus den `scss` Dateien generiert werden. Zudem wird ein Entwicklungsserver gestartet, der bei Änderungen an Quelldateien nach einem erneuten Ausführen des Build Prozesses die Dateien neu lädt. Gestartet wird dieser Prozess mit folgendem Befehl:
+
+    au run --watch
+
+Ein *Production Build* kann folgendermaßen erstellt werden:
+
+    au build --env production
+
+Die so erzeugten Dateien sind unter `scripts` zu finden.
+
+## Verzeichnisstruktur
+
+```
+.
+├── README.md
+├── assets                                          // Resourcen zur Generierung von PDFs und für umgebendes HTML
+│   ├── blob-stream.min.js
+│   ├── fonts
+│   │   ├── Asap-Bold.ttf
+│   │   ├── Asap-Italic.ttf
+│   │   ├── Asap-Regular.ttf
+│   │   ├── AsapCondensed-Regular.ttf
+│   │   ├── fontello.eot
+│   │   ├── fontello.svg
+│   │   ├── fontello.ttf
+│   │   ├── fontello.woff
+│   │   └── fontello.woff2
+│   ├── pdfkit.min.js
+│   └── shared
+│       ├── css
+│       │   └── main.css
+│       └── fonts
+│           ├── lora
+│           │   ├── Lora-Regular.ttf
+│           │   └── SIL\ Open\ Font\ License.txt
+│           └── montserrat
+│               ├── Montserrat-SemiBold.otf
+│               └── SIL\ Open\ Font\ License.txt
+├── aurelia_project
+│   └── …                                           // Aurelia Projektkonfiguration
+├── data
+│   ├── data.json
+│   ├── data.tsv
+│   └── original
+│       └── RA_ExpFB_Renditedaten.xlsx
+├── favicon.ico
+├── index.html                                      // Umgebende HTML Datei mit Kontextinformationen
+├── jsconfig.json
+├── karma.conf.js
+├── package-lock.json
+├── package.json
+├── sampling.html                                   // HTML Datei der WebApp
+├── scripts                                         // Build Verzeichnis
+│   └── …
+└── src
+    ├── app.html
+    ├── app.js                                      // Controller der WebApp
+    ├── config_visual.js                            // Konfiguration der Visualisierung
+    ├── configuration.js                            // Konfiguration der Anwendungslogik
+    ├── d3custom.js                                 // Definition der verwendeten d3 Module
+    ├── environment.js                                      // aurelia Environment Konfiguration
+    ├── main.js                                             // aurelia Bootstrapper
+    ├── messages.js                                         // Definition von Messages zur Kommunikation zwischen Anwendungsteilen
+    ├── pdfExport.js                                // PDF Generator
+    ├── resources
+    │   ├── HardingCenter_Logo_de.svg
+    │   └── index.js
+    ├── sampler-textual.html                        // Textuelle Darstellung des zuletzt gezogenen Samples
+    ├── sampler-visual.html                         // Visuelle Repräsentation
+    ├── sampler-visual.js                           // Implementierung der d3 Visualisierung
+    ├── sampler.js                                  // Logik des Samplings
+    ├── sampling-info.html                          // Kontextinformation für HTML overlay
+    ├── sampling-info.json                          // Kontextinformation für PDF
+    └── scss                                        // Stylesheets der WebApp
+        ├── partials
+        │   ├── _colours.scss
+        │   └── _form_elements.scss
+        └── styles.scss
+```
+
+## Wie ändere ich Labels und Texte der WebApp? ##
+
+In der Datei `src/configuration.js` sind alle Labels und Texte definiert. Außerdem sind dort die Farben und zugrunde liegenden geometrischen Daten für das Layout der Icon Arrays definiert.
+
+## Entwicklungshistorie
+
+Dieses Projekt entstand aus einem Prototyp für eine Studie zum erfahrungsbasierten Sampling. Einige Konfigurationsoptionen sind Überbleibsel davon und wurden nur aufgrund von Zeitmangel nicht bereinigt.
+
+[Aurelia]: http://aurelia.io
+[D3.js]: https://d3js.org
+[modular scale]: http://www.modularscale.com
+[nodejs]: https://nodejs.org
+[whatwg-fetch]: https://github.com/github/fetch

File diff suppressed because it is too large
+ 0 - 0
assets/blob-stream.min.js


二進制
assets/fonts/Asap-Bold.ttf


二進制
assets/fonts/Asap-Italic.ttf


二進制
assets/fonts/Asap-Regular.ttf


二進制
assets/fonts/AsapCondensed-Regular.ttf


二進制
assets/fonts/fontello.eot


+ 20 - 0
assets/fonts/fontello.svg

@@ -0,0 +1,20 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2019 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="book" unicode="&#xe800;" d="M915 583q22-31 10-72l-154-505q-10-36-42-60t-69-25h-515q-43 0-83 30t-55 74q-14 37-1 71 0 2 1 15t3 20q0 5-2 12t-2 11q1 6 5 12t9 13 9 13q13 21 25 51t17 51q2 6 0 17t0 16q2 6 9 15t10 13q12 20 23 51t14 51q1 5-1 17t0 16q2 7 12 17t13 13q10 14 23 47t16 54q0 4-2 14t-1 15q1 4 5 10t10 13 10 11q4 7 9 17t8 20 9 20 11 18 15 13 20 6 26-3l0-1q21 5 28 5h425q41 0 64-32t10-72l-153-506q-20-66-40-85t-72-20h-485q-15 0-21-8-6-9-1-24 14-39 81-39h515q16 0 31 9t20 23l167 550q4 13 3 32 21-8 33-24z m-594-1q-2-7 1-12t11-6h339q8 0 15 6t9 12l12 36q2 7-1 12t-12 6h-339q-7 0-14-6t-9-12z m-46-143q-3-7 1-12t11-6h339q7 0 14 6t10 12l11 36q3 7-1 13t-11 5h-339q-7 0-14-5t-10-13z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="download" unicode="&#xe801;" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" />
+
+<glyph glyph-name="ccw" unicode="&#xe802;" d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="info-circled" unicode="&#xe803;" d="M571 82v89q0 8-5 13t-12 5h-54v286q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h53v-179h-53q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h250q7 0 12 5t5 13z m-71 500v89q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h107q8 0 13 5t5 13z m357-232q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+
+<glyph glyph-name="cancel-circled" unicode="&#xe804;" d="M641 224q0 14-10 25l-101 101 101 101q10 11 10 25 0 15-10 26l-51 50q-10 11-25 11-15 0-25-11l-101-101-101 101q-11 11-25 11-16 0-26-11l-50-50q-11-11-11-26 0-14 11-25l101-101-101-101q-11-11-11-25 0-15 11-26l50-50q10-11 26-11 14 0 25 11l101 101 101-101q10-11 25-11 15 0 25 11l51 50q10 11 10 26z m216 126q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
+</font>
+</defs>
+</svg>

二進制
assets/fonts/fontello.ttf


二進制
assets/fonts/fontello.woff


二進制
assets/fonts/fontello.woff2


File diff suppressed because it is too large
+ 0 - 0
assets/pdfkit.min.js


+ 36 - 0
assets/shared/css/main.css

@@ -0,0 +1,36 @@
+@font-face {
+    font-family: "Montserrat";
+    src: url("../fonts/montserrat/Montserrat-SemiBold.otf");
+}
+@font-face {
+    font-family: "Lora";
+    src: url("../fonts/lora/Lora-Regular.ttf");
+}
+body {
+    font-family: "Lora", "Helvetica Neue", Helvetica, Arial, sans-serif;
+    line-height: 1.5;
+}
+
+main {
+    margin: 0 auto;
+    max-width: 64em;
+}
+
+h1, h2 {
+    color: #262525;
+    font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif;
+    font-weight: 700;
+    margin: 35px 0 35px;
+}
+
+iframe {
+    display: block;
+    margin: 0 auto;
+}
+
+.logos {
+    align-items: center;
+    display: flex;
+    justify-content: space-between;
+    margin: 2rem 0;
+}

二進制
assets/shared/fonts/lora/Lora-Regular.ttf


+ 44 - 0
assets/shared/fonts/lora/SIL Open Font License.txt

@@ -0,0 +1,44 @@
+Copyright (c) 2011-2013, Cyreal (www.cyreal.org a@cyreal.org), with
+Reserved Font Name 'Lora'
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

二進制
assets/shared/fonts/montserrat/Montserrat-SemiBold.otf


+ 43 - 0
assets/shared/fonts/montserrat/SIL Open Font License.txt

@@ -0,0 +1,43 @@
+Copyright 2011 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

+ 170 - 0
aurelia_project/aurelia.json

@@ -0,0 +1,170 @@
+{
+  "name": "sampling",
+  "type": "project:application",
+  "platform": {
+    "id": "web",
+    "displayName": "Web",
+    "output": "scripts"
+  },
+  "transpiler": {
+    "id": "babel",
+    "displayName": "Babel",
+    "fileExtension": ".js",
+    "options": {
+      "plugins": [
+        "transform-es2015-modules-amd"
+      ]
+    },
+    "source": "src/**/*.js"
+  },
+  "markupProcessor": {
+    "id": "none",
+    "displayName": "None",
+    "fileExtension": ".html",
+    "source": "src/**/*.html"
+  },
+  "cssProcessor": {
+    "id": "sass",
+    "displayName": "Sass",
+    "fileExtension": ".scss",
+    "source": "src/**/*.scss"
+  },
+  "editor": {
+    "id": "vim",
+    "displayName": "Vim"
+  },
+  "unitTestRunner": {
+    "id": "karma",
+    "displayName": "Karma",
+    "source": "test/unit/**/*.js"
+  },
+  "paths": {
+    "root": "src",
+    "resources": "resources",
+    "elements": "resources/elements",
+    "attributes": "resources/attributes",
+    "valueConverters": "resources/value-converters",
+    "bindingBehaviors": "resources/binding-behaviors"
+  },
+  "testFramework": {
+    "id": "jasmine",
+    "displayName": "Jasmine"
+  },
+  "build": {
+    "targets": [
+      {
+        "id": "web",
+        "displayName": "Web",
+        "output": "scripts"
+      }
+    ],
+    "loader": {
+      "type": "require",
+      "configTarget": "vendor-bundle.js",
+      "includeBundleMetadataInConfig": "auto",
+      "plugins": [
+        {
+          "name": "text",
+          "extensions": [
+            ".html",
+            ".css"
+          ],
+          "stub": true
+        }
+      ]
+    },
+    "options": {
+      "minify": "stage & prod",
+      "sourcemaps": "dev & stage"
+    },
+    "bundles": [
+      {
+        "name": "app-bundle.js",
+        "source": [
+          "[**/*.js]",
+          "**/*.{css,html}"
+        ]
+      },
+      {
+        "name": "vendor-bundle.js",
+        "prepend": [
+          "node_modules/bluebird/js/browser/bluebird.core.js",
+          "scripts/require.js"
+        ],
+        "dependencies": [
+          "aurelia-binding",
+          "aurelia-bootstrapper",
+          "aurelia-dependency-injection",
+          "aurelia-event-aggregator",
+          "aurelia-framework",
+          "aurelia-history",
+          "aurelia-history-browser",
+          "aurelia-loader",
+          "aurelia-loader-default",
+          "aurelia-logging",
+          "aurelia-logging-console",
+          "aurelia-metadata",
+          "aurelia-pal",
+          "aurelia-pal-browser",
+          "aurelia-path",
+          "aurelia-polyfills",
+          "aurelia-route-recognizer",
+          "aurelia-router",
+          "aurelia-task-queue",
+          "aurelia-templating",
+          "aurelia-templating-binding",
+          {
+            "name": "text",
+            "path": "../scripts/text"
+          },
+          {
+            "name": "aurelia-templating-resources",
+            "path": "../node_modules/aurelia-templating-resources/dist/amd",
+            "main": "aurelia-templating-resources"
+          },
+          {
+            "name": "aurelia-templating-router",
+            "path": "../node_modules/aurelia-templating-router/dist/amd",
+            "main": "aurelia-templating-router"
+          },
+          {
+            "name": "aurelia-testing",
+            "path": "../node_modules/aurelia-testing/dist/amd",
+            "main": "aurelia-testing",
+            "env": "dev"
+          },
+            {
+              "name": "aurelia-validation",
+              "path": "../node_modules/aurelia-validation/dist/amd",
+              "main": "aurelia-validation"
+            },
+            {
+              "name": "aurelia-fetch-client",
+              "path": "../node_modules/aurelia-fetch-client/dist/amd",
+              "main": "aurelia-fetch-client"
+            },
+            {
+              "name": "fetch",
+              "path": "../node_modules/whatwg-fetch",
+              "main": "fetch"
+            },
+          {
+              "name": "d3-selection",
+              "path": "../node_modules/d3-selection/dist",
+              "main": "d3-selection"
+          },
+          {
+              "name": "d3-dsv",
+              "path": "../node_modules/d3-dsv/dist",
+              "main": "d3-dsv"
+          },
+          {
+              "name": "d3-fetch",
+              "path": "../node_modules/d3-fetch/dist",
+              "main": "d3-fetch"
+          }
+        ]
+      }
+    ]
+  }
+}

+ 4 - 0
aurelia_project/environments/dev.js

@@ -0,0 +1,4 @@
+export default {
+  debug: true,
+  testing: true
+};

+ 4 - 0
aurelia_project/environments/prod.js

@@ -0,0 +1,4 @@
+export default {
+  debug: false,
+  testing: false
+};

+ 4 - 0
aurelia_project/environments/stage.js

@@ -0,0 +1,4 @@
+export default {
+  debug: true,
+  testing: false
+};

+ 44 - 0
aurelia_project/generators/attribute.js

@@ -0,0 +1,44 @@
+import {inject} from 'aurelia-dependency-injection';
+import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
+
+@inject(Project, CLIOptions, UI)
+export default class AttributeGenerator {
+  constructor(project, options, ui) {
+    this.project = project;
+    this.options = options;
+    this.ui = ui;
+  }
+
+  execute() {
+    return this.ui
+      .ensureAnswer(this.options.args[0], 'What would you like to call the custom attribute?')
+      .then(name => {
+        let fileName = this.project.makeFileName(name);
+        let className = this.project.makeClassName(name);
+
+        this.project.attributes.add(
+          ProjectItem.text(`${fileName}.js`, this.generateSource(className))
+        );
+
+        return this.project.commitChanges()
+          .then(() => this.ui.log(`Created ${fileName}.`));
+      });
+  }
+
+  generateSource(className) {
+    return `import {inject} from 'aurelia-framework';
+
+@inject(Element)
+export class ${className}CustomAttribute {
+  constructor(element) {
+    this.element = element;
+  }
+
+  valueChanged(newValue, oldValue) {
+
+  }
+}
+
+`;
+  }
+}

+ 4 - 0
aurelia_project/generators/attribute.json

@@ -0,0 +1,4 @@
+{
+  "name": "attribute",
+  "description": "Creates a custom attribute class and places it in the project resources."
+}

+ 41 - 0
aurelia_project/generators/binding-behavior.js

@@ -0,0 +1,41 @@
+import {inject} from 'aurelia-dependency-injection';
+import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
+
+@inject(Project, CLIOptions, UI)
+export default class BindingBehaviorGenerator {
+  constructor(project, options, ui) {
+    this.project = project;
+    this.options = options;
+    this.ui = ui;
+  }
+
+  execute() {
+    return this.ui
+      .ensureAnswer(this.options.args[0], 'What would you like to call the binding behavior?')
+      .then(name => {
+        let fileName = this.project.makeFileName(name);
+        let className = this.project.makeClassName(name);
+
+        this.project.bindingBehaviors.add(
+          ProjectItem.text(`${fileName}.js`, this.generateSource(className))
+        );
+
+        return this.project.commitChanges()
+          .then(() => this.ui.log(`Created ${fileName}.`));
+      });
+  }
+
+  generateSource(className) {
+    return `export class ${className}BindingBehavior {
+  bind(binding, source) {
+
+  }
+
+  unbind(binding, source) {
+
+  }
+}
+
+`
+  }
+}

+ 4 - 0
aurelia_project/generators/binding-behavior.json

@@ -0,0 +1,4 @@
+{
+  "name": "binding-behavior",
+  "description": "Creates a binding behavior class and places it in the project resources."
+}

+ 48 - 0
aurelia_project/generators/element.js

@@ -0,0 +1,48 @@
+import {inject} from 'aurelia-dependency-injection';
+import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
+
+@inject(Project, CLIOptions, UI)
+export default class ElementGenerator {
+  constructor(project, options, ui) {
+    this.project = project;
+    this.options = options;
+    this.ui = ui;
+  }
+
+  execute() {
+    return this.ui
+      .ensureAnswer(this.options.args[0], 'What would you like to call the custom element?')
+      .then(name => {
+        let fileName = this.project.makeFileName(name);
+        let className = this.project.makeClassName(name);
+
+        this.project.elements.add(
+          ProjectItem.text(`${fileName}.js`, this.generateJSSource(className)),
+          ProjectItem.text(`${fileName}.html`, this.generateHTMLSource(className))
+        );
+
+        return this.project.commitChanges()
+          .then(() => this.ui.log(`Created ${fileName}.`));
+      });
+  }
+
+  generateJSSource(className) {
+    return `import {bindable} from 'aurelia-framework';
+
+export class ${className} {
+  @bindable value;
+
+  valueChanged(newValue, oldValue) {
+
+  }
+}
+
+`;
+  }
+
+  generateHTMLSource(className) {
+    return `<template>
+  <h1>\${value}</h1>
+</template>`;
+  }
+}

+ 4 - 0
aurelia_project/generators/element.json

@@ -0,0 +1,4 @@
+{
+  "name": "element",
+  "description": "Creates a custom element class and template, placing them in the project resources."
+}

+ 73 - 0
aurelia_project/generators/generator.js

@@ -0,0 +1,73 @@
+import {inject} from 'aurelia-dependency-injection';
+import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
+
+@inject(Project, CLIOptions, UI)
+export default class GeneratorGenerator {
+  constructor(project, options, ui) {
+    this.project = project;
+    this.options = options;
+    this.ui = ui;
+  }
+
+  execute() {
+    return this.ui
+      .ensureAnswer(this.options.args[0], 'What would you like to call the generator?')
+      .then(name => {
+        let fileName = this.project.makeFileName(name);
+        let className = this.project.makeClassName(name);
+
+        this.project.generators.add(
+          ProjectItem.text(`${fileName}.js`, this.generateSource(className))
+        );
+
+        return this.project.commitChanges()
+          .then(() => this.ui.log(`Created ${fileName}.`));
+      });
+  }
+
+  generateSource(className) {
+    return `import {inject} from 'aurelia-dependency-injection';
+import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
+
+@inject(Project, CLIOptions, UI)
+export default class ${className}Generator {
+  constructor(project, options, ui) {
+    this.project = project;
+    this.options = options;
+    this.ui = ui;
+  }
+
+  execute() {
+    return this.ui
+      .ensureAnswer(this.options.args[0], 'What would you like to call the new item?')
+      .then(name => {
+        let fileName = this.project.makeFileName(name);
+        let className = this.project.makeClassName(name);
+
+        this.project.elements.add(
+          ProjectItem.text(\`\${fileName}.js\`, this.generateSource(className))
+        );
+
+        return this.project.commitChanges()
+          .then(() => this.ui.log(\`Created \${fileName}.\`));
+      });
+  }
+
+  generateSource(className) {
+return \`import {bindable} from 'aurelia-framework';
+
+export class \${className} {
+  @bindable value;
+
+  valueChanged(newValue, oldValue) {
+
+  }
+}
+
+\`
+  }
+}
+
+`;
+  }
+}

+ 4 - 0
aurelia_project/generators/generator.json

@@ -0,0 +1,4 @@
+{
+  "name": "generator",
+  "description": "Creates a generator class and places it in the project generators folder."
+}

+ 41 - 0
aurelia_project/generators/task.js

@@ -0,0 +1,41 @@
+import {inject} from 'aurelia-dependency-injection';
+import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
+
+@inject(Project, CLIOptions, UI)
+export default class TaskGenerator {
+  constructor(project, options, ui) {
+    this.project = project;
+    this.options = options;
+    this.ui = ui;
+  }
+
+  execute() {
+    return this.ui
+      .ensureAnswer(this.options.args[0], 'What would you like to call the task?')
+      .then(name => {
+        let fileName = this.project.makeFileName(name);
+        let functionName = this.project.makeFunctionName(name);
+
+        this.project.tasks.add(
+          ProjectItem.text(`${fileName}.js`, this.generateSource(functionName))
+        );
+
+        return this.project.commitChanges()
+          .then(() => this.ui.log(`Created ${fileName}.`));
+      });
+  }
+
+  generateSource(functionName) {
+    return `import gulp from 'gulp';
+import changed from 'gulp-changed';
+import project from '../aurelia.json';
+
+export default function ${functionName}() {
+  return gulp.src(project.paths.???)
+    .pipe(changed(project.paths.output, {extension: '.???'}))
+    .pipe(gulp.dest(project.paths.output));
+}
+
+`;
+  }
+}

+ 4 - 0
aurelia_project/generators/task.json

@@ -0,0 +1,4 @@
+{
+  "name": "task",
+  "description": "Creates a task and places it in the project tasks folder."
+}

+ 41 - 0
aurelia_project/generators/value-converter.js

@@ -0,0 +1,41 @@
+import {inject} from 'aurelia-dependency-injection';
+import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
+
+@inject(Project, CLIOptions, UI)
+export default class ValueConverterGenerator {
+  constructor(project, options, ui) {
+    this.project = project;
+    this.options = options;
+    this.ui = ui;
+  }
+
+  execute() {
+    return this.ui
+      .ensureAnswer(this.options.args[0], 'What would you like to call the value converter?')
+      .then(name => {
+        let fileName = this.project.makeFileName(name);
+        let className = this.project.makeClassName(name);
+
+        this.project.valueConverters.add(
+          ProjectItem.text(`${fileName}.js`, this.generateSource(className))
+        );
+
+        return this.project.commitChanges()
+          .then(() => this.ui.log(`Created ${fileName}.`));
+      });
+  }
+
+  generateSource(className) {
+    return `export class ${className}ValueConverter {
+  toView(value) {
+
+  }
+
+  fromView(value) {
+
+  }
+}
+
+`;
+  }
+}

+ 4 - 0
aurelia_project/generators/value-converter.json

@@ -0,0 +1,4 @@
+{
+  "name": "value-converter",
+  "description": "Creates a value converter class and places it in the project resources."
+}

+ 24 - 0
aurelia_project/tasks/build.js

@@ -0,0 +1,24 @@
+import gulp from 'gulp';
+import transpile from './transpile';
+import processMarkup from './process-markup';
+import processCSS from './process-css';
+import {build} from 'aurelia-cli';
+import project from '../aurelia.json';
+
+export default gulp.series(
+  readProjectConfiguration,
+  gulp.parallel(
+    transpile,
+    processMarkup,
+    processCSS
+  ),
+  writeBundles
+);
+
+function readProjectConfiguration() {
+  return build.src(project);
+}
+
+function writeBundles() {
+  return build.dest();
+}

+ 11 - 0
aurelia_project/tasks/build.json

@@ -0,0 +1,11 @@
+{
+  "name": "build",
+  "description": "Builds and processes all application assets.",
+  "flags": [
+    {
+      "name": "env",
+      "description": "Sets the build environment.",
+      "type": "string"
+    }
+  ]
+}

+ 15 - 0
aurelia_project/tasks/process-css.js

@@ -0,0 +1,15 @@
+import gulp from 'gulp';
+// import changedInPlace from 'gulp-changed-in-place';
+import sourcemaps from 'gulp-sourcemaps';
+import sass from 'gulp-sass';
+import project from '../aurelia.json';
+import {build} from 'aurelia-cli';
+
+export default function processCSS() {
+  return gulp.src(project.cssProcessor.source)
+    .pipe(sourcemaps.init())
+    .pipe(sass().on('error', sass.logError))
+    .pipe(build.bundle());
+    // .pipe(changedInPlace({firstPass: true}))
+    // .pipe(build.bundle());
+}

+ 10 - 0
aurelia_project/tasks/process-markup.js

@@ -0,0 +1,10 @@
+import gulp from 'gulp';
+import changedInPlace from 'gulp-changed-in-place';
+import project from '../aurelia.json';
+import {build} from 'aurelia-cli';
+
+export default function processMarkup() {
+  return gulp.src(project.markupProcessor.source)
+    .pipe(changedInPlace({firstPass: true}))
+    .pipe(build.bundle());
+}

+ 67 - 0
aurelia_project/tasks/run.js

@@ -0,0 +1,67 @@
+import gulp from 'gulp';
+import browserSync from 'browser-sync';
+import historyApiFallback from 'connect-history-api-fallback/lib';
+import project from '../aurelia.json';
+import build from './build';
+import {CLIOptions} from 'aurelia-cli';
+
+function log(message) {
+  console.log(message); //eslint-disable-line no-console
+}
+
+function onChange(path) {
+  log(`File Changed: ${path}`);
+}
+
+function reload(done) {
+  browserSync.reload();
+  done();
+}
+
+let serve = gulp.series(
+  build,
+  done => {
+    browserSync({
+      online: false,
+      open: false,
+      port: 9000,
+      logLevel: 'silent',
+      server: {
+        baseDir: ['.'],
+        middleware: [historyApiFallback(), function(req, res, next) {
+          res.setHeader('Access-Control-Allow-Origin', '*');
+          next();
+        }]
+      }
+    }, function(err, bs) {
+      let urls = bs.options.get('urls').toJS();
+      log(`Application Available At: ${urls.local}`);
+      log(`BrowserSync Available At: ${urls.ui}`);
+      done();
+    });
+  }
+);
+
+let refresh = gulp.series(
+  build,
+  reload
+);
+
+let watch = function() {
+  gulp.watch(project.transpiler.source, refresh).on('change', onChange);
+  gulp.watch(project.markupProcessor.source, refresh).on('change', onChange);
+  gulp.watch(project.cssProcessor.source, refresh).on('change', onChange);
+};
+
+let run;
+
+if (CLIOptions.hasFlag('watch')) {
+  run = gulp.series(
+    serve,
+    watch
+  );
+} else {
+  run = serve;
+}
+
+export default run;

+ 16 - 0
aurelia_project/tasks/run.json

@@ -0,0 +1,16 @@
+{
+  "name": "run",
+  "description": "Builds the application and serves up the assets via a local web server, watching files for changes as you work.",
+  "flags": [
+    {
+      "name": "env",
+      "description": "Sets the build environment.",
+      "type": "string"
+    },
+    {
+      "name": "watch",
+      "description": "Watches source files for changes and refreshes the app automatically.",
+      "type": "boolean"
+    }
+  ]
+}

+ 11 - 0
aurelia_project/tasks/test.js

@@ -0,0 +1,11 @@
+import {Server as Karma} from 'karma';
+import {CLIOptions} from 'aurelia-cli';
+
+export function unit(done) {
+  new Karma({
+    configFile: __dirname + '/../../karma.conf.js',
+    singleRun: !CLIOptions.hasFlag('watch')
+  }, done).start();
+}
+
+export default unit;

+ 16 - 0
aurelia_project/tasks/test.json

@@ -0,0 +1,16 @@
+{
+  "name": "test",
+  "description": "Runs all unit tests and reports the results.",
+  "flags": [
+    {
+      "name": "env",
+      "description": "Sets the build environment.",
+      "type": "string"
+    },
+    {
+      "name": "watch",
+      "description": "Watches test files for changes and re-runs the tests automatically.",
+      "type": "boolean"
+    }
+  ]
+}

+ 32 - 0
aurelia_project/tasks/transpile.js

@@ -0,0 +1,32 @@
+import gulp from 'gulp';
+import changedInPlace from 'gulp-changed-in-place';
+import plumber from 'gulp-plumber';
+import babel from 'gulp-babel';
+import sourcemaps from 'gulp-sourcemaps';
+import notify from 'gulp-notify';
+import rename from 'gulp-rename';
+import project from '../aurelia.json';
+import {CLIOptions, build} from 'aurelia-cli';
+
+function configureEnvironment() {
+  let env = CLIOptions.getEnvironment();
+
+  return gulp.src(`aurelia_project/environments/${env}.js`)
+    .pipe(changedInPlace({firstPass: true}))
+    .pipe(rename('environment.js'))
+    .pipe(gulp.dest(project.paths.root));
+}
+
+function buildJavaScript() {
+  return gulp.src(project.transpiler.source)
+    .pipe(plumber({errorHandler: notify.onError('Error: <%= error.message %>')}))
+    .pipe(changedInPlace({firstPass: true}))
+    .pipe(sourcemaps.init())
+    .pipe(babel(project.transpiler.options))
+    .pipe(build.bundle());
+}
+
+export default gulp.series(
+  configureEnvironment,
+  buildJavaScript
+);

+ 869 - 0
data/data.json

@@ -0,0 +1,869 @@
+[
+    [
+        { "time": "Feb 75", "values": [1.002948224, 0.676352498] },
+        { "time": "März 75", "values": [1.038929688, 0.630194789] },
+        { "time": "Apr 75", "values": [1.071145157, 0.593139347] },
+        { "time": "Mai 75", "values": [1.569379353, 0.55957317] },
+        { "time": "Juni 75", "values": [1.755531102, 0.511114569] },
+        { "time": "Juli 75", "values": [1.328724071, 0.502468227] },
+        { "time": "Aug 75", "values": [1.753711738, 0.498950133] },
+        { "time": "Sep 75", "values": [2.021051767, 0.506301157] },
+        { "time": "Okt 75", "values": [2.1951025, 0.507835274] },
+        { "time": "Nov 75", "values": [1.923245837, 0.510976222] },
+        { "time": "Dez 75", "values": [2.360966767, 0.510930459] },
+        { "time": "Jan 76", "values": [2.304829399, 0.521081883] },
+        { "time": "Feb 76", "values": [2.213336038, 0.5285068] },
+        { "time": "März 76", "values": [2.427901619, 0.519443802] },
+        { "time": "Apr 76", "values": [2.903415485, 0.458635081] },
+        { "time": "Mai 76", "values": [2.527438025, 0.461513092] },
+        { "time": "Juni 76", "values": [2.416043124, 0.470183311] },
+        { "time": "Juli 76", "values": [2.274822125, 0.518772356] },
+        { "time": "Aug 76", "values": [2.863326712, 0.556631295] },
+        { "time": "Sep 76", "values": [2.541064498, 0.558783123] },
+        { "time": "Okt 76", "values": [2.942184886, 0.565867726] },
+        { "time": "Nov 76", "values": [2.864693597, 0.558994283] },
+        { "time": "Dez 76", "values": [2.790132716, 0.49908226] },
+        { "time": "Jan 77", "values": [2.243108686, 0.489219709] },
+        { "time": "Feb 77", "values": [2.129610285, 0.479061762] },
+        { "time": "März 77", "values": [2.169483161, 0.47638367] },
+        { "time": "Apr 77", "values": [1.943909452, 0.404944445] },
+        { "time": "Mai 77", "values": [1.976253516, 0.392273111] },
+        { "time": "Juni 77", "values": [2.305445525, 0.378206126] },
+        { "time": "Juli 77", "values": [2.484591771, 0.368349207] },
+        { "time": "Aug 77", "values": [2.476003798, 0.338783205] },
+        { "time": "Sep 77", "values": [2.338086595, 0.306358905] },
+        { "time": "Okt 77", "values": [1.39000416, 0.301795284] },
+        { "time": "Nov 77", "values": [0.983216866, 0.301535914] },
+        { "time": "Dez 77", "values": [0.974427579, 0.30149202] },
+        { "time": "Jan 78", "values": [0.805817183, 0.281954344] },
+        { "time": "Feb 78", "values": [1.139031855, 0.264019416] },
+        { "time": "März 78", "values": [1.108523068, 0.257305174] },
+        { "time": "Apr 78", "values": [1.16933521, 0.241667603] },
+        { "time": "Mai 78", "values": [1.175340216, 0.238676189] },
+        { "time": "Juni 78", "values": [1.237672409, 0.252114713] },
+        { "time": "Juli 78", "values": [1.242416848, 0.270524537] },
+        { "time": "Aug 78", "values": [1.166740457, 0.289400154] },
+        { "time": "Sep 78", "values": [1.288998767, 0.298051091] },
+        { "time": "Okt 78", "values": [1.440335525, 0.302938687] },
+        { "time": "Nov 78", "values": [1.429668468, 0.307635768] },
+        { "time": "Dez 78", "values": [1.553472134, 0.3123155] },
+        { "time": "Jan 79", "values": [1.517010138, 0.319981641] },
+        { "time": "Feb 79", "values": [1.546191033, 0.354718718] },
+        { "time": "März 79", "values": [1.666793996, 0.386170171] },
+        { "time": "Apr 79", "values": [1.77298194, 0.438765146] },
+        { "time": "Mai 79", "values": [2.006320673, 0.462093656] },
+        { "time": "Juni 79", "values": [2.207451029, 0.55078265] },
+        { "time": "Juli 79", "values": [2.275986916, 0.617377175] },
+        { "time": "Aug 79", "values": [2.340193299, 0.640567819] },
+        { "time": "Sep 79", "values": [2.281888843, 0.64574045] },
+        { "time": "Okt 79", "values": [2.216473483, 0.649542736] },
+        { "time": "Nov 79", "values": [2.434886851, 0.717484809] },
+        { "time": "Dez 79", "values": [2.995938892, 0.738361951] },
+        { "time": "Jan 80", "values": [3.062628123, 0.735042207] },
+        { "time": "Feb 80", "values": [2.929059051, 0.751824063] },
+        { "time": "März 80", "values": [3.696105374, 0.884804686] },
+        { "time": "Apr 80", "values": [3.120744057, 0.956225555] },
+        { "time": "Mai 80", "values": [3.053479428, 0.953730656] },
+        { "time": "Juni 80", "values": [3.020973741, 0.880064304] },
+        { "time": "Juli 80", "values": [2.982716524, 0.814525747] },
+        { "time": "Aug 80", "values": [2.414684454, 0.750997691] },
+        { "time": "Sep 80", "values": [1.731755635, 0.732992752] },
+        { "time": "Okt 80", "values": [2.049484576, 0.767501417] },
+        { "time": "Nov 80", "values": [2.033972869, 0.837842583] },
+        { "time": "Dez 80", "values": [2.012024965, 0.869715986] },
+        { "time": "Jan 81", "values": [2.150133987, 0.904513582] },
+        { "time": "Feb 81", "values": [2.44859671, 0.947533575] },
+        { "time": "März 81", "values": [2.290560864, 1.084489136] },
+        { "time": "Apr 81", "values": [2.332323101, 1.099131892] },
+        { "time": "Mai 81", "values": [2.648220255, 1.164997071] },
+        { "time": "Juni 81", "values": [2.184040132, 1.213330468] },
+        { "time": "Juli 81", "values": [2.125225189, 1.216322172] },
+        { "time": "Aug 81", "values": [2.27233629, 1.249498761] },
+        { "time": "Sep 81", "values": [2.413072353, 1.265977936] },
+        { "time": "Okt 81", "values": [2.383522079, 1.184713171] },
+        { "time": "Nov 81", "values": [2.223412071, 1.156915885] },
+        { "time": "Dez 81", "values": [2.36264399, 1.111144338] },
+        { "time": "Jan 82", "values": [2.528519589, 1.113397289] },
+        { "time": "Feb 82", "values": [2.604985141, 1.102018429] },
+        { "time": "März 82", "values": [2.443195593, 1.062815714] },
+        { "time": "Apr 82", "values": [2.476458541, 0.958660026] },
+        { "time": "Mai 82", "values": [2.666084875, 0.914241528] },
+        { "time": "Juni 82", "values": [2.63214477, 0.928742226] },
+        { "time": "Juli 82", "values": [2.299489712, 0.990013047] },
+        { "time": "Aug 82", "values": [2.164103902, 0.983398213] },
+        { "time": "Sep 82", "values": [1.850774261, 0.914305352] },
+        { "time": "Okt 82", "values": [1.957272258, 0.869654506] },
+        { "time": "Nov 82", "values": [1.99409171, 0.789643837] },
+        { "time": "Dez 82", "values": [1.765499972, 0.732954656] },
+        { "time": "Jan 83", "values": [1.849781846, 0.689110787] },
+        { "time": "Feb 83", "values": [1.837192153, 0.687913148] },
+        { "time": "März 83", "values": [1.471933114, 0.635149095] },
+        { "time": "Apr 83", "values": [1.206826013, 0.577264943] },
+        { "time": "Mai 83", "values": [1.36220469, 0.603955868] },
+        { "time": "Juni 83", "values": [1.328592023, 0.720922185] },
+        { "time": "Juli 83", "values": [1.373958353, 0.744536001] },
+        { "time": "Aug 83", "values": [1.782514788, 0.77888293] },
+        { "time": "Sep 83", "values": [1.661367174, 0.803951107] },
+        { "time": "Okt 83", "values": [1.640560309, 0.805146318] },
+        { "time": "Nov 83", "values": [1.559976956, 0.803321342] },
+        { "time": "Dez 83", "values": [1.831105614, 0.818647532] },
+        { "time": "Jan 84", "values": [1.588409786, 0.812312297] },
+        { "time": "Feb 84", "values": [1.613605859, 0.788372792] },
+        { "time": "März 84", "values": [1.655111244, 0.743902961] },
+        { "time": "Apr 84", "values": [1.76271255, 0.7476563] },
+        { "time": "Mai 84", "values": [1.713206313, 0.750065096] },
+        { "time": "Juni 84", "values": [1.473421796, 0.76066081] },
+        { "time": "Juli 84", "values": [1.814149447, 0.759617578] },
+        { "time": "Aug 84", "values": [1.721246175, 0.747069098] },
+        { "time": "Sep 84", "values": [1.263364559, 0.72084968] },
+        { "time": "Okt 84", "values": [1.290983735, 0.681208776] },
+        { "time": "Nov 84", "values": [1.242236836, 0.650163176] },
+        { "time": "Dez 84", "values": [1.251703574, 0.614106451] },
+        { "time": "Jan 85", "values": [1.040040739, 0.602493385] },
+        { "time": "Feb 85", "values": [1.099984515, 0.650158479] },
+        { "time": "März 85", "values": [0.845597822, 0.695934881] },
+        { "time": "Apr 85", "values": [0.867330084, 0.679041303] },
+        { "time": "Mai 85", "values": [0.747050128, 0.644378194] },
+        { "time": "Juni 85", "values": [0.601963296, 0.610767816] },
+        { "time": "Juli 85", "values": [0.818207338, 0.574736512] },
+        { "time": "Aug 85", "values": [0.662437691, 0.526676406] },
+        { "time": "Sep 85", "values": [0.505937523, 0.492733203] },
+        { "time": "Okt 85", "values": [0.280650453, 0.502583566] },
+        { "time": "Nov 85", "values": [0.376136762, 0.543195437] },
+        { "time": "Dez 85", "values": [0.174190332, 0.541222319] },
+        { "time": "Jan 86", "values": [0.320431278, 0.524290713] },
+        { "time": "Feb 86", "values": [0.352888388, 0.498545563] },
+        { "time": "März 86", "values": [0.220075651, 0.439500033] },
+        { "time": "Apr 86", "values": [0.161628034, 0.404568342] },
+        { "time": "Mai 86", "values": [0.331302211, 0.379242084] },
+        { "time": "Juni 86", "values": [0.369746097, 0.389361001] },
+        { "time": "Juli 86", "values": [0.394458911, 0.383517936] },
+        { "time": "Aug 86", "values": [0.214747522, 0.365546788] },
+        { "time": "Sep 86", "values": [0.39078122, 0.362005728] },
+        { "time": "Okt 86", "values": [0.373369227, 0.370306614] },
+        { "time": "Nov 86", "values": [0.430001266, 0.385746843] },
+        { "time": "Dez 86", "values": [0.472244806, 0.380406692] },
+        { "time": "Jan 87", "values": [0.830807716, 0.370615442] },
+        { "time": "Feb 87", "values": [1.129579836, 0.336000315] },
+        { "time": "März 87", "values": [1.155543267, 0.32555779] },
+        { "time": "Apr 87", "values": [1.158554056, 0.307938241] },
+        { "time": "Mai 87", "values": [1.269869654, 0.288194916] },
+        { "time": "Juni 87", "values": [1.24429294, 0.275208828] },
+        { "time": "Juli 87", "values": [1.488700785, 0.26994758] },
+        { "time": "Aug 87", "values": [1.111314366, 0.293059818] },
+        { "time": "Sep 87", "values": [1.34494448, 0.314337734] },
+        { "time": "Okt 87", "values": [1.805436937, 0.361711184] },
+        { "time": "Nov 87", "values": [2.545088818, 0.346988127] },
+        { "time": "Dez 87", "values": [2.90510361, 0.310381828] },
+        { "time": "Jan 88", "values": [3.406502717, 0.307792792] },
+        { "time": "Feb 88", "values": [3.024382708, 0.299985486] },
+        { "time": "März 88", "values": [3.460949157, 0.280425155] },
+        { "time": "Apr 88", "values": [3.506649751, 0.27720231] },
+        { "time": "Mai 88", "values": [3.807272808, 0.297489929] },
+        { "time": "Juni 88", "values": [3.835333525, 0.307145736] },
+        { "time": "Juli 88", "values": [3.630278012, 0.350144369] },
+        { "time": "Aug 88", "values": [2.808654642, 0.39736361] },
+        { "time": "Sep 88", "values": [2.201550365, 0.421976753] },
+        { "time": "Okt 88", "values": [2.259096746, 0.414332434] },
+        { "time": "Nov 88", "values": [2.609465959, 0.393755986] },
+        { "time": "Dez 88", "values": [2.440430393, 0.403343384] },
+        { "time": "Jan 89", "values": [2.617725597, 0.437964378] },
+        { "time": "Feb 89", "values": [2.503394607, 0.500410781] },
+        { "time": "März 89", "values": [2.384601937, 0.549357369] },
+        { "time": "Apr 89", "values": [2.62590846, 0.559536816] },
+        { "time": "Mai 89", "values": [2.29932241, 0.579918774] },
+        { "time": "Juni 89", "values": [2.344037438, 0.601829929] },
+        { "time": "Juli 89", "values": [1.96976752, 0.599851048] },
+        { "time": "Aug 89", "values": [1.98568976, 0.591097074] },
+        { "time": "Sep 89", "values": [1.962902287, 0.609908185] },
+        { "time": "Okt 89", "values": [2.449580019, 0.65139665] },
+        { "time": "Nov 89", "values": [2.43455724, 0.691708266] },
+        { "time": "Dez 89", "values": [2.58192044, 0.705101126] },
+        { "time": "Jan 90", "values": [2.451726425, 0.72601042] },
+        { "time": "Feb 90", "values": [2.898651495, 0.798509144] },
+        { "time": "März 90", "values": [2.566990963, 0.836972433] },
+        { "time": "Apr 90", "values": [2.795713507, 0.840820021] },
+        { "time": "Mai 90", "values": [2.567832032, 0.861712813] },
+        { "time": "Juni 90", "values": [2.37608525, 0.883859917] },
+        { "time": "Juli 90", "values": [2.44742773, 0.883852393] },
+        { "time": "Aug 90", "values": [3.135395395, 0.897868556] },
+        { "time": "Sep 90", "values": [3.800393307, 0.906851461] },
+        { "time": "Okt 90", "values": [3.653467361, 0.930388862] },
+        { "time": "Nov 90", "values": [3.136514875, 0.936069642] },
+        { "time": "Dez 90", "values": [3.306501556, 0.928361066] },
+        { "time": "Jan 91", "values": [3.503629508, 0.937744399] },
+        { "time": "Feb 91", "values": [2.744542415, 0.923761379] },
+        { "time": "März 91", "values": [2.547201884, 0.907875884] },
+        { "time": "Apr 91", "values": [2.615080529, 0.901033685] },
+        { "time": "Mai 91", "values": [2.310779541, 0.906643] },
+        { "time": "Juni 91", "values": [2.453300623, 0.905761794] },
+        { "time": "Juli 91", "values": [2.346892516, 0.931074567] },
+        { "time": "Aug 91", "values": [1.878686428, 0.956392831] },
+        { "time": "Sep 91", "values": [1.414880328, 0.963177578] },
+        { "time": "Okt 91", "values": [1.618059065, 0.971590886] },
+        { "time": "Nov 91", "values": [1.93212699, 0.984194524] },
+        { "time": "Dez 91", "values": [2.006345946, 0.973531162] },
+        { "time": "Jan 92", "values": [1.769023499, 0.951346854] },
+        { "time": "Feb 92", "values": [1.635752881, 0.923448938] },
+        { "time": "März 92", "values": [1.889956142, 0.919471418] },
+        { "time": "Apr 92", "values": [1.661197164, 0.929186238] },
+        { "time": "Mai 92", "values": [1.428457926, 0.933605451] },
+        { "time": "Juni 92", "values": [1.259263034, 0.937865335] },
+        { "time": "Juli 92", "values": [1.052715035, 0.949304132] },
+        { "time": "Aug 92", "values": [1.171202084, 0.971290834] },
+        { "time": "Sep 92", "values": [0.648156474, 0.960897329] },
+        { "time": "Okt 92", "values": [0.876027624, 0.857061214] },
+        { "time": "Nov 92", "values": [0.923726185, 0.810988906] },
+        { "time": "Dez 92", "values": [0.635443289, 0.780211687] },
+        { "time": "Jan 93", "values": [0.52293343, 0.748045065] },
+        { "time": "Feb 93", "values": [0.2915354, 0.71503546] },
+        { "time": "März 93", "values": [0.219700357, 0.637872455] },
+        { "time": "Apr 93", "values": [0.593111052, 0.627124165] },
+        { "time": "Mai 93", "values": [0.618640921, 0.624506852] },
+        { "time": "Juni 93", "values": [0.686814122, 0.624964789] },
+        { "time": "Juli 93", "values": [0.726216997, 0.622185796] },
+        { "time": "Aug 93", "values": [0.583637011, 0.583867012] },
+        { "time": "Sep 93", "values": [0.489725438, 0.540716355] },
+        { "time": "Okt 93", "values": [0.556686231, 0.527805117] },
+        { "time": "Nov 93", "values": [0.61681888, 0.499616272] },
+        { "time": "Dez 93", "values": [0.537826585, 0.461974411] },
+        { "time": "Jan 94", "values": [0.660376064, 0.449930215] },
+        { "time": "Feb 94", "values": [0.724355116, 0.456695965] },
+        { "time": "März 94", "values": [0.60788406, 0.474881676] },
+        { "time": "Apr 94", "values": [0.569640224, 0.481196791] },
+        { "time": "Mai 94", "values": [0.640699125, 0.500835245] },
+        { "time": "Juni 94", "values": [0.799767146, 0.554608561] },
+        { "time": "Juli 94", "values": [0.614638008, 0.576932978] },
+        { "time": "Aug 94", "values": [0.510400081, 0.588460435] },
+        { "time": "Sep 94", "values": [0.733750212, 0.649255299] },
+        { "time": "Okt 94", "values": [0.708126063, 0.696917815] },
+        { "time": "Nov 94", "values": [0.816472163, 0.728873912] },
+        { "time": "Dez 94", "values": [0.812272008, 0.723995578] },
+        { "time": "Jan 95", "values": [0.911671492, 0.761868559] },
+        { "time": "Feb 95", "values": [0.876144177, 0.751155368] },
+        { "time": "März 95", "values": [1.062918881, 0.726015407] },
+        { "time": "Apr 95", "values": [0.879081122, 0.64864776] },
+        { "time": "Mai 95", "values": [0.934262739, 0.607337831] },
+        { "time": "Juni 95", "values": [1.002895642, 0.56287231] },
+        { "time": "Juli 95", "values": [1.003363525, 0.563373486] },
+        { "time": "Aug 95", "values": [0.956486377, 0.557883661] },
+        { "time": "Sep 95", "values": [1.101689242, 0.522268271] },
+        { "time": "Okt 95", "values": [1.065548545, 0.506122769] },
+        { "time": "Nov 95", "values": [1.113112355, 0.486595094] },
+        { "time": "Dez 95", "values": [1.192570865, 0.438824732] },
+        { "time": "Jan 96", "values": [1.098097811, 0.410533659] },
+        { "time": "Feb 96", "values": [1.14533636, 0.396774987] },
+        { "time": "März 96", "values": [1.203722547, 0.422146169] },
+        { "time": "Apr 96", "values": [1.195345102, 0.42550431] },
+        { "time": "Mai 96", "values": [1.038759738, 0.421478516] },
+        { "time": "Juni 96", "values": [1.017560351, 0.429312163] },
+        { "time": "Juli 96", "values": [1.093736278, 0.442246421] },
+        { "time": "Aug 96", "values": [1.101056618, 0.437305205] },
+        { "time": "Sep 96", "values": [1.06293789, 0.426299895] },
+        { "time": "Okt 96", "values": [1.154993119, 0.399664637] },
+        { "time": "Nov 96", "values": [1.015926177, 0.393335718] },
+        { "time": "Dez 96", "values": [1.077882812, 0.378477526] },
+        { "time": "Jan 97", "values": [1.042326781, 0.385385133] },
+        { "time": "Feb 97", "values": [0.861178981, 0.35898633] },
+        { "time": "März 97", "values": [0.815916135, 0.355266378] },
+        { "time": "Apr 97", "values": [0.943692142, 0.35486907] },
+        { "time": "Mai 97", "values": [1.016216728, 0.355179708] },
+        { "time": "Juni 97", "values": [0.91043607, 0.351861826] },
+        { "time": "Juli 97", "values": [0.508390164, 0.349143228] },
+        { "time": "Aug 97", "values": [0.756467046, 0.358971168] },
+        { "time": "Sep 97", "values": [0.677481252, 0.355450149] },
+        { "time": "Okt 97", "values": [0.941532944, 0.36371729] },
+        { "time": "Nov 97", "values": [0.779281062, 0.385408729] },
+        { "time": "Dez 97", "values": [0.680067492, 0.385298422] },
+        { "time": "Jan 98", "values": [0.329346495, 0.361775547] },
+        { "time": "Feb 98", "values": [0.216779332, 0.352174627] },
+        { "time": "März 98", "values": [0.057913787, 0.336574322] },
+        { "time": "Apr 98", "values": [0.139864348, 0.337321168] },
+        { "time": "Mai 98", "values": [0.049234343, 0.334351388] },
+        { "time": "Juni 98", "values": [-0.137986741, 0.330225951] },
+        { "time": "Juli 98", "values": [-0.125552154, 0.324980719] },
+        { "time": "Aug 98", "values": [0.099887845, 0.310522097] },
+        { "time": "Sep 98", "values": [0.082643754, 0.276038566] },
+        { "time": "Okt 98", "values": [-0.164384322, 0.250621624] },
+        { "time": "Nov 98", "values": [-0.293276374, 0.252981069] },
+        { "time": "Dez 98", "values": [-0.264820869, 0.22896409] },
+        { "time": "Jan 99", "values": [-0.381058092, 0.207875376] },
+        { "time": "Feb 99", "values": [-0.445082671, 0.188736615] },
+        { "time": "März 99", "values": [-0.388880287, 0.192496759] },
+        { "time": "Apr 99", "values": [-0.337467296, 0.181322976] },
+        { "time": "Mai 99", "values": [-0.24469174, 0.172105462] },
+        { "time": "Juni 99", "values": [-0.327587315, 0.182834407] },
+        { "time": "Juli 99", "values": [-0.170648884, 0.23007898] },
+        { "time": "Aug 99", "values": [-0.183748756, 0.269255434] },
+        { "time": "Sep 99", "values": [-0.120768196, 0.286604433] },
+        { "time": "Okt 99", "values": [-0.243993652, 0.318098352] },
+        { "time": "Nov 99", "values": [-0.261791188, 0.331879456] },
+        { "time": "Dez 99", "values": [-0.365574539, 0.334779828] },
+        { "time": "Jan 00", "values": [-0.392076638, 0.370225459] },
+        { "time": "Feb 00", "values": [-0.478153202, 0.381570601] },
+        { "time": "März 00", "values": [-0.41198873, 0.383321565] },
+        { "time": "Apr 00", "values": [-0.393050435, 0.382067814] },
+        { "time": "Mai 00", "values": [-0.38381427, 0.412417262] },
+        { "time": "Juni 00", "values": [-0.352218172, 0.430303385] },
+        { "time": "Juli 00", "values": [-0.358455599, 0.446092607] },
+        { "time": "Aug 00", "values": [-0.397142826, 0.445982588] },
+        { "time": "Sep 00", "values": [-0.300731448, 0.456455704] },
+        { "time": "Okt 00", "values": [-0.286658765, 0.452530578] },
+        { "time": "Nov 00", "values": [-0.16636797, 0.45594102] },
+        { "time": "Dez 00", "values": [-0.139023953, 0.424449954] },
+        { "time": "Jan 01", "values": [-0.174488996, 0.378606478] },
+        { "time": "Feb 01", "values": [-0.04464422, 0.371208168] },
+        { "time": "März 01", "values": [-0.015097891, 0.357006726] },
+        { "time": "Apr 01", "values": [-0.018874337, 0.346851542] },
+        { "time": "Mai 01", "values": [-0.022455933, 0.357491539] },
+        { "time": "Juni 01", "values": [0.005065904, 0.358631491] },
+        { "time": "Juli 01", "values": [0.007901156, 0.350314444] },
+        { "time": "Aug 01", "values": [-0.103206332, 0.33109032] },
+        { "time": "Sep 01", "values": [0.05438113, 0.302212637] },
+        { "time": "Okt 01", "values": [0.123063292, 0.269982057] },
+        { "time": "Nov 01", "values": [-0.006080702, 0.227693076] },
+        { "time": "Dez 01", "values": [-0.075230457, 0.259005542] },
+        { "time": "Jan 02", "values": [0.04852673, 0.272350317] },
+        { "time": "Feb 02", "values": [0.139962242, 0.291582011] },
+        { "time": "März 02", "values": [0.063068173, 0.312338808] },
+        { "time": "Apr 02", "values": [0.117033448, 0.323708757] },
+        { "time": "Mai 02", "values": [0.078488805, 0.326228286] },
+        { "time": "Juni 02", "values": [0.244695405, 0.324188845] },
+        { "time": "Juli 02", "values": [0.607589789, 0.305115582] },
+        { "time": "Aug 02", "values": [0.648848362, 0.255640827] },
+        { "time": "Sep 02", "values": [1.375187126, 0.225893873] },
+        { "time": "Okt 02", "values": [1.070795039, 0.208374616] },
+        { "time": "Nov 02", "values": [0.99474711, 0.200806776] },
+        { "time": "Dez 02", "values": [1.402960559, 0.191668856] },
+        { "time": "Jan 03", "values": [1.605774745, 0.235342955] },
+        { "time": "Feb 03", "values": [1.815390755, 0.188305574] },
+        { "time": "März 03", "values": [1.988551305, 0.161232906] },
+        { "time": "Apr 03", "values": [1.462230829, 0.161100218] },
+        { "time": "Mai 03", "values": [1.567001587, 0.147538212] },
+        { "time": "Juni 03", "values": [1.251379324, 0.136970026] },
+        { "time": "Juli 03", "values": [1.139672084, 0.109420628] },
+        { "time": "Aug 03", "values": [1.092189372, 0.115629895] },
+        { "time": "Sep 03", "values": [1.403419755, 0.119723234] },
+        { "time": "Okt 03", "values": [1.237740038, 0.147688313] },
+        { "time": "Nov 03", "values": [1.274011025, 0.15849284] },
+        { "time": "Dez 03", "values": [1.176838844, 0.146164611] },
+        { "time": "Jan 04", "values": [1.066593892, 0.183312344] },
+        { "time": "Feb 04", "values": [1.18332837, 0.143148911] },
+        { "time": "März 04", "values": [1.250234493, 0.118828028] },
+        { "time": "Apr 04", "values": [1.186703943, 0.136043518] },
+        { "time": "Mai 04", "values": [1.317411259, 0.138278755] },
+        { "time": "Juni 04", "values": [1.205772226, 0.132171854] },
+        { "time": "Juli 04", "values": [1.193382499, 0.150379585] },
+        { "time": "Aug 04", "values": [1.281406746, 0.185304003] },
+        { "time": "Sep 04", "values": [1.209866776, 0.137743005] },
+        { "time": "Okt 04", "values": [1.134630886, 0.173474067] },
+        { "time": "Nov 04", "values": [1.197358877, 0.173618773] },
+        { "time": "Dez 04", "values": [1.09482097, 0.128426349] },
+        { "time": "Jan 05", "values": [1.306713173, 0.169032386] },
+        { "time": "Feb 05", "values": [1.410561873, 0.139926541] },
+        { "time": "März 05", "values": [1.541447103, 0.148882385] },
+        { "time": "Apr 05", "values": [1.522205365, 0.125109793] },
+        { "time": "Mai 05", "values": [1.346332096, 0.112506169] },
+        { "time": "Juni 05", "values": [1.17749202, 0.086365135] },
+        { "time": "Juli 05", "values": [1.107813167, 0.101083149] },
+        { "time": "Aug 05", "values": [0.918744054, 0.080088828] },
+        { "time": "Sep 05", "values": [0.713183244, 0.082375176] },
+        { "time": "Okt 05", "values": [0.999125123, 0.107940659] },
+        { "time": "Nov 05", "values": [0.986114876, 0.120656165] },
+        { "time": "Dez 05", "values": [0.789897868, 0.11109339] },
+        { "time": "Jan 06", "values": [0.535945303, 0.159288175] },
+        { "time": "Feb 06", "values": [0.44965407, 0.150154618] },
+        { "time": "März 06", "values": [0.471641021, 0.123625455] },
+        { "time": "Apr 06", "values": [0.479460553, 0.141523727] },
+        { "time": "Mai 06", "values": [0.608550445, 0.148353179] },
+        { "time": "Juni 06", "values": [0.511341796, 0.140564612] },
+        { "time": "Juli 06", "values": [0.628720499, 0.186423484] },
+        { "time": "Aug 06", "values": [0.614765193, 0.168620835] },
+        { "time": "Sep 06", "values": [0.553121576, 0.133765884] },
+        { "time": "Okt 06", "values": [0.502537091, 0.168028686] },
+        { "time": "Nov 06", "values": [0.487750018, 0.137513103] },
+        { "time": "Dez 06", "values": [0.540468089, 0.14770461] },
+        { "time": "Jan 07", "values": [0.505996295, 0.194344113] },
+        { "time": "Feb 07", "values": [0.568074104, 0.175119567] },
+        { "time": "März 07", "values": [0.585854454, 0.164830991] },
+        { "time": "Apr 07", "values": [0.489648566, 0.180770052] },
+        { "time": "Mai 07", "values": [0.412807376, 0.20257405] },
+        { "time": "Juni 07", "values": [0.350683253, 0.191095118] },
+        { "time": "Juli 07", "values": [0.410561577, 0.235743727] },
+        { "time": "Aug 07", "values": [0.388728959, 0.230719753] },
+        { "time": "Sep 07", "values": [0.446054856, 0.217060737] },
+        { "time": "Okt 07", "values": [0.464414096, 0.239038635] },
+        { "time": "Nov 07", "values": [0.472717626, 0.242294816] },
+        { "time": "Dez 07", "values": [0.418029087, 0.233168357] },
+        { "time": "Jan 08", "values": [0.746312899, 0.286259526] },
+        { "time": "Feb 08", "values": [0.664230941, 0.240399989] },
+        { "time": "März 08", "values": [0.673481314, 0.193006134] },
+        { "time": "Apr 08", "values": [0.63406491, 0.211721739] },
+        { "time": "Mai 08", "values": [0.597494311, 0.189382798] },
+        { "time": "Juni 08", "values": [0.740899347, 0.235967048] },
+        { "time": "Juli 08", "values": [0.803310134, 0.248708732] },
+        { "time": "Aug 08", "values": [0.747684633, 0.297054067] },
+        { "time": "Sep 08", "values": [0.918392736, 0.259927654] },
+        { "time": "Okt 08", "values": [1.10859756, 0.292260042] },
+        { "time": "Nov 08", "values": [1.21760641, 0.314747251] },
+        { "time": "Dez 08", "values": [1.005198684, 0.301252787] }
+    ],
+    [
+        { "time": "Feb 75", "values": [4.146682836, 2.870750651] },
+        { "time": "März 75", "values": [3.572134756, 2.676240645] },
+        { "time": "Apr 75", "values": [3.687548158, 2.492183278] },
+        { "time": "Mai 75", "values": [4.381832895, 2.330155881] },
+        { "time": "Juni 75", "values": [4.283873857, 2.09723708] },
+        { "time": "Juli 75", "values": [4.092145922, 2.04444191] },
+        { "time": "Aug 75", "values": [4.490567788, 2.024653162] },
+        { "time": "Sep 75", "values": [4.456878337, 2.035519587] },
+        { "time": "Okt 75", "values": [3.926420691, 2.044535786] },
+        { "time": "Nov 75", "values": [3.816338625, 2.058859219] },
+        { "time": "Dez 75", "values": [3.776341382, 2.053477215] },
+        { "time": "Jan 76", "values": [4.247767076, 2.070985981] },
+        { "time": "Feb 76", "values": [4.232179225, 2.059784118] },
+        { "time": "März 76", "values": [4.079344718, 2.002285682] },
+        { "time": "Apr 76", "values": [4.552966412, 1.739017958] },
+        { "time": "Mai 76", "values": [4.675704645, 1.742511007] },
+        { "time": "Juni 76", "values": [4.647137413, 1.767719317] },
+        { "time": "Juli 76", "values": [4.51629858, 1.928410437] },
+        { "time": "Aug 76", "values": [4.759617572, 2.052320278] },
+        { "time": "Sep 76", "values": [4.962531316, 2.061536894] },
+        { "time": "Okt 76", "values": [5.579436593, 2.066852443] },
+        { "time": "Nov 76", "values": [5.685977221, 2.030813455] },
+        { "time": "Dez 76", "values": [5.743659207, 1.791986543] },
+        { "time": "Jan 77", "values": [6.082161617, 1.728482267] },
+        { "time": "Feb 77", "values": [6.89247103, 1.682906124] },
+        { "time": "März 77", "values": [7.083622252, 1.665117773] },
+        { "time": "Apr 77", "values": [6.51958638, 1.401704262] },
+        { "time": "Mai 77", "values": [6.973025592, 1.34755965] },
+        { "time": "Juni 77", "values": [7.734768221, 1.285576622] },
+        { "time": "Juli 77", "values": [9.177587684, 1.23594305] },
+        { "time": "Aug 77", "values": [7.690891752, 1.127871153] },
+        { "time": "Sep 77", "values": [8.221810548, 1.009354758] },
+        { "time": "Okt 77", "values": [6.950360106, 0.998827179] },
+        { "time": "Nov 77", "values": [7.430157759, 0.998747494] },
+        { "time": "Dez 77", "values": [8.255272681, 0.995259113] },
+        { "time": "Jan 78", "values": [8.634422144, 0.932799573] },
+        { "time": "Feb 78", "values": [9.231566459, 0.868820262] },
+        { "time": "März 78", "values": [10.18410916, 0.842435933] },
+        { "time": "Apr 78", "values": [10.58756093, 0.79196348] },
+        { "time": "Mai 78", "values": [11.38461642, 0.787376056] },
+        { "time": "Juni 78", "values": [11.77124459, 0.821522474] },
+        { "time": "Juli 78", "values": [11.26178342, 0.874145524] },
+        { "time": "Aug 78", "values": [8.785253483, 0.939750292] },
+        { "time": "Sep 78", "values": [7.664135528, 0.977630737] },
+        { "time": "Okt 78", "values": [8.356734016, 0.998338029] },
+        { "time": "Nov 78", "values": [9.300876138, 1.020709485] },
+        { "time": "Dez 78", "values": [9.289814218, 1.036376309] },
+        { "time": "Jan 79", "values": [9.647981646, 1.080881408] },
+        { "time": "Feb 79", "values": [9.41542472, 1.202421224] },
+        { "time": "März 79", "values": [9.502070212, 1.302238307] },
+        { "time": "Apr 79", "values": [10.65479569, 1.48436969] },
+        { "time": "Mai 79", "values": [10.45043777, 1.571460459] },
+        { "time": "Juni 79", "values": [11.32846561, 1.882596531] },
+        { "time": "Juli 79", "values": [10.20014302, 2.095184216] },
+        { "time": "Aug 79", "values": [10.46739763, 2.182363416] },
+        { "time": "Sep 79", "values": [10.17767891, 2.2050054] },
+        { "time": "Okt 79", "values": [11.69399201, 2.227584915] },
+        { "time": "Nov 79", "values": [12.45300653, 2.491262415] },
+        { "time": "Dez 79", "values": [15.19673696, 2.575320346] },
+        { "time": "Jan 80", "values": [14.86376037, 2.573813319] },
+        { "time": "Feb 80", "values": [16.23525461, 2.617698935] },
+        { "time": "März 80", "values": [17.76229394, 3.168172924] },
+        { "time": "Apr 80", "values": [16.5534407, 3.47381347] },
+        { "time": "Mai 80", "values": [15.24329281, 3.459757955] },
+        { "time": "Juni 80", "values": [14.2940737, 3.111854903] },
+        { "time": "Juli 80", "values": [14.47050048, 2.812356913] },
+        { "time": "Aug 80", "values": [14.91904869, 2.567632158] },
+        { "time": "Sep 80", "values": [13.95301452, 2.508971356] },
+        { "time": "Okt 80", "values": [15.06600047, 2.673211852] },
+        { "time": "Nov 80", "values": [13.21471836, 2.936014069] },
+        { "time": "Dez 80", "values": [13.68671223, 3.041602] },
+        { "time": "Jan 81", "values": [14.96235113, 3.19525095] },
+        { "time": "Feb 81", "values": [13.518268, 3.37786152] },
+        { "time": "März 81", "values": [12.14671825, 3.97707664] },
+        { "time": "Apr 81", "values": [12.54986903, 4.019170086] },
+        { "time": "Mai 81", "values": [12.56794975, 4.339337895] },
+        { "time": "Juni 81", "values": [11.39807234, 4.581617306] },
+        { "time": "Juli 81", "values": [10.79388909, 4.638628679] },
+        { "time": "Aug 81", "values": [9.635036949, 4.793020151] },
+        { "time": "Sep 81", "values": [8.34144247, 4.846628293] },
+        { "time": "Okt 81", "values": [8.998052108, 4.427673521] },
+        { "time": "Nov 81", "values": [9.621920025, 4.310179483] },
+        { "time": "Dez 81", "values": [10.35821612, 4.069530489] },
+        { "time": "Jan 82", "values": [9.972393785, 4.079758658] },
+        { "time": "Feb 82", "values": [9.676241819, 4.050545877] },
+        { "time": "März 82", "values": [10.17069803, 3.883617445] },
+        { "time": "Apr 82", "values": [9.40119182, 3.429320851] },
+        { "time": "Mai 82", "values": [9.00776243, 3.210343256] },
+        { "time": "Juni 82", "values": [8.234072314, 3.2495156] },
+        { "time": "Juli 82", "values": [6.651566186, 3.524118493] },
+        { "time": "Aug 82", "values": [6.75413844, 3.502788142] },
+        { "time": "Sep 82", "values": [4.353378168, 3.176988208] },
+        { "time": "Okt 82", "values": [5.283236636, 2.975851391] },
+        { "time": "Nov 82", "values": [5.497294644, 2.660713891] },
+        { "time": "Dez 82", "values": [4.143933089, 2.417513944] },
+        { "time": "Jan 83", "values": [3.931094204, 2.280381366] },
+        { "time": "Feb 83", "values": [3.179029849, 2.304318214] },
+        { "time": "März 83", "values": [2.427382818, 2.11913584] },
+        { "time": "Apr 83", "values": [2.979020466, 1.908608921] },
+        { "time": "Mai 83", "values": [3.318307605, 2.008826554] },
+        { "time": "Juni 83", "values": [3.438132464, 2.4568238] },
+        { "time": "Juli 83", "values": [3.625502164, 2.550020831] },
+        { "time": "Aug 83", "values": [3.974131025, 2.681905157] },
+        { "time": "Sep 83", "values": [3.479507478, 2.763802547] },
+        { "time": "Okt 83", "values": [3.640054469, 2.765157419] },
+        { "time": "Nov 83", "values": [3.658289611, 2.765867241] },
+        { "time": "Dez 83", "values": [3.919927172, 2.819097174] },
+        { "time": "Jan 84", "values": [3.837312805, 2.810298317] },
+        { "time": "Feb 84", "values": [4.062961423, 2.734717418] },
+        { "time": "März 84", "values": [3.804873245, 2.55386493] },
+        { "time": "Apr 84", "values": [3.890476219, 2.563118615] },
+        { "time": "Mai 84", "values": [4.013647354, 2.579589937] },
+        { "time": "Juni 84", "values": [4.010899652, 2.620063818] },
+        { "time": "Juli 84", "values": [4.11674291, 2.631170588] },
+        { "time": "Aug 84", "values": [3.635200382, 2.595073999] },
+        { "time": "Sep 84", "values": [3.426027804, 2.478493083] },
+        { "time": "Okt 84", "values": [3.408456022, 2.293179052] },
+        { "time": "Nov 84", "values": [3.582199972, 2.177614771] },
+        { "time": "Dez 84", "values": [3.605932763, 2.035352133] },
+        { "time": "Jan 85", "values": [3.392558255, 2.004385458] },
+        { "time": "Feb 85", "values": [3.43350146, 2.183283733] },
+        { "time": "März 85", "values": [3.309638874, 2.345510953] },
+        { "time": "Apr 85", "values": [2.95802218, 2.279503351] },
+        { "time": "Mai 85", "values": [2.820661405, 2.142886178] },
+        { "time": "Juni 85", "values": [2.645304051, 2.026179944] },
+        { "time": "Juli 85", "values": [3.128222168, 1.903941651] },
+        { "time": "Aug 85", "values": [2.698481939, 1.736628457] },
+        { "time": "Sep 85", "values": [2.624387178, 1.609595169] },
+        { "time": "Okt 85", "values": [2.043206535, 1.628385233] },
+        { "time": "Nov 85", "values": [2.333203976, 1.770540731] },
+        { "time": "Dez 85", "values": [1.987938639, 1.766750467] },
+        { "time": "Jan 86", "values": [2.182975763, 1.716409363] },
+        { "time": "Feb 86", "values": [2.343941495, 1.644390734] },
+        { "time": "März 86", "values": [2.128083916, 1.451314634] },
+        { "time": "Apr 86", "values": [1.978194446, 1.329078806] },
+        { "time": "Mai 86", "values": [2.12654327, 1.249713467] },
+        { "time": "Juni 86", "values": [2.180075454, 1.286894225] },
+        { "time": "Juli 86", "values": [2.374661562, 1.280717297] },
+        { "time": "Aug 86", "values": [1.9771678, 1.231004737] },
+        { "time": "Sep 86", "values": [2.315408664, 1.218333884] },
+        { "time": "Okt 86", "values": [2.436071777, 1.249930332] },
+        { "time": "Nov 86", "values": [2.323222342, 1.299880439] },
+        { "time": "Dez 86", "values": [2.534959249, 1.284510512] },
+        { "time": "Jan 87", "values": [3.272496303, 1.277459586] },
+        { "time": "Feb 87", "values": [3.498318081, 1.155156154] },
+        { "time": "März 87", "values": [3.442870811, 1.120887478] },
+        { "time": "Apr 87", "values": [3.774876095, 1.044851526] },
+        { "time": "Mai 87", "values": [4.197249187, 0.988464522] },
+        { "time": "Juni 87", "values": [3.868966502, 0.953987429] },
+        { "time": "Juli 87", "values": [3.250277507, 0.965616831] },
+        { "time": "Aug 87", "values": [3.215740942, 1.045440172] },
+        { "time": "Sep 87", "values": [3.47100182, 1.103893352] },
+        { "time": "Okt 87", "values": [5.174139867, 1.246842277] },
+        { "time": "Nov 87", "values": [6.141312438, 1.18835942] },
+        { "time": "Dez 87", "values": [6.452812532, 1.068704522] },
+        { "time": "Jan 88", "values": [5.720648848, 1.055915293] },
+        { "time": "Feb 88", "values": [4.646463673, 1.025330185] },
+        { "time": "März 88", "values": [4.53365398, 0.954424237] },
+        { "time": "Apr 88", "values": [4.981151393, 0.944610274] },
+        { "time": "Mai 88", "values": [4.940633241, 0.995518351] },
+        { "time": "Juni 88", "values": [4.013293115, 1.029662357] },
+        { "time": "Juli 88", "values": [3.860160297, 1.176051881] },
+        { "time": "Aug 88", "values": [3.88915457, 1.330702946] },
+        { "time": "Sep 88", "values": [3.031447527, 1.400373771] },
+        { "time": "Okt 88", "values": [2.217014204, 1.367547043] },
+        { "time": "Nov 88", "values": [2.05969477, 1.298877802] },
+        { "time": "Dez 88", "values": [2.018366134, 1.32662016] },
+        { "time": "Jan 89", "values": [1.722677568, 1.419334387] },
+        { "time": "Feb 89", "values": [1.399006515, 1.617022695] },
+        { "time": "März 89", "values": [1.507676274, 1.794861964] },
+        { "time": "Apr 89", "values": [1.902681621, 1.836296926] },
+        { "time": "Mai 89", "values": [1.943417425, 1.901947266] },
+        { "time": "Juni 89", "values": [1.68970029, 1.986143669] },
+        { "time": "Juli 89", "values": [1.856437232, 2.004644988] },
+        { "time": "Aug 89", "values": [1.839525233, 1.966069302] },
+        { "time": "Sep 89", "values": [2.027079593, 2.021124713] },
+        { "time": "Okt 89", "values": [2.104598665, 2.160662803] },
+        { "time": "Nov 89", "values": [2.003173881, 2.329417395] },
+        { "time": "Dez 89", "values": [1.755380767, 2.377987333] },
+        { "time": "Jan 90", "values": [1.52356039, 2.454704213] },
+        { "time": "Feb 90", "values": [1.541277207, 2.727954679] },
+        { "time": "März 90", "values": [1.566881231, 2.879577621] },
+        { "time": "Apr 90", "values": [1.833086163, 2.894159584] },
+        { "time": "Mai 90", "values": [1.681342723, 2.960071017] },
+        { "time": "Juni 90", "values": [1.620142328, 3.083266654] },
+        { "time": "Juli 90", "values": [1.647867905, 3.106071273] },
+        { "time": "Aug 90", "values": [2.081709813, 3.141245964] },
+        { "time": "Sep 90", "values": [3.114448375, 3.178145347] },
+        { "time": "Okt 90", "values": [3.060469095, 3.246813566] },
+        { "time": "Nov 90", "values": [3.098734931, 3.283162018] },
+        { "time": "Dez 90", "values": [3.394263063, 3.28340985] },
+        { "time": "Jan 91", "values": [3.445831579, 3.278640078] },
+        { "time": "Feb 91", "values": [3.177952365, 3.21790244] },
+        { "time": "März 91", "values": [3.077671258, 3.140985846] },
+        { "time": "Apr 91", "values": [3.133159672, 3.13232001] },
+        { "time": "Mai 91", "values": [2.743812795, 3.150967091] },
+        { "time": "Juni 91", "values": [3.013474406, 3.14514924] },
+        { "time": "Juli 91", "values": [2.895752403, 3.204424241] },
+        { "time": "Aug 91", "values": [1.983690295, 3.304127069] },
+        { "time": "Sep 91", "values": [1.895578858, 3.332277948] },
+        { "time": "Okt 91", "values": [2.354806955, 3.36004094] },
+        { "time": "Nov 91", "values": [2.369305018, 3.378514573] },
+        { "time": "Dez 91", "values": [2.217741375, 3.375698177] },
+        { "time": "Jan 92", "values": [2.317076352, 3.262672416] },
+        { "time": "Feb 92", "values": [2.419710383, 3.118978046] },
+        { "time": "März 92", "values": [2.530611331, 3.098064363] },
+        { "time": "Apr 92", "values": [2.392623809, 3.12146515] },
+        { "time": "Mai 92", "values": [1.973343625, 3.135750632] },
+        { "time": "Juni 92", "values": [2.165702039, 3.149566287] },
+        { "time": "Juli 92", "values": [2.697164333, 3.183587213] },
+        { "time": "Aug 92", "values": [3.02059135, 3.27102046] },
+        { "time": "Sep 92", "values": [3.413420077, 3.230995687] },
+        { "time": "Okt 92", "values": [3.36040026, 2.782723629] },
+        { "time": "Nov 92", "values": [3.298512766, 2.562791581] },
+        { "time": "Dez 92", "values": [3.425945763, 2.478016166] },
+        { "time": "Jan 93", "values": [3.464921095, 2.326485074] },
+        { "time": "Feb 93", "values": [3.119501919, 2.188488196] },
+        { "time": "März 93", "values": [3.149199318, 1.896089149] },
+        { "time": "Apr 93", "values": [3.38929912, 1.846093914] },
+        { "time": "Mai 93", "values": [3.643626002, 1.817504413] },
+        { "time": "Juni 93", "values": [3.235939693, 1.824790846] },
+        { "time": "Juli 93", "values": [3.117267659, 1.805531026] },
+        { "time": "Aug 93", "values": [2.693921624, 1.670058262] },
+        { "time": "Sep 93", "values": [3.008507184, 1.523772484] },
+        { "time": "Okt 93", "values": [2.891115816, 1.482581665] },
+        { "time": "Nov 93", "values": [3.099324335, 1.369376253] },
+        { "time": "Dez 93", "values": [2.738834128, 1.267766991] },
+        { "time": "Jan 94", "values": [2.814667279, 1.219018591] },
+        { "time": "Feb 94", "values": [3.179858081, 1.224326775] },
+        { "time": "März 94", "values": [3.023278395, 1.291601241] },
+        { "time": "Apr 94", "values": [2.818959984, 1.327004408] },
+        { "time": "Mai 94", "values": [3.224817759, 1.392182362] },
+        { "time": "Juni 94", "values": [3.40527704, 1.568300982] },
+        { "time": "Juli 94", "values": [2.932847871, 1.641372898] },
+        { "time": "Aug 94", "values": [2.831084528, 1.682540982] },
+        { "time": "Sep 94", "values": [3.255660366, 1.897037281] },
+        { "time": "Okt 94", "values": [3.049775318, 2.080981039] },
+        { "time": "Nov 94", "values": [3.425624544, 2.184532235] },
+        { "time": "Dez 94", "values": [3.210146597, 2.207148727] },
+        { "time": "Jan 95", "values": [3.866051645, 2.314694392] },
+        { "time": "Feb 95", "values": [3.994907708, 2.269930991] },
+        { "time": "März 95", "values": [4.788663056, 2.189794821] },
+        { "time": "Apr 95", "values": [4.24373471, 1.894204862] },
+        { "time": "Mai 95", "values": [4.018964619, 1.752418562] },
+        { "time": "Juni 95", "values": [3.819449627, 1.602178698] },
+        { "time": "Juli 95", "values": [3.665908004, 1.609262223] },
+        { "time": "Aug 95", "values": [3.151029606, 1.596699602] },
+        { "time": "Sep 95", "values": [2.984666704, 1.487535757] },
+        { "time": "Okt 95", "values": [3.568337932, 1.440845295] },
+        { "time": "Nov 95", "values": [3.640960188, 1.360022187] },
+        { "time": "Dez 95", "values": [3.337712119, 1.225014936] },
+        { "time": "Jan 96", "values": [2.553497081, 1.125954197] },
+        { "time": "Feb 96", "values": [2.429515827, 1.083494093] },
+        { "time": "März 96", "values": [2.589270003, 1.152419048] },
+        { "time": "Apr 96", "values": [2.588725434, 1.182126744] },
+        { "time": "Mai 96", "values": [2.617838083, 1.158588472] },
+        { "time": "Juni 96", "values": [2.362298748, 1.188430678] },
+        { "time": "Juli 96", "values": [2.761508681, 1.235709083] },
+        { "time": "Aug 96", "values": [2.744620076, 1.214841904] },
+        { "time": "Sep 96", "values": [2.540356932, 1.17249347] },
+        { "time": "Okt 96", "values": [2.584471531, 1.089748691] },
+        { "time": "Nov 96", "values": [2.314501798, 1.067937756] },
+        { "time": "Dez 96", "values": [2.543138635, 1.029473894] },
+        { "time": "Jan 97", "values": [2.39001168, 1.036699866] },
+        { "time": "Feb 97", "values": [2.213626706, 0.963597906] },
+        { "time": "März 97", "values": [2.171160455, 0.956584831] },
+        { "time": "Apr 97", "values": [2.192812094, 0.977672883] },
+        { "time": "Mai 97", "values": [2.13883248, 0.972478875] },
+        { "time": "Juni 97", "values": [1.838709759, 0.959242514] },
+        { "time": "Juli 97", "values": [1.319649883, 0.944041157] },
+        { "time": "Aug 97", "values": [1.674719923, 0.968810294] },
+        { "time": "Sep 97", "values": [1.659913694, 0.975615708] },
+        { "time": "Okt 97", "values": [2.130360281, 1.009704076] },
+        { "time": "Nov 97", "values": [1.878279439, 1.086913242] },
+        { "time": "Dez 97", "values": [1.613515032, 1.09429556] },
+        { "time": "Jan 98", "values": [1.554627047, 1.018052491] },
+        { "time": "Feb 98", "values": [1.222146594, 0.993203625] },
+        { "time": "März 98", "values": [0.946026894, 0.960161047] },
+        { "time": "Apr 98", "values": [1.043141667, 0.954340524] },
+        { "time": "Mai 98", "values": [0.834845004, 0.956424314] },
+        { "time": "Juni 98", "values": [0.659372101, 0.948880905] },
+        { "time": "Juli 98", "values": [0.75417568, 0.941551549] },
+        { "time": "Aug 98", "values": [1.126532572, 0.892953539] },
+        { "time": "Sep 98", "values": [1.322271802, 0.794297833] },
+        { "time": "Okt 98", "values": [1.004944533, 0.713225386] },
+        { "time": "Nov 98", "values": [0.798076088, 0.695967676] },
+        { "time": "Dez 98", "values": [0.667523761, 0.637536038] }
+    ],
+    [
+        { "time": "Feb 75", "values": [10.36875803, 8.19803934] },
+        { "time": "März 75", "values": [10.23210687, 7.551112837] },
+        { "time": "Apr 75", "values": [9.431728781, 6.944158509] },
+        { "time": "Mai 75", "values": [11.21483749, 6.416099351] },
+        { "time": "Juni 75", "values": [11.4241324, 5.695313024] },
+        { "time": "Juli 75", "values": [11.01147526, 5.539700192] },
+        { "time": "Aug 75", "values": [11.60339112, 5.486707159] },
+        { "time": "Sep 75", "values": [12.46262716, 5.492955322] },
+        { "time": "Okt 75", "values": [11.03130758, 5.497142893] },
+        { "time": "Nov 75", "values": [11.02342837, 5.536939847] },
+        { "time": "Dez 75", "values": [11.40710143, 5.522550487] },
+        { "time": "Jan 76", "values": [11.90932612, 5.570194443] },
+        { "time": "Feb 76", "values": [12.15474597, 5.533199543] },
+        { "time": "März 76", "values": [12.14611814, 5.364223465] },
+        { "time": "Apr 76", "values": [13.24094313, 4.576259646] },
+        { "time": "Mai 76", "values": [12.48623842, 4.586561456] },
+        { "time": "Juni 76", "values": [12.29107158, 4.658057593] },
+        { "time": "Juli 76", "values": [12.50306746, 5.119893909] },
+        { "time": "Aug 76", "values": [13.10118266, 5.477623537] },
+        { "time": "Sep 76", "values": [13.29942517, 5.503142213] },
+        { "time": "Okt 76", "values": [15.38377297, 5.507224792] },
+        { "time": "Nov 76", "values": [14.56850002, 5.39086753] },
+        { "time": "Dez 76", "values": [15.19891638, 4.700468205] },
+        { "time": "Jan 77", "values": [15.61550456, 4.536166759] },
+        { "time": "Feb 77", "values": [15.86476404, 4.389357448] },
+        { "time": "März 77", "values": [15.86818146, 4.333087756] },
+        { "time": "Apr 77", "values": [15.85247828, 3.583185341] },
+        { "time": "Mai 77", "values": [17.43118518, 3.439944644] },
+        { "time": "Juni 77", "values": [18.09951602, 3.275874802] },
+        { "time": "Juli 77", "values": [16.68384253, 3.176594849] },
+        { "time": "Aug 77", "values": [16.50716432, 2.902464671] },
+        { "time": "Sep 77", "values": [16.81004589, 2.581578839] },
+        { "time": "Okt 77", "values": [16.76009686, 2.542270852] },
+        { "time": "Nov 77", "values": [16.30684332, 2.529270577] },
+        { "time": "Dez 77", "values": [16.98925526, 2.517205834] },
+        { "time": "Jan 78", "values": [13.98625075, 2.357580253] },
+        { "time": "Feb 78", "values": [13.68030592, 2.188931081] },
+        { "time": "März 78", "values": [13.20528217, 2.109064909] },
+        { "time": "Apr 78", "values": [14.71600582, 1.987894186] },
+        { "time": "Mai 78", "values": [14.65283003, 1.963206815] },
+        { "time": "Juni 78", "values": [12.61408761, 2.04238602] },
+        { "time": "Juli 78", "values": [12.24860294, 2.173241413] },
+        { "time": "Aug 78", "values": [11.9111503, 2.333120273] },
+        { "time": "Sep 78", "values": [10.29357922, 2.415914964] },
+        { "time": "Okt 78", "values": [8.679217094, 2.462420555] },
+        { "time": "Nov 78", "values": [8.167572902, 2.525066844] },
+        { "time": "Dez 78", "values": [8.505895973, 2.558184606] },
+        { "time": "Jan 79", "values": [7.478705943, 2.653137496] },
+        { "time": "Feb 79", "values": [6.623466222, 2.939709279] },
+        { "time": "März 79", "values": [7.304390543, 3.194126253] },
+        { "time": "Apr 79", "values": [8.87226565, 3.677864677] },
+        { "time": "Mai 79", "values": [9.801255754, 3.903998178] },
+        { "time": "Juni 79", "values": [9.598621291, 4.756171262] },
+        { "time": "Juli 79", "values": [10.40983558, 5.365469989] },
+        { "time": "Aug 79", "values": [10.57919813, 5.61008376] },
+        { "time": "Sep 79", "values": [11.05488274, 5.658517966] },
+        { "time": "Okt 79", "values": [11.0841132, 5.708772342] },
+        { "time": "Nov 79", "values": [11.47472517, 6.511595923] },
+        { "time": "Dez 79", "values": [12.42179225, 6.763453697] },
+        { "time": "Jan 80", "values": [11.56152359, 6.761645866] },
+        { "time": "Feb 80", "values": [11.20401169, 6.852582768] },
+        { "time": "März 80", "values": [13.72404038, 8.586126713] },
+        { "time": "Apr 80", "values": [13.11366996, 9.593462162] },
+        { "time": "Mai 80", "values": [12.18353002, 9.515359729] },
+        { "time": "Juni 80", "values": [11.80904092, 8.37984498] },
+        { "time": "Juli 80", "values": [11.80843134, 7.430690615] },
+        { "time": "Aug 80", "values": [11.62086095, 6.655742516] },
+        { "time": "Sep 80", "values": [12.31927809, 6.486998405] },
+        { "time": "Okt 80", "values": [13.61305074, 6.973204737] },
+        { "time": "Nov 80", "values": [13.63617967, 7.787862716] },
+        { "time": "Dez 80", "values": [14.52050032, 8.140875798] },
+        { "time": "Jan 81", "values": [15.33834101, 8.589423169] },
+        { "time": "Feb 81", "values": [15.80692125, 9.187422526] },
+        { "time": "März 81", "values": [14.69195978, 11.21208997] },
+        { "time": "Apr 81", "values": [15.06851661, 11.36503046] },
+        { "time": "Mai 81", "values": [14.97825838, 12.51212224] },
+        { "time": "Juni 81", "values": [13.93088799, 13.40521764] },
+        { "time": "Juli 81", "values": [13.24101613, 13.58524726] },
+        { "time": "Aug 81", "values": [10.61893095, 14.14223381] },
+        { "time": "Sep 81", "values": [10.78648202, 14.31917896] },
+        { "time": "Okt 81", "values": [12.36474232, 12.73404265] },
+        { "time": "Nov 81", "values": [11.77533158, 12.27361719] },
+        { "time": "Dez 81", "values": [11.76217164, 11.44837049] },
+        { "time": "Jan 82", "values": [12.73192938, 11.46370834] },
+        { "time": "Feb 82", "values": [13.43383022, 11.34975245] },
+        { "time": "März 82", "values": [13.23657215, 10.77189274] },
+        { "time": "Apr 82", "values": [12.84125749, 9.21530361] },
+        { "time": "Mai 82", "values": [11.87965907, 8.469504171] },
+        { "time": "Juni 82", "values": [12.48499884, 8.573579317] },
+        { "time": "Juli 82", "values": [13.17652804, 9.46844157] },
+        { "time": "Aug 82", "values": [13.75061434, 9.394450949] },
+        { "time": "Sep 82", "values": [13.55924851, 8.308772079] },
+        { "time": "Okt 82", "values": [13.88927336, 7.642862653] },
+        { "time": "Nov 82", "values": [13.85254708, 6.63690669] },
+        { "time": "Dez 82", "values": [13.14865908, 5.937644143] },
+        { "time": "Jan 83", "values": [13.67599767, 5.532205752] },
+        { "time": "Feb 83", "values": [12.54956775, 5.60924573] },
+        { "time": "März 83", "values": [10.97676188, 5.080436414] },
+        { "time": "Apr 83", "values": [10.3468384, 4.48107946] },
+        { "time": "Mai 83", "values": [11.77039222, 4.736804132] },
+        { "time": "Juni 83", "values": [10.52294376, 6.03452118] },
+        { "time": "Juli 83", "values": [10.41600979, 6.300126647] },
+        { "time": "Aug 83", "values": [10.97805183, 6.694127885] },
+        { "time": "Sep 83", "values": [11.39577612, 6.934193587] },
+        { "time": "Okt 83", "values": [10.94980344, 6.939047177] },
+        { "time": "Nov 83", "values": [11.18557939, 6.919960916] },
+        { "time": "Dez 83", "values": [11.30582171, 7.109810961] },
+        { "time": "Jan 84", "values": [10.48260308, 7.077277835] },
+        { "time": "Feb 84", "values": [11.66016286, 6.835663638] },
+        { "time": "März 84", "values": [11.39746694, 6.299137323] },
+        { "time": "Apr 84", "values": [11.2534879, 6.343850677] },
+        { "time": "Mai 84", "values": [12.25561772, 6.397646417] },
+        { "time": "Juni 84", "values": [11.63415852, 6.511542354] },
+        { "time": "Juli 84", "values": [11.83013905, 6.551356488] },
+        { "time": "Aug 84", "values": [11.12737265, 6.454279814] },
+        { "time": "Sep 84", "values": [10.25632299, 6.094926269] },
+        { "time": "Okt 84", "values": [9.818491144, 5.540298034] },
+        { "time": "Nov 84", "values": [10.54282447, 5.191549676] },
+        { "time": "Dez 84", "values": [10.04421392, 4.833162647] },
+        { "time": "Jan 85", "values": [10.56307448, 4.715513781] },
+        { "time": "Feb 85", "values": [11.1935855, 5.214477952] },
+        { "time": "März 85", "values": [11.50871624, 5.689765681] },
+        { "time": "Apr 85", "values": [10.46271619, 5.484044456] },
+        { "time": "Mai 85", "values": [9.314528596, 5.096197396] },
+        { "time": "Juni 85", "values": [8.156741802, 4.779838357] },
+        { "time": "Juli 85", "values": [8.984477142, 4.45601864] },
+        { "time": "Aug 85", "values": [7.192586214, 4.014813971] },
+        { "time": "Sep 85", "values": [6.17040199, 3.687401544] },
+        { "time": "Okt 85", "values": [6.083693887, 3.734631866] },
+        { "time": "Nov 85", "values": [6.668090126, 4.090837077] },
+        { "time": "Dez 85", "values": [5.208987103, 4.108829486] },
+        { "time": "Jan 86", "values": [4.630358266, 3.966985317] },
+        { "time": "Feb 86", "values": [4.57139707, 3.789867963] },
+        { "time": "März 86", "values": [4.321586775, 3.283534561] },
+        { "time": "Apr 86", "values": [4.089710482, 2.995681132] },
+        { "time": "Mai 86", "values": [4.817645835, 2.787687848] },
+        { "time": "Juni 86", "values": [4.548349827, 2.888983716] },
+        { "time": "Juli 86", "values": [5.346094796, 2.890865991] },
+        { "time": "Aug 86", "values": [4.580280636, 2.768057138] },
+        { "time": "Sep 86", "values": [4.961150944, 2.726637791] },
+        { "time": "Okt 86", "values": [4.975422015, 2.80882298] },
+        { "time": "Nov 86", "values": [4.724295047, 2.929338216] },
+        { "time": "Dez 86", "values": [5.30697527, 2.902843919] },
+        { "time": "Jan 87", "values": [6.395369855, 2.883536438] },
+        { "time": "Feb 87", "values": [7.100516749, 2.586252204] },
+        { "time": "März 87", "values": [7.09490725, 2.508448722] },
+        { "time": "Apr 87", "values": [7.157424377, 2.341219074] },
+        { "time": "Mai 87", "values": [7.409246463, 2.203462362] },
+        { "time": "Juni 87", "values": [6.550071157, 2.122622821] },
+        { "time": "Juli 87", "values": [5.886337489, 2.160487187] },
+        { "time": "Aug 87", "values": [5.734666328, 2.348254927] },
+        { "time": "Sep 87", "values": [6.425092095, 2.505620325] },
+        { "time": "Okt 87", "values": [9.32058663, 2.860230516] },
+        { "time": "Nov 87", "values": [10.96087924, 2.722131641] },
+        { "time": "Dez 87", "values": [11.04726653, 2.440179298] },
+        { "time": "Jan 88", "values": [12.2471048, 2.401155022] },
+        { "time": "Feb 88", "values": [9.667185288, 2.329730451] },
+        { "time": "März 88", "values": [9.517611289, 2.173886761] },
+        { "time": "Apr 88", "values": [10.10007493, 2.140435303] },
+        { "time": "Mai 88", "values": [9.776326782, 2.265867395] },
+        { "time": "Juni 88", "values": [8.930045242, 2.356339193] },
+        { "time": "Juli 88", "values": [8.971930422, 2.728861473] },
+        { "time": "Aug 88", "values": [8.739477477, 3.106873254] },
+        { "time": "Sep 88", "values": [7.897931327, 3.280328976] },
+        { "time": "Okt 88", "values": [6.921692798, 3.181196545] },
+        { "time": "Nov 88", "values": [6.953645657, 2.972412132] },
+        { "time": "Dez 88", "values": [6.083107796, 3.053286882] }
+    ]
+]

+ 512 - 0
data/data.tsv

@@ -0,0 +1,512 @@
+date_of_investment	recoll_after10	ten_dax	ten_gol	ten_fts	ten_bon	ten_fes	ten_sp	ten_msci	recoll_after20	twe_dax	twe_gol	twe_fts	twe_bon	twe_fes	twe_sp	twe_msci	recoll_after30	thi_dax	thi_gol	thi_fts	thi_bon	thi_fes	thi_sp	thi_msci
+Jun-66	1976-06	0,228423998		0,4338817515	0,7060120352		-0,9055995872		1986-06	4,7525732012		6,4954994283	2,8485126573		-1,4215909037		1996-06	8,9331878466		13,7955578374	8,4969431343		-1,2861397543	
+Jul-66	1976-07	0,2986290107		0,5863835352	0,7490996066		-0,888023379		1986-07	4,7543465973		6,8445012206	3,0475911059		-1,4238450146		1996-07	9,1409750302		14,6722545721	9,1336419609		-1,3415999038	
+Aug-66	1976-08	0,1781417901		0,6688437084	0,7431705852		-0,8551899141		1986-08	5,3543296328		8,6373240933	3,0498413165		-1,3465811951		1996-08	8,8242019872		15,9665206209	9,1282955708		-1,1919989921	
+Sep-66	1976-09	0,1250165485		0,5779969923	0,7223046681		-0,8150605495		1986-09	4,5738821396		7,5518790305	2,9553499242		-1,3427635985		1996-09	8,8172125291		15,6216212805	8,8076018011		-1,0995824493	
+Oct-66	1976-10	0,1071909197		0,3548421289	0,7016084339		-0,8340492269		1986-10	5,1801296866		7,3221408856	2,8728827425		-1,3225222849		1996-10	9,7377298965		15,0572704359	8,5005052821		-0,9985343471	
+Nov-66	1976-11	0,1915829176		0,5968758025	0,6665555318		-0,8700246749		1986-11	5,3943031873		8,3531160716	2,7054534783		-1,3241891052		1996-11	10,5206907498		17,2784496702	7,9157866201		-0,9831838875	
+Dec-66	1976-12	0,2468369015		0,5981597963	0,5670721281		-0,8510261341		1986-12	5,4954625434		8,1844002482	2,279591582		-1,3139033732		1996-12	11,044565954		17,4199343648	6,5305012905		-0,9770604146	
+Jan-67	1977-01	0,1355121275		0,6381914468	0,5160131344		-0,8998937804		1987-01	4,1139559622		7,1952895305	2,1135417124		-1,3025030488		1997-01	10,8522704753		18,9025443007	6,0111004778		-1,0139452553	
+Feb-67	1977-02	0,0394642395		0,4531243767	0,4924393769		-0,9520268699		1987-02	3,5854615772		6,1495136106	2,0350040175		-1,2814449391		1997-02	11,4398711821		18,9796332768	5,772601834		-1,0036536064	
+Mar-67	1977-03	0,0299681474		0,4445277292	0,4516451837		-0,974753816		1987-03	3,6231542393		6,1656895763	1,8821456608		-1,2667139252		1997-03	11,6894482076		19,4373684999	5,3067087614		-1,0633348773	
+Apr-67	1977-04	0,2343319662		0,5113350156	0,3918371861		-1,0024008161		1987-04	3,9517833244		5,9394067282	1,6631068013		-1,2956177202		1997-04	12,5113858084		18,7553892485	4,6654873733		-1,1472253647	
+May-67	1977-05	0,1746290786		0,572258206	0,3860806725		-1,0216158618		1987-05	3,8191898417		6,2205552148	1,6615377867		-1,3147467618		1997-05	12,8569141429		20,7964896467	4,6633074946		-1,0188303846	
+Jun-67	1977-06	0,1781169489		0,5089364976	0,3830792824		-1,0161335148		1987-06	4,42540944		6,6830236205	1,6639417688		-1,2617187633		1997-06	14,2720229591		21,9294360146	4,6610997087		-0,8958770317	
+Jul-67	1977-07	0,0862677856		0,5858880378	0,3860486417		-1,019055252		1987-07	4,380650512		7,441703805	1,6680080399		-1,2463012372		1997-07	15,8162418751		25,6935973696	4,6424642355		-0,8352942269	
+Aug-67	1977-08	-0,0826515283		0,4743585823	0,3602508105		-1,0503025695		1987-08	3,7286923306		6,9068815536	1,5893184413		-1,2122605623		1997-08	11,7411225341		20,8534422376	4,4213574705		-0,8773113324	
+Sep-67	1977-09	-0,1139737072		0,2740245595	0,3407674408		-1,0684134272		1987-09	3,4035345793		5,7597008572	1,5249443856		-1,2563965787		1997-09	12,2521460821		19,6640078949	4,2278180136		-0,8772896029	
+Oct-67	1977-10	-0,1400628736		0,262840749	0,3392452059		-1,083471123		1987-10	1,9068036302		3,8522790386	1,5231652614		-1,3739343844		1997-10	10,1210689825		17,2190354883	4,2333975631		-0,8366915756	
+Nov-67	1977-11	-0,189049794		0,2077278262	0,3586792955		-1,0625471634		1987-11	1,186613127		2,8800595661	1,5963608347		-1,4516134566		1997-11	10,3658793616		17,1566496609	4,4434372958		-0,7789150608	
+Dec-67	1977-12	-0,2636537967		0,1146836222	0,3540264472		-1,0853721153		1987-12	1,0013164133		2,6213450919	1,58999356		-1,48954072		1997-12	10,8291325138		17,5065638928	4,4298242443		-0,79089597	
+Jan-68	1978-01	-0,2938168436		0,0816264172	0,3464492701		-1,0942706873		1988-01	0,6971268005		2,1551433886	1,5387026883		-1,4377013306		1998-01	10,939350864		17,6557837609	4,2642220328		-0,7404970459	
+Feb-68	1978-02	-0,2939945075		0,029247299	0,3419270161		-1,083777734		1988-02	1,1423324752		2,6163925565	1,5384872635		-1,3762268455		1998-02	11,7685846883		18,1724156101	4,2667599893		-0,4938724818	
+Mar-68	1978-03	-0,3375950363		0,0218282665	0,3357068216		-1,0837483055		1988-03	1,0005903622		2,6190078861	1,5340454733		-1,3411138011		1998-03	12,5694339816		19,7501153481	4,2612247754		-0,3264122715	
+Apr-68	1978-04	-0,4245446807	3,0041500388	-0,0626534579	0,3164453618		-1,1028401585		1988-04	0,8578483335	9,7022569882	2,449419335	1,4659815743		-1,4129326454		1998-04	12,0241459729	5,2663752603	19,3799333373	4,0697165764		-0,4188288139	
+May-68	1978-05	-0,3879600821	2,6995299196	-0,0856621309	0,2753154079		-1,0980226081		1988-05	0,966312412	8,8642046114	2,3644188862	1,3257996487		-1,4587931628		1998-05	13,5333824821	4,4653037194	20,3497982971	3,6948593187		-0,4819448912	
+Jun-68	1978-06	-0,4376392608	2,839588859	-0,0134533323	0,275369185		-1,1131686784		1988-06	0,9139815677	8,7637823716	2,6486505569	1,3302873758		-1,430529225		1998-06	13,3376206813	4,2267062997	21,4390330225	3,6953362695		-0,5336577422	
+Jul-68	1978-07	-0,3977602193	3,1397712638	-0,0565018893	0,275261703		-1,1157225108		1988-07	1,0248487491	8,8434776167	2,4926801101	1,3301685364		-1,4325647182		1998-07	13,2509316136	4,5168443736	20,2606718171	3,6848749077		-0,426041748	
+Aug-68	1978-08	-0,3862395531	3,638679247	-0,0334554976	0,2563204358		-1,0703842605		1988-08	0,9624914345	8,7780129988	2,4906531949	1,2616814033		-1,4362709878		1998-08	10,3341670916	4,3616630352	16,5947285216	3,5034804877		-0,5483342221	
+Sep-68	1978-09	-0,3153385636	3,6481751126	-0,0088546822	0,2579116154		-1,0890234266		1988-09	1,3022425552	8,0556236836	2,7351491207	1,260204223		-1,4531440009		1998-09	9,5990989928	4,2915149542	14,864712578	3,5093185825		-0,7270040163	
+Oct-68	1978-10	-0,3706631178	4,1700065189	-0,002719313	0,257933282		-1,120520751		1988-10	1,3443831431	8,1365500623	3,0500262614	1,2605167952		-1,443138251		1998-10	9,9476997731	4,6838568585	15,7435523998	3,5175220437		-0,739499842	
+Nov-68	1978-11	-0,3606880006	3,5763081233	-0,050733914	0,2609361027		-1,1554219632		1988-11	1,354673362	8,3292029275	2,7931545309	1,2645172072		-1,4673609313		1998-11	11,2218939076	4,5292659228	17,0518006724	3,5333326948		-0,5209156886	
+Dec-68	1978-12	-0,3463118344	3,4277785336	-0,0238080844	0,2593617015		-1,1557268989		1988-12	1,5563999728	7,9714010365	3,1025541336	1,2623175731		-1,4612991192		1998-12	11,3823766127	4,2194093533	17,0683450729	3,5305711716		-0,4471308192	
+Jan-69	1979-01	-0,413342544	3,7348975068	0,0099724446	0,2559474506		-1,122832277		1989-01	1,3196635878	7,3322592121	3,2429616803	1,2573349309		-1,4085954723		1999-01	11,1129413966	3,949600081	17,5274186238	3,553397446		-0,1918439722	
+Feb-69	1979-02	-0,4166708664	4,1289997445	-0,1156472823	0,2544858679		-1,1324275581		1989-02	1,3481896844	6,8725292876	2,8616671559	1,2571505108		-1,3785663685		1999-02	10,8090153979	3,9119922548	15,7453074017	3,5638447201		-0,1613100773	
+Mar-69	1979-03	-0,454896567	3,9719733869	-0,1104221454	0,2640745021		-1,1202784077		1989-03	1,3929129629	6,8043007914	3,0745169806	1,3171141432		-1,3657152155		1999-03	10,5597245446	3,7907581231	16,0483417724	3,7372179778		-0,0157338562	
+Apr-69	1979-04	-0,4628971864	3,8765748227	-0,1336495438	0,2755615797		-1,1294819525		1989-04	1,5051428517	6,6438908384	3,2019043101	1,3763692849		-1,3621299309		1999-04	11,8939422196	3,6799990987	17,3933192894	3,9128815156		0,0300844274	
+May-69	1979-05	-0,6020502889	4,2782939	-0,1979892934	0,2711907141		-1,1666910873		1989-05	1,3187556939	6,2986643437	3,3248629399	1,3726590262		-1,3634850669		1999-05	9,9995312412	3,5300144223	16,5362760453	3,9186735369		-0,0528853546	
+Jun-69	1979-06	-0,5787795047	5,0859125495	-0,307686959	0,3036995514		-1,1358199009		1989-06	1,6233250367	6,6320641004	3,2727768813	1,5119177018		-1,2783587822		1999-06	11,2631202687	3,4662026999	16,3365032099	4,3021109623		0,0962185177	
+Jul-69	1979-07	-0,5145092878	5,3960412213	-0,2359284252	0,3258108902		-1,1232768831		1989-07	1,9708624334	6,7465812962	3,6793449351	1,6534902293		-1,2026820694		1999-07	10,9660897698	3,2812076789	16,0812797566	4,6934872625		0,3643922349	
+Aug-69	1979-08	-0,5900973343	5,6381400819	-0,1799578333	0,319543367		-1,1037042382		1989-08	1,7802043944	6,6424857183	4,0636658136	1,6472965793		-1,1527094107		1999-08	10,416852857	3,3848849647	17,1489152904	4,6856635419		0,2586945574	
+Sep-69	1979-09	-0,5627486329	6,9965482592	-0,2726350643	0,3719634022		-1,1069372934		1989-09	1,8244627374	6,6065713481	3,727469564	1,8647755776		-1,1563444588		1999-09	10,4638120688	3,6179737825	15,3114900948	5,3432645282		0,2279989589	
+Oct-69	1979-10	-0,656927351	7,9759332644	-0,3175739306	0,4049971217		-1,1404373491		1989-10	1,4246176776	6,8091716057	3,4176750721	2,0113945486		-1,1728916045		1999-10	10,948498079	4,8489858626	16,835022305	5,811743197		0,1696488722	
+Nov-69	1979-11	-0,6782788988	8,7740373964	-0,3684399885	0,4081001346		-1,1474349562		1989-11	1,56142906	8,2851591524	3,4589096906	2,0196011901		-1,1915477036		1999-11	11,3860861347	5,0000277633	16,8436824556	5,8194091046		0,3806876476	
+Dec-69	1979-12	-0,637359185	11,4963878018	-0,4468779689	0,4464668552		-1,0983890261	0,279543584	1989-12	2,3017596406	9,3966117031	3,7968627622	2,1775657604		-1,1009732078	9,865890067	1999-12	14,8265567409	5,2197571851	18,8012746731	6,3053310431		0,6689849152	34,58228632
+Jan-70	1980-01	-0,5528601578	17,6357342125	-0,3584873751	0,4586373638		-1,0711398879	0,532513953	1990-01	2,7068146608	9,504635689	4,2980799343	2,1912818835		-1,1142187633	9,983965787	2000-01	15,7043967836	5,3304797295	19,76051086	6,3356558721		0,7216472223	34,51657514
+Feb-70	1980-02	-0,5066203894	17,3473093899	-0,2587493933	0,4838064658		-1,0444818155	0,45394105	1990-02	2,8027385856	9,6720062067	4,6331289992	2,3548468551		-1,1057877864	9,102706318	2000-02	18,2999985362	5,7944719885	23,5384406485	6,8617525449		0,7631432765	33,47267364
+Mar-70	1980-03	-0,6068266606	14,1100984652	-0,3412968488	0,5387059176		-1,1231716522	0,214239071	1990-03	3,2186176737	8,9895116706	5,4202166248	2,6132950097		-1,0963584616	8,383072182	2000-03	18,2310860612	5,3702620122	23,951521114	7,6916212877		0,8294212219	35,82558236
+Apr-70	1980-04	-0,5010586734	12,8184068715	-0,3090409766	0,5387461873		-1,1167822103	0,548268913	1990-04	3,0719037431	8,3013062408	4,8692616091	2,6193974823		-1,0483040321	9,301100823	2000-04	18,8600153307	5,0657976052	23,0407090031	7,6991405305		1,0281928009	37,97379817
+May-70	1980-05	-0,3520711279	12,6062404596	-0,203124561	0,5908059845		-1,027379624	0,807619116	1990-05	3,6773517231	8,0286404262	5,3545226613	2,884261863		-0,8534459253	11,34519812	2000-05	19,9785434453	4,8711187251	23,7247835974	8,6044100795		1,4127104914	39,5823232
+Jun-70	1980-06	-0,2539667378	15,2595614787	0,0024762582	0,6552008239		-0,9826346221	0,99605895	1990-06	4,0576370014	7,7309631066	6,3235819783	3,1780686129		-0,7965445456	11,58437444	2000-06	20,2481815519	5,2631456866	25,4014176147	9,5714661486		1,5631627696	42,06253021
+Jul-70	1980-07	-0,3116267761	16,5806765165	0,1260446299	0,651808246		-0,9512081812	0,913801141	1990-07	3,7646434783	8,0226492194	6,9995282398	3,1799861202		-0,7966446366	10,89010715	2000-07	19,6182618224	5,1865429293	27,0604483588	9,5612871064		1,5907157086	38,21693519
+Aug-70	1980-08	-0,3091942865	16,006239215	-0,0199215197	0,5874355528		-0,9568641335	0,878916952	1990-08	2,9896046585	8,9344833393	5,1494064014	2,886517881		-0,9690257153	9,273248921	2000-08	20,3050425794	4,9626582643	24,9612618661	8,5919859273		1,5053994687	38,16760802
+Sep-70	1980-09	-0,2806611447	16,9219122273	-0,0399114135	0,6098851253		-0,9823691743	0,875621645	1990-09	2,124025171	8,5299187683	3,8411516763	2,9743381785		-1,1042869126	7,733281176	2000-09	19,384370317	4,7589414351	23,010362824	8,9025611624		1,2099245728	34,75061838
+Oct-70	1980-10	-0,301604509	15,9369471172	-0,0389712352	0,6503591127		-0,9817795656	0,989169273	1990-10	2,5053889026	7,914027036	4,4832206161	3,1581290847		-1,1662551658	8,804130293	2000-10	20,6351493509	4,4091137761	23,4511951905	9,5695402262		0,9393528605	34,65294323
+Nov-70	1980-11	-0,2340872889	14,9579984035	0,0033957317	0,629275373		-0,9530239178	1,040497857	1990-11	2,7137970324	7,9712031774	4,646220385	3,0777680384		-1,116993781	8,39501612	2000-11	19,0571445517	4,3252257917	22,1240464014	9,2520618365		0,9426656896	31,60478965
+Dec-70	1980-12	-0,2198985523	14,2369917685	0,0150939264	0,5419299601		-1,0197374222	0,849883568	1990-12	2,7398478649	7,8819237084	4,6699531739	2,7113306875		-1,1342270681	8,102678203	2000-12	20,0303293143	4,4712823376	22,7148489293	7,9912745359		0,5886833016	30,47082135
+Jan-71	1981-01	-0,4299365323	13,034937293	0,0366297436	0,4501253887		-1,0448898663	0,675140032	1991-01	2,1982365751	7,9536450079	4,8405821247	2,3010021065		-1,1731174417	8,020749496	2001-01	18,3158152275	4,2807726005	24,7044312006	6,6613284464		0,5053000565	29,65036329
+Feb-71	1981-02	-0,4716353117	11,2395795191	-0,1613636529	0,4501867648		-1,0954563444	0,65795473	1991-02	2,4193962457	7,1965000834	4,574148576	2,3048078826		-1,0946050541	8,842174725	2001-02	15,8548063517	4,0304882972	20,0004705681	6,6661168945		0,3145452571	26,59648518
+Mar-71	1981-03	-0,44636609	11,1540978025	-0,171789597	0,484681967		-1,09601451	0,635164702	1991-03	2,3319217997	7,1571080998	4,2521930428	2,4791787105		-1,0835919374	8,07072974	2001-03	14,588399416	4,0450695658	18,4071425076	7,2055520571		-0,0247313247	23,52179602
+Apr-71	1981-04	-0,2953237931	11,0332502819	-0,1283256936	0,4847493313		-1,1131286425	0,562987157	1991-04	2,9366481125	6,9995426243	4,4556752785	2,4891327942		-1,0877797671	7,828642069	2001-04	17,2398547561	3,9602877141	19,5067582508	7,2077117343		-0,1068329991	24,55235387
+May-71	1981-05	-0,365489615	10,1553394502	-0,0711137404	0,4985475535		-1,1247737366	0,567009671	1991-05	3,1192646983	6,6305320797	5,2151918601	2,5670084757		-1,0830995684	8,287041034	2001-05	16,3458257162	3,991330637	20,475562572	7,4815738277		0,1083006238	24,84221027
+Jun-71	1981-06	-0,2381709393	9,7791183073	0,012559704	0,5420632038		-1,1087678234	0,544314165	1991-06	2,9343069623	6,9486368535	4,843312754	2,7450686213		-1,0539574018	7,541463155	2001-06	16,4021087077	4,0286007614	20,7675775058	8,0610888935		0,1111213122	23,70212301
+Jul-71	1981-07	-0,2868336221	8,288405983	0,0604066539	0,5544073052		-1,1319620472	0,534631086	1991-07	2,6970411465	6,784742791	4,8528489187	2,815009735		-1,0589880481	8,136202689	2001-07	15,001848264	3,8259368606	20,3664549733	8,3673963188		0,0748827246	23,76388088
+Aug-71	1981-08	-0,2626361925	7,8864770837	-0,0526832851	0,5496741063		-1,1269597406	0,439481148	1991-08	3,0051993711	6,1430096282	4,6449185527	2,8148445498		-1,010772597	7,877894299	2001-08	13,6712597889	3,6698784654	17,6146445469	8,3699073949		0,0735238922	21,9498147
+Sep-71	1981-09	-0,2957164366	8,8545328009	-0,089657659	0,5076933016		-1,1964395781	0,296129663	1991-09	3,0915319764	6,1049353886	4,7041291535	2,646490895		-1,0380019647	8,243799993	2001-09	11,4739666434	4,0271992578	15,506641306	7,7900087502		-0,2974059627	19,99681522
+Oct-71	1981-10	-0,199156264	8,5835553353	-0,0434199328	0,4844943402		-1,1813340856	0,436901038	1991-10	3,4141434554	6,2555352287	4,8448706123	2,5636409503		-1,0084544558	8,82306943	2001-10	13,4634648482	3,9779257401	17,0934496692	7,5167428231		-0,1452537308	21,32484149
+Nov-71	1981-11	-0,1564237018	7,9289254295	0,1143738353	0,4645619636		-1,1423713879	0,578337108	1991-11	3,3211143503	6,2079035141	5,1937212568	2,476134257		-0,9595407217	8,248357694	2001-11	14,894547482	3,7755864079	19,9309222561	7,2606846594		0,1347214476	22,5284151
+Dec-71	1981-12	-0,3043771873	7,7174343308	0,0722423749	0,4629319683		-1,1763948823	0,342737749	1991-12	3,001156198	6,1370932183	5,165143104	2,4781161363		-1,0245235235	8,079471258	2001-12	14,2900523789	3,6601290871	20,4775582681	7,2408097783		-0,0069761892	20,56484827
+Jan-72	1982-01	-0,331558444	6,7043229784	0,0140119206	0,4135474704		-1,2179573552	0,250599185	1992-01	3,1087862751	5,589165793	5,1549979667	2,2457223784		-0,9779734114	7,545336399	2002-01	13,3365921481	3,5123954292	19,2703847779	6,4877106451		-0,0996068239	19,0869006
+Feb-72	1982-02	-0,4089465793	6,0547875008	-0,0196476149	0,3610001987		-1,2329603358	0,068579731	1992-02	2,8980590622	5,1568668529	5,075200052	2,0085112611		-1,010322493	7,019054708	2002-02	12,0084181387	3,4782519981	18,1794303223	5,7739768238		-0,2212844787	18,10237486
+Mar-72	1982-03	-0,4249246061	5,129863951	-0,0965472856	0,3844645808		-1,2529016428	0,001522185	1992-03	2,6149152686	4,9559926103	4,4803482795	2,0832210774		-1,0570181404	6,462314543	2002-03	12,4138841513	3,4413697003	17,6338570984	6,005840993		-0,1738275246	18,70656545
+Apr-72	1982-04	-0,3753214517	5,4470691484	-0,1627383065	0,4470024718		-1,2313694662	0,067250758	1992-04	2,8318962352	4,7280193258	4,227348465	2,322470349		-1,0671374631	6,463383037	2002-04	11,9318212339	3,5352375231	16,0296205615	6,7609754802		-0,2834378558	17,72126742
+May-72	1982-05	-0,4365984163	4,4280518614	-0,1528916713	0,4557459101		-1,2403453098	-0,022357156	1992-05	2,8718208396	4,0033525944	4,6038190021	2,4053225986		-1,0339402333	6,622430407	2002-05	10,8642230103	3,1333130332	15,9669813535	7,0277122881		-0,3184417688	17,35438225
+Jun-72	1982-06	-0,4507946467	3,3486269608	-0,2179877231	0,4676799155		-1,280810169	-0,067371416	1992-06	2,7970846462	3,3049242424	4,2137094248	2,4937227087		-1,052151493	6,530032955	2002-06	9,8099732848	2,5447925958	14,1225430429	7,3060951039		-0,4507142102	16,59225824
+Jul-72	1982-07	-0,5169609186	3,4411704744	-0,1784892379	0,4921052914		-1,274388859	-0,108323515	1992-07	2,1273477724	3,2054034857	3,8330005275	2,5850472738		-1,0161243498	6,421091037	2002-07	7,2320576193	2,1700991127	12,4787347102	7,5960181034		-0,6519270814	14,71890535
+Aug-72	1982-08	-0,5021558851	3,7210136207	-0,2777102693	0,4753604538		-1,2849326845	-0,03586059	1992-08	2,0085023306	2,9637987455	3,1773632679	2,4992918433		-1,0486252599	6,382388484	2002-08	7,4551353308	2,0202420612	11,499265207	7,320114633		-0,7021932074	14,26585157
+Sep-72	1982-09	-0,3895600535	4,9816365139	-0,1747941987	0,4865765031		-1,2174419053	0,00956289	1992-09	1,965221874	3,1175154185	3,0844437716	2,5231821549		-1,0073374181	6,453893906	2002-09	5,1757220557	2,2709673232	8,6118690631	7,3435673913		-0,7445156334	12,66856622
+Oct-72	1982-10	-0,3847258464	4,8204136606	-0,1366759581	0,5033756151		-1,180133676	0,109279599	1992-10	2,1281758107	3,1680011541	3,3254391816	2,6128225844		-1,0202446359	6,154322689	2002-10	6,4461597523	2,3085909935	10,332762993	7,6312372913		-0,7583773824	13,65709277
+Nov-72	1982-11	-0,3642948258	4,920916257	-0,053519156	0,589354755		-1,1779018359	0,115126194	1992-11	2,2337765997	3,2004715739	3,5891145239	2,9744543881		-1,0421029005	5,883409221	2002-11	6,8498667649	2,5378202676	11,1180148162	8,8373163972		-0,7030338586	13,69737496
+Dec-72	1982-12	-0,2368989286	5,2782245045	0,0309975496	0,6325471903		-1,1788868865	0,164285912	1992-12	2,3154822008	3,1119536682	3,5172333449	3,1667674323		-1,0247547653	5,803504712	2002-12	5,7639762388	2,6573310308	9,5558815533	9,4599020314		-0,7706680871	12,61576689
+Jan-73	1983-01	-0,3049689966	5,7184121467	0,0539632047	0,6479997752		-1,1491695043	0,215276437	1993-01	2,1937478572	2,9235840773	3,7149184137	3,1739718262		-1,0298518394	5,814834101	2003-01	5,018247321	2,9429714043	9,2608949521	9,4918857779		-0,7626355198	12,14850322
+Feb-73	1983-02	-0,1554689427	5,0005828325	0,0965187323	0,657278432		-1,1074720603	0,251397842	1993-02	2,6260169843	2,3217049677	3,8021428239	3,1717951938		-0,970653392	5,940544821	2003-02	4,6621327684	2,3311339224	8,0106150013	9,4985570867		-0,8125938165	11,79841266
+Mar-73	1983-03	-0,0298618629	3,3419372925	0,3470491991	0,6677975992		-1,0625247876	0,327067159	1993-03	2,405024806	1,7967132873	4,0063034746	3,1752967417		-0,9190287931	6,393134579	2003-03	3,9984068559	1,5376714793	7,7306200204	9,5049244291		-0,7528933441	11,73699281
+Apr-73	1983-04	0,1920133935	3,1384654046	0,3715759533	0,7193229081		-1,0188829122	0,59108284	1993-04	2,5191730238	1,6657590737	3,573633383	3,3819980699		-0,898881263	7,261852884	2003-04	5,878118946	1,1280797288	8,946336084	10,2018437376		-0,5867892147	13,82941471
+May-73	1983-05	0,2796443643	2,6561919113	0,3694753196	0,8094012446		-0,9704618943	0,579060413	1993-05	3,0342171198	1,5044303528	3,9146171004	3,8011431915		-0,8429407368	7,507828557	2003-05	6,9173086682	1,0170835021	9,7560982193	11,6838530785		-0,3914566268	14,82426431
+Jun-73	1983-06	0,4087085835	1,8070613951	0,6950927336	0,9748040036		-0,9362466829	0,641005364	1993-06	3,3006669355	1,0049431895	4,7112868478	4,601569143		-0,7908273395	7,371263329	2003-06	7,7713541122	0,5057068874	11,877032233	14,6524961631		-0,2051578558	15,01354293
+Jul-73	1983-07	0,6348424643	1,8681481997	0,7889409022	0,9731332424		-0,9433043735	0,546516465	1993-07	4,0010268991	1,1575596398	5,1872728966	4,6015591713		-0,8025264599	7,336468267	2003-07	9,3310633474	0,4452217478	12,8423559326	14,6570297507		-0,2091162788	14,94937125
+Aug-73	1983-08	0,4595120153	2,2686972595	0,8055504026	0,943652447		-0,9452407581	0,647570465	1993-08	4,4007482256	1,4718857024	6,168011487	4,4783923345		-0,7408252786	8,182251462	2003-08	9,1798041984	0,9060181022	14,0560624895	14,1950493806		-0,1444746645	16,07647578
+Sep-73	1983-09	0,5409401314	2,3490391997	0,8297903207	0,8950491089		-0,9413377083	0,625691218	1993-09	4,3873790448	1,3538539557	5,9571254867	4,2525468127		-0,7423527948	7,712055684	2003-09	8,553174946	1,2063501711	13,0331788482	13,3184790323		-0,1145729813	15,66200196
+Oct-73	1983-10	0,5841003089	2,3042045673	1,061852834	0,9287020578		-0,9517352383	0,587244594	1993-10	4,4495450277	1,5610573076	6,7712412302	4,3829453624		-0,759517918	7,890594266	2003-10	9,0880595781	1,3408211533	14,8523226862	13,770020381		-0,1212258509	16,54868087
+Nov-73	1983-11	0,96704562	2,4022709944	0,9481174087	0,8783700516		-0,888859596	1,002892089	1993-11	5,3344314489	1,8914594988	6,2223707262	4,0657705622		-0,6308216536	8,738372035	2003-11	11,0457516238	1,7088750561	14,09535882	12,5412040127		0,1468478729	19,71883196
+Dec-73	1983-12	1,0512680261	2,0366358911	1,2767306441	0,9309109203		-0,825086642	1,06556455	1993-12	6,2863187431	1,5570280693	7,8114207649	4,299179077		-0,4926411233	9,359222024	2003-12	12,1647689539	1,4185086167	16,7547749985	13,3702446269		0,4392112347	21,27573598
+Jan-74	1984-01	0,9711320087	1,264549071	1,4482573061	0,9383274296		-0,8169842627	1,074322371	1994-01	5,3983259399	0,9551178175	7,8055308223	4,3045135681		-0,4764555275	10,01321264	2004-01	11,4764350213	0,8152389312	17,7702436885	13,3919443254		0,5677849402	21,47872262
+Feb-74	1984-02	1,0608675379	0,9735736646	1,1518453851	1,0163744413		-0,8241392046	0,998036704	1994-02	5,7153137113	0,5026876989	6,9226926014	4,6593847128		-0,4180401488	9,67146057	2004-02	12,5217477155	0,3180043837	16,4686092868	14,7458249178		0,7212903211	21,51113357
+Mar-74	1984-03	1,0116833044	0,7468087887	1,3413154203	1,1615118692		-0,8461296991	1,191318311	1994-03	5,6792805067	0,2398827466	7,6561481537	5,4192933152		-0,4961045256	9,449542721	2004-03	11,5729998852	0,0253565023	17,1049968945	17,7519532987		0,5553585823	21,94654808
+Apr-74	1984-04	0,9397306885	0,6246338007	1,3670897644	1,1459081981		-0,7962679808	1,236315626	1994-04	5,7235101078	0,1636880941	8,0912544724	5,2982213174		-0,4555301092	10,00496703	2004-04	11,3757698277	-0,0321325656	17,5536934902	17,2201871263		0,7466955996	21,84776416
+May-74	1984-05	0,9556367624	0,7222358681	1,1825672525	1,2025204379		-0,7615075185	1,14087368	1994-05	5,6343828774	0,3080516916	7,2500136706	5,5722146662		-0,3665256967	10,53693168	2004-05	11,74350838	-0,0225428767	16,5911038585	18,3189169743		0,7908123346	23,09410651
+Jun-74	1984-06	1,1002545142	0,8758020674	1,3718337659	1,2291505667		-0,7748989436	1,25450197	1994-06	5,4233935802	0,4851519504	7,3018535179	5,7130901676		-0,3421815378	10,90074683	2004-06	12,5299549045	0,1805993184	17,8691405957	18,8901764482		0,8954450222	24,4462497
+Jul-74	1984-07	0,9417221008	0,8698177246	1,3024624728	1,2615465391		-0,6691532193	1,333197203	1994-07	5,8337900039	0,6916226117	7,9417272283	5,8541230069		-0,1227528466	11,95956032	2004-07	11,8893353243	0,4414487085	17,7629669004	19,4740579403		1,277896929	25,18186139
+Aug-74	1984-08	1,0669952641	0,6820759428	1,4618961538	1,264526355		-0,5356783594	1,967244836	1994-08	5,9799159238	0,4417736905	8,1787128877	5,8502320464		0,0277036438	13,88955829	2004-08	11,322938173	0,2288510005	17,288184884	19,4696321648		1,4157344149	28,21440896
+Sep-74	1984-09	1,4249806565	0,6825968036	1,6403587229	1,2693038614		-0,3904387634	2,318243773	1994-09	5,6829140818	0,5706308087	7,3804577546	5,8617400635		0,311898319	15,05233311	2004-09	12,5333496919	0,3207892018	17,5357989845	19,480639159		2,019506584	31,95877044
+Oct-74	1984-10	1,3952019681	0,5789845592	1,8608941429	1,2677460512		-0,4153349577	2,013136802	1994-10	5,6759842559	0,4642054797	8,0910402738	5,8746529505		0,2861477056	14,00421441	2004-10	12,3263598584	0,3088428696	18,912403169	19,4911818687		1,9649162065	29,7137486
+Nov-74	1984-11	1,3061917116	0,3220504854	1,8254466015	1,2017218743		-0,4247506143	2,06253308	1994-11	5,2925166251	0,1337407736	7,7587783062	5,4768479448		0,2265060456	13,55048634	2004-11	12,3416455212	0,1026909862	19,4213154211	17,8222581977		2,0768651675	31,92153821
+Dec-74	1984-12	1,3470227841	0,1815445645	1,7222786012	1,0578527646		-0,3496793828	2,197529895	1994-12	5,4272132624	0,0779841354	7,4862968111	4,713108281		0,3649834711	13,94205098	2004-12	12,641401298	0,0715794819	18,8695470466	14,7859722914		2,536328821	33,76094809
+Jan-75	1985-01	1,2211747286	0,1608489477	1,8280867726	0,9503169849		-0,3835827473	1,905339333	1995-01	4,5069733544	0,1658013929	7,0343187184	4,1496407396		0,2470416275	11,71282895	2005-01	11,3479060745	0,0995983302	18,8955654856	12,6569025742		2,1501269235	28,48598474
+Feb-75	1985-02	1,0029482238	0,1238974277	1,6082101379	0,8430881447	0,676352498	-0,4302110146	1,631759486	1995-02	4,1466828358	0,1261123188	6,6536106106	3,6251848883	2,8707506505	0,1210752687	10,78057595	2005-02	10,3687580315	0,0640397183	17,6985030332	10,7594081509	8,1980393397	1,8052503191	26,87351868
+Mar-75	1985-03	1,0389296879	0,1524483029	1,3556571589	0,8428507274	0,6301947888	-0,4884100257	1,715954149	1995-03	3,572134756	0,1739845207	5,2400108808	3,628686708	2,6762406452	0,0802883286	11,28711125	2005-03	10,232106868	0,1366878865	15,8055958192	10,7528875023	7,5511128372	1,5876628199	26,07597044
+Apr-75	1985-04	1,0711451571	0,3712516354	1,4433090242	0,8313303311	0,5931393467	-0,4841686738	1,585732524	1995-04	3,6875481581	0,346657936	5,5125579869	3,5426947116	2,4921832779	0,1334167431	11,20680235	2005-04	9,4317287808	0,2430354574	15,1252535124	10,4223985426	6,9441585089	1,4559545086	24,37189569
+May-75	1985-05	1,5693793529	0,3608686992	1,6307549316	0,797640532	0,5595731701	-0,5129331823	1,67741102	1995-05	4,3818328952	0,3607547942	5,6144469618	3,3599757514	2,3301558807	0,0901075873	11,01539978	2005-05	11,2148374938	0,2600138456	15,6870465795	9,760529946	6,416099351	1,3108699351	24,22506582
+Jun-75	1985-06	1,7555311024	0,4069332058	2,0993801866	0,7675854103	0,5111145691	-0,5003818589	1,703999816	1995-06	4,2838738566	0,427012429	6,2437399478	3,180567697	2,09723708	0,1186937424	10,84996306	2005-06	11,4241324041	0,3621217495	17,5493006245	9,1315148865	5,6953130235	1,3279820185	24,11819052
+Jul-75	1985-07	1,3287240706	0,4094916925	1,9307155511	0,7926202991	0,5024682272	-0,4680405758	1,965363109	1995-07	4,0921459224	0,4075308976	6,5437597593	3,2723117456	2,0444419099	0,2072216662	12,25566599	2005-07	11,0114752597	0,3146369867	18,4608835209	9,4428953569	5,5397001916	1,4039025664	26,59949763
+Aug-75	1985-08	1,7537117383	0,5089340539	1,9186277532	0,7927822178	0,4989501332	-0,4097454565	2,046774526	1995-08	4,4905677883	0,4104801973	5,8992446791	3,2670148236	2,0246531615	0,3767728571	12,13931369	2005-08	11,6033911244	0,4111265106	16,7380160967	9,432703758	5,4867071586	1,677368038	27,2414687
+Sep-75	1985-09	2,0210517668	0,7365329998	2,3031744184	0,8001332418	0,5063011572	-0,4108012577	2,235425913	1995-09	4,4568783367	0,7244923797	6,0965100821	3,2778812488	2,0355195866	0,5071441462	13,17709457	2005-09	12,4626271622	0,8938028132	18,4196788103	9,4389519218	5,4929553224	1,7109371879	29,30677102
+Oct-75	1985-10	2,1951024999	0,7798623412	2,8461216562	0,8016673586	0,507835274	-0,4436492574	2,18185942	1995-10	3,9264206912	0,7655368517	6,0328815285	3,2868974476	2,0445357855	0,4308308349	11,98214709	2005-10	11,0313075793	1,0331715981	18,1058234111	9,4431394925	5,4971428931	1,4476097134	26,54441261
+Nov-75	1985-11	1,9232458369	0,7793598621	2,4787940482	0,8238942709	0,5109762218	-0,3916762246	2,283469711	1995-11	3,816338625	0,7890765457	5,6462150283	3,3890423122	2,0588592188	0,4675139654	12,07758483	2005-11	11,0234283717	1,1005370218	17,6065705344	9,7854556155	5,5369398466	1,6016749333	26,71667903
+Dec-75	1985-12	2,3609667666	0,8076167358	2,7372779438	0,8029233111	0,5109304591	-0,3174693611	2,455009933	1995-12	3,7763413815	0,8635025143	5,4468136792	3,2885993961	2,0534772146	0,5868625202	12,45602357	2005-12	11,4071014332	1,4002127778	17,4414789425	9,4471753677	5,5225504871	1,7552667666	27,29484081
+Jan-76	1986-01	2,3048293985	1,1280689396	2,7365936725	0,7699008553	0,5210818826	-0,4054425876	2,19031506	1996-01	4,2477670759	1,1193715587	5,9327726519	3,113657336	2,0709859811	0,3762175586	11,51935865	2006-01	11,9093261221	1,9408532175	18,5165379689	8,8510170276	5,5701944434	1,4703977937	26,09196834
+Feb-76	1986-02	2,2133360384	1,1045995711	2,6334836032	0,7605953507	0,5285068001	-0,3713776765	2,561312536	1996-02	4,2321792253	1,1876531841	5,8426953842	3,0267558274	2,0597841175	0,4211551243	11,69468931	2006-02	12,1547459709	2,0171884257	19,0071565855	8,5579117755	5,5331995433	1,338438785	26,2521843
+Mar-76	1986-03	2,4279016185	1,1293909366	2,9856944873	0,7059687706	0,5194438018	-0,2986325724	2,90768736	1996-03	4,0793447179	1,0837795549	5,7980702049	2,7654546626	2,0022856815	0,3930651299	11,74879582	2006-03	12,1461181376	1,9743980701	19,610992949	7,7077316107	5,3642234652	1,3548349577	26,52282706
+Apr-76	1986-04	2,9034154848	1,1955565921	3,1058678392	0,7169875316	0,4586350806	-0,2616416457	3,069552937	1996-04	4,5529664122	1,1787234685	5,5884304734	2,7775130749	1,7390179584	0,3868214601	12,17228723	2006-04	13,240943128	2,5617001752	19,1815917634	7,7113870036	4,5762596459	1,3360432682	27,60035416
+May-76	1986-05	2,5274380247	1,2320494763	2,9571158328	0,7598460466	0,4615130917	-0,24255519	3,132933718	1996-05	4,6757046448	1,1994272252	6,2498730809	2,9536426017	1,7425110067	0,4681214806	12,41455994	2006-05	12,4862384222	3,1211029357	19,286394413	8,2807901724	4,5865614559	1,3451340437	27,08138242
+Jun-76	1986-06	2,4160431237	1,2637690433	2,9425425364	0,7816834795	0,4701833105	-0,2137678091	3,173182561	1996-06	4,6471374129	1,1744951389	6,5027279849	3,0408141676	1,7677193169	0,4896211925	12,04714399	2006-06	12,2910715833	2,5418376997	19,3485707441	8,5679485496	4,6580575934	1,2307925039	26,18334244
+Jul-76	1986-07	2,2748221251	1,4991644507	2,7017850118	0,8283135455	0,5187723556	-0,2559891107	3,256819941	1996-07	4,51629858	1,3593274783	6,137324783	3,2194822896	1,928410437	0,3540216216	11,66885073	2006-07	12,5030674633	3,148131243	19,1859819865	9,1660276755	5,1198939089	1,170402534	26,59869253
+Aug-76	1986-08	2,8633267118	1,9679755189	3,3487947883	0,8146387041	0,5566312946	-0,2101359914	3,683874041	1996-08	4,7596175721	1,6304902903	6,4256291037	3,1311249248	2,052320278	0,4503812684	11,84858131	2006-08	13,1011826583	3,5214151188	19,9850127372	8,8650162469	5,4776235372	1,2905818226	27,40444217
+Sep-76	1986-09	2,5410644981	2,2140373916	3,1256307814	0,7743041343	0,558783123	-0,2702010327	3,435650625	1996-09	4,9625313158	1,470762311	6,756317917	2,9543275268	2,0615368944	0,4464433342	12,25666815	2006-09	13,2994251656	3,047130945	20,8556364062	8,2794177872	5,5031422133	1,3329517386	27,49132706
+Oct-76	1986-10	2,9421848855	2,2072555513	3,1332285858	0,7613151937	0,5658677264	-0,2207794755	3,529244156	1996-10	5,5794365931	1,3977623876	6,7061453778	2,8725655755	2,0668524427	0,6346084369	12,86292494	2006-10	15,3837729736	2,8444082383	21,4375162694	8,0001966924	5,5072247919	1,6301133443	29,66875647
+Nov-76	1986-11	2,8646935968	1,6060968454	3,6513685876	0,6867856184	0,5589942826	-0,167229136	3,759908206	1996-11	5,6859772207	1,0228188289	7,8185272158	2,5461674751	2,0308134545	0,7821985006	13,74043811	2006-11	14,5685000181	2,6103450899	23,5450057084	6,9501203219	5,3908675297	1,7509363432	30,56666316
+Dec-76	1986-12	2,7901327159	1,4911512446	3,3723357458	0,6497357049	0,4990822595	-0,1877459912	3,490343035	1996-12	5,7436592067	0,8831524714	7,499304884	2,3845404442	1,7919865432	0,7251923514	12,4052811	2006-12	15,1989163794	2,4984432076	23,5348184877	6,449308902	4,7004682046	1,6907795854	28,86630743
+Jan-77	1987-01	2,2431086855	1,6571891555	2,8280777515	0,6198357688	0,4892197092	-0,0899825978	4,26386663	1997-01	6,0821616169	0,8065577731	7,9706105575	2,2349913185	1,7284822673	0,8374000197	13,06750075	2007-01	15,6155045585	2,5770148847	24,1657520989	6,0098471802	4,5361667589	1,777956003	30,31725475
+Feb-77	1987-02	2,1296102853	1,5186878891	2,5754138773	0,6237070731	0,4790617615	0,0461748126	4,476496564	1997-02	6,8924710301	0,6740170067	8,574609904	2,2417891973	1,6829061236	1,0571699437	13,29880441	2007-02	15,8647640374	2,6971291253	23,8354553053	6,0096806387	4,3893574484	1,9669308027	30,27037127
+Mar-77	1987-03	2,1694831609	1,3320743967	2,8073625203	0,5891855234	0,4763836699	0,1191609611	4,878464212	1997-03	7,0836222517	0,5066920798	9,3854402274	2,0961901531	1,6651177728	1,0599342939	13,0812134	2007-03	15,8681814607	2,2319719881	25,3066185112	5,5689541903	4,3330877562	1,8627023085	31,04566466
+Apr-77	1987-04	1,9439094518	1,5268873934	2,7028323954	0,5207258498	0,4049444454	0,1347148387	5,173827893	1997-04	6,5195863804	0,4524264997	9,0627425513	1,8270728984	1,4017042617	1,030398205	13,39801422	2007-04	15,8524782754	2,3642826651	26,0592042731	4,7556429067	3,583185341	2,095731808	32,11051102
+May-77	1987-05	1,9762535162	1,7342238508	2,4070005686	0,5070776265	0,3922731114	0,1445008995	5,271994381	1997-05	6,9730255918	0,4951168829	8,859046204	1,7653872864	1,3475596502	1,3240149935	14,54884975	2007-05	17,4311851779	2,3808771431	25,6320657117	4,5808264172	3,4399446436	2,2570719852	33,56264904
+Jun-77	1987-06	2,3054455252	1,7782432288	2,7309803583	0,5289433045	0,3782061263	0,2114155382	5,024087408	1997-06	7,734768221	0,5688573076	9,6855348305	1,8340999404	1,285576622	1,490806016	14,72846608	2007-06	18,0995160174	2,4803790092	26,1541484232	4,7737630124	3,275874802	2,267160329	31,98496437
+Jul-77	1987-07	2,4845917706	1,7284246038	3,0827120173	0,4937077774	0,3683492069	0,2468889783	5,235767082	1997-07	9,1775876836	0,3914707419	11,4314888282	1,6864583764	1,2359430497	1,6431893263	15,69255808	2007-07	16,683842526	2,4538462356	25,5388137245	4,391388401	3,1765948486	2,2589947076	31,64371564
+Aug-77	1987-08	2,4760037984	1,7683857777	3,0584122455	0,4604154354	0,338783205	0,3921065629	5,597633591	1997-08	7,6908917516	0,3661402928	9,7568299099	1,5570162993	1,1278711529	1,742120777	14,44440077	2007-08	16,5071643167	2,3972399029	24,9599584449	4,0385030852	2,9024646708	2,1948023605	31,47198374
+Sep-77	1987-09	2,338086595	1,6748663611	2,8545251315	0,4647727175	0,3063589048	0,3619483178	5,389016228	1997-09	8,221810548	0,2976086623	10,1813688862	1,5624466713	1,0093547579	1,8460922943	15,10653488	2007-09	16,8100458868	2,5657081286	24,8859442324	4,0308870376	2,5815788388	2,3886507657	32,60120101
+Oct-77	1987-10	1,3900041595	1,5260402524	1,9028238407	0,4649536114	0,3017952843	0,1908463652	4,327885775	1997-10	6,9503601063	0,1875777604	9,0932668713	1,5677101608	0,9988271792	2,0103173653	14,48365679	2007-10	16,7600968564	2,5567705917	25,4567905593	4,0309968891	2,5422708521	2,649496703	34,25170482
+Nov-77	1987-11	0,9832168663	1,4826251235	1,4135269819	0,4662730423	0,3015359141	-0,0108867699	4,115226331	1997-11	7,4301577594	0,0371548048	9,2176976014	1,5728751835	0,9987474943	1,9646951296	14,55562159	2007-11	16,3068433194	2,7926450193	24,0039810965	4,0310636301	2,5292705769	2,3784836736	32,31193333
+Dec-77	1987-12	0,9744275787	1,6303103285	1,3595168424	0,4491179211	0,3014920195	-0,022523065	4,23712144	1997-12	8,2552726805	-0,0563618061	9,7737836397	1,5072261651	0,9952591133	2,0933109166	14,41403026	2007-12	16,9892552604	2,802652992	24,0929292483	3,8496375588	2,517205834	2,4566111465	31,16869958
+Jan-78	1988-01	0,8058171827	1,3559002832	1,2090571261	0,4177522269	0,2819543443	0,0969707692	4,546720981	1998-01	8,634422144	-0,1757863981	10,4266805517	1,396176036	0,9327995729	2,2825518502	15,36419922	2008-01	13,9862507538	2,9402022503	21,0263450154	3,5440739229	2,3575802527	2,3381537449	29,54904769
+Feb-78	1988-02	1,1390318549	1,0801923495	1,5636784079	0,4048365218	0,264019416	0,1742223813	4,937734377	1998-02	9,2315664594	-0,1698509936	11,0676476092	1,3439188763	0,8688202622	2,6307763219	16,65306096	2008-02	13,6803059196	3,000523793	20,5336246176	3,3918198966	2,188931081	2,342724763	29,58927766
+Mar-78	1988-03	1,108523068	1,0171471133	1,5443236682	0,3908032816	0,2573051742	0,2318402493	4,842535613	1998-03	10,1841091592	-0,2258526063	11,9192784411	1,2894022643	0,8424359331	2,9030647101	16,58345772	2008-03	13,2052821726	3,094446603	19,7943056143	3,2320289894	2,1090649086	2,2128404825	27,89882954
+Apr-78	1988-04	1,1693352095	1,180598801	1,5171788542	0,3919472635	0,2416676034	0,1506789907	4,644648358	1998-04	10,5875609314	-0,0727097014	12,0521799921	1,2925943676	0,7919634802	2,8847711195	15,95023813	2008-04	14,7160058196	3,017507196	20,9493053679	3,2395670521	1,9878941855	2,2150108064	28,11236948
+May-78	1988-05	1,1753402164	1,1666031323	1,6542688733	0,4252105034	0,238676189	0,0482366307	4,44469078	1998-05	11,3846164246	-0,1307340776	13,6005254762	1,4144138747	0,7873760562	2,6805763686	15,49789977	2008-05	14,6528300298	2,8626276581	22,0631732504	3,5456770116	1,9632068145	2,1052283178	28,19181119
+Jun-78	1988-06	1,2376724094	1,0656974771	1,7384320816	0,4448297515	0,252114713	0,1394207725	4,376340744	1998-06	11,7712445917	-0,2371240299	13,8025281171	1,4746299537	0,8215224744	2,7124022208	15,71617243	2008-06	12,6140876086	2,6551309769	19,4381717054	3,7042016473	2,0423860196	1,9066475481	25,48063947
+Jul-78	1988-07	1,2424168477	0,9277217276	1,7253094679	0,4789236879	0,2705245367	0,1429922348	4,084394257	1998-07	11,2617834199	-0,2807213778	13,4727299782	1,5913412167	0,8741455239	2,9568678292	14,49127753	2008-07	12,2486029386	2,7938140405	18,5152335829	4,0266500749	2,1732414127	1,6667783657	22,9659833
+Aug-78	1988-08	1,1667404566	0,6945382075	1,6092596974	0,512318294	0,2894001544	0,0142288185	3,66160018	1998-08	8,7852534825	-0,4570720937	10,5711010498	1,7191287204	0,9397502918	2,3438301682	11,99251123	2008-08	11,9111502956	1,8732859578	17,6464453107	4,3795683008	2,3331202729	1,5182407613	22,04485494
+Sep-78	1988-09	1,2889987669	0,5525505142	1,7422434224	0,4926269636	0,2980510907	0,0361034054	3,808613975	1998-09	7,6641355282	-0,4715741292	9,3920348576	1,6566594907	0,9776307368	2,1610827479	12,06462339	2008-09	10,2935792159	1,6842676364	15,6132217443	4,1950069549	2,4159149644	1,357103727	18,91252639
+Oct-78	1988-10	1,4403355247	0,3913623943	1,7789077386	0,5102100231	0,3029386868	0,1438064668	4,259604166	1998-10	8,3567340164	-0,5225466938	9,3746327199	1,7262543929	0,9983380286	2,3724939309	13,6049372	2008-10	8,6792170939	1,3789580099	13,0640540276	4,3819242486	2,4624205547	0,7887905835	15,26078059
+Nov-78	1988-11	1,4296684677	0,6324911943	1,7520358697	0,5454386638	0,3076357684	0,2076095951	4,664626409	1998-11	9,3008761376	-0,3990017701	10,6749741469	1,8653551123	1,0207094845	3,1461385333	15,10535748	2008-11	8,1675729022	1,4886124641	11,795914177	4,7784841475	2,5250668443	0,7872157099	14,74849581
+Dec-78	1988-12	1,5534721341	0,6210528878	1,926942192	0,5632364796	0,3123155001	0,2207142406	4,520038558	1998-12	9,2898142184	-0,4184774122	10,6102503266	1,9332821989	1,0363763091	3,2945332521	15,35234889	2008-12	8,5058959727	1,7669898739	12,2763679933	4,9665968688	2,5581846062	0,7633318479	14,72189226
+Jan-79	1989-01	1,5170101382	0,3859753117	1,987813724	0,5809899679	0,3199816409	0,2185043711	4,574677241	1999-01	9,6479816455	-0,5359451336	10,7904877012	2,0206083485	1,0808814083	3,4044423269	15,29066349	2009-01	7,4787059425	1,6308037354	11,1073288211	5,1951073817	2,6531374961	0,6601458081	12,8848177
+Feb-79	1989-02	1,5461910329	0,1850533761	1,8725194827	0,637038792	0,3547187175	0,306076002	4,647605801	1999-02	9,4154247203	-0,6230051581	10,1253123375	2,2438736803	1,2024212244	3,5371275457	15,15098852	2009-02	6,6234662218	1,6783597923	9,4630995036	5,8267006549	2,9397092794	0,5212687611	11,61209933
+Mar-79	1989-03	1,6667939958	0,2194814289	2,0330061294	0,6594539147	0,3861701707	0,2779511039	4,365598835	1999-03	9,5020702115	-0,6076621416	10,3895507353	2,3230020028	1,3022383067	3,6276001027	15,13466638	2009-03	7,3043905429	1,6825144928	10,4668058822	6,0587800591	3,1941262529	0,3436348172	12,0525948
+Apr-79	1989-04	1,7729819403	0,2187562377	2,2139076162	0,6793531634	0,438765146	0,3083173845	4,502014051	1999-04	10,6547956945	-0,6058411805	11,6111562609	2,3999092104	1,4843696897	3,765832596	15,80775285	2009-04	8,8722656496	1,6010822912	12,4648029384	6,2943584913	3,6778646773	0,619152729	13,65753136
+May-79	1989-05	2,0063206734	0,0523589602	2,2895227557	0,7769605643	0,4620936557	0,4293900922	4,454007429	1999-05	10,4504377687	-0,7048122599	11,0149184411	2,8068993269	1,5714604594	3,9668806896	15,45416847	2009-05	9,8012557536	1,4788545016	12,9521818238	7,5474078462	3,9039981776	0,9080180742	15,39215359
+Jun-79	1989-06	2,2074510285	-0,0667632917	2,6850330783	0,8219679081	0,5507826497	0,4712413308	4,225872424	1999-06	11,3284656105	-0,8400927998	12,3731305168	2,9799923532	1,8825965311	3,8813125098	15,73671712	2009-06	9,5986212909	1,2755891771	13,3695409481	8,0917518319	4,7561712616	0,9352305959	14,81555822
+Jul-79	1989-07	2,2759869159	-0,0984581402	2,9257547635	0,8148312679	0,6173771751	0,5287440125	4,819455547	1999-07	10,2001430192	-0,9008941609	11,9751537488	2,9009118287	2,0951842155	4,1273113434	15,54276244	2009-07	10,4098355766	1,0670479892	14,906665467	7,833272766	5,3654699894	0,9932315106	16,10501689
+Aug-79	1989-08	2,3401932985	-0,1537592784	2,9136435772	0,7573746939	0,6405678193	0,5424296353	4,431942444	1999-08	10,4673976336	-0,913534586	11,8158694593	2,6547026089	2,1823634155	3,6912167847	14,83178823	2009-08	10,579198131	1,050761946	14,2905697762	7,0430026218	5,6100837601	1,1088117579	16,10485841
+Sep-79	1989-09	2,2818888434	-0,3469469097	2,8903164192	0,7396206548	0,6457404499	0,5410314994	4,460167369	1999-09	10,1776789093	-1,0134837821	11,1864689124	2,5831720377	2,2050053999	3,6335217109	14,30265268	2009-09	11,0548827418	0,7108330561	14,7344764992	6,8012181126	5,6585179663	1,2223701061	16,40283438
+Oct-79	1989-10	2,2164734834	-0,4292109741	2,6019649285	0,7784103254	0,6495427361	0,6230186883	4,712359654	1999-10	11,6939920089	-0,9545216082	12,0267501893	2,7521443454	2,2275849146	3,8104984272	16,47678095	2009-10	11,084113203	0,576534017	13,9009621464	7,3107336677	5,708772342	1,4615301015	17,51569801
+Nov-79	1989-11	2,4348868506	-0,3576247736	3,0165609023	0,84016715	0,7174848093	0,6128589922	4,762340897	1999-11	12,4530065312	-0,9998406517	13,3713427059	3,005935402	2,4912624146	4,2994592313	16,41191278	2009-11	11,4747251708	0,7987524318	15,2291179252	8,1314121459	6,5115959225	1,6038037318	17,70708004
+Dec-79	1989-12	2,9959388916	-0,481453109	3,4659669702	0,8201796946	0,7383619505	0,6019791128	4,788164472	1999-12	15,1967369602	-1,1396458475	15,555498716	2,9186454636	2,5753203463	4,2882994737	17,34567634	2009-12	12,4217922542	0,3588504871	15,9007863733	7,8440909844	6,7634536965	1,5694049993	17,51024653
+Jan-80	1990-01	3,0626281228	-0,7584125359	3,6566059301	0,8386801405	0,7350422071	0,5056729757	4,16078877	2000-01	14,8637603728	-1,3233619295	15,6208969574	3,0105655482	2,5738133193	4,1794547653	15,22426627	2010-01	11,5615235917	-0,4069352481	15,3563586562	8,1423490379	6,7616458659	1,5710099126	15,64916926
+Feb-80	1990-02	2,929059051	-0,7297965431	3,5921803163	0,9310236009	0,7518240631	0,4112871227	3,926833559	2000-02	16,2352546109	-1,2731935387	17,260359098	3,3884832158	2,6176989348	3,8721771454	15,26373631	2010-02	11,2040116912	-0,4030531617	15,1814614688	9,3405306394	6,8525827678	1,3900511334	15,89229571
+Mar-80	1990-03	3,6961053743	-0,6401963465	3,9282718864	1,1513946978	0,8848046862	0,6615251534	4,204964298	2000-03	17,7622939368	-1,2015668052	16,7413102794	4,4064265707	3,1681729237	4,7260075034	18,59943835	2010-03	13,7240403795	-0,0380200086	16,2855242071	12,9044310951	8,5861267134	1,999188965	19,26112855
+Apr-80	1990-04	3,1207440574	-0,6211144246	3,9608993322	1,1550945503	0,9562255554	0,7164500874	3,786443673	2000-04	16,5534406972	-1,17245253	17,6176152446	4,4109850731	3,4738134697	4,9944937457	16,53323062	2010-04	13,1136699647	0,1753341731	17,7675720517	12,9077494869	9,593462162	2,2716299322	17,94982912
+May-80	1990-05	3,0534794275	-0,6257409603	3,9100612443	0,9227952545	0,9537306555	0,7160228141	4,058426014	2000-05	15,2432928126	-1,1649155437	16,6622018992	3,3214694089	3,4597579546	4,5818082163	15,23484167	2010-05	12,183530022	0,3113639274	16,6765954954	9,0517154926	9,5153597294	1,886097456	15,21384372
+Jun-80	1990-06	3,0209737407	-0,752030253	3,9072684673	0,8861039323	0,8800643042	0,6630539876	3,772972724	2000-06	14,2940737018	-1,2297518466	15,6050469319	3,1381391077	3,1118549031	4,4147249268	14,98171742	2010-06	11,8090409234	0,0246679462	16,1329324804	8,46563584	8,37984498	1,5601399107	13,85944647
+Jul-80	1990-07	2,9827165244	-0,7748940803	3,9127573327	0,849942403	0,8145257471	0,5707383836	3,664569763	2000-07	14,470500479	-1,2706923093	15,2918765881	2,9626163049	2,8123569131	4,176833767	14,01232462	2010-07	11,8084313447	-0,1722182961	15,9351266328	7,9088217815	7,430690615	1,3947771908	14,61693273
+Aug-80	1990-08	2,4146844537	-0,7085660361	2,9755618149	0,8264328457	0,7509976905	0,3562263761	3,101354659	2000-08	14,919048692	-1,2662202818	14,5317812299	2,8816775882	2,5676321578	4,0936883065	14,19761174	2010-08	11,620860947	-0,0909330104	14,7582817869	7,6364059005	6,6557425157	1,3309630575	13,67839037
+Sep-80	1990-09	1,7317556353	-0,7656636284	2,3181263124	0,8814309069	0,7329927523	0,2346154894	2,508874043	2000-09	13,9530145189	-1,3029687008	13,8531444572	3,1338305145	2,5089713559	3,9031196182	12,8975754	2010-09	12,3192780866	-0,145042631	16,1010367119	8,4606021603	6,4869984053	1,3793545189	14,6185659
+Oct-80	1990-10	2,0494845764	-0,7715441528	2,6242681314	0,9184383893	0,7675014172	0,1510024873	2,741630956	2000-10	15,0660004693	-1,2929112702	13,7998671202	3,3204844863	2,6732118522	3,5022923627	12,24204175	2010-10	13,6130507351	0,0018626408	17,1808742497	9,0558697551	6,9732047371	1,4625910424	14,73887078
+Nov-80	1990-11	2,0339728694	-0,7253257149	2,7388965288	0,9906245795	0,8378425827	0,1472812047	2,519631548	2000-11	13,2147183554	-1,2656648765	13,0817546378	3,6099408476	2,9360140693	3,2950404908	10,87274844	2010-11	13,636179666	0,1886694388	17,8451181385	10,0182903851	7,7878627161	1,4421504266	13,732308
+Dec-80	1990-12	2,0120249648	-0,6976026569	2,5933896053	1,0390683885	0,8697159856	0,2569910686	2,690513283	2000-12	13,6867122287	-1,241320064	12,8321531837	3,8001674914	3,0416019999	3,2476834459	11,34086596	2010-12	14,5205003231	0,3229996358	18,3746609766	10,6904223953	8,1408757984	1,649436841	15,23967733
+Jan-81	1991-01	2,1501339874	-0,6372058646	2,6682509424	1,0868239828	0,9045135817	0,2551449328	2,962766834	2001-01	14,9623511324	-1,1973102037	13,8936941856	4,0252039097	3,1952509498	3,3155234353	11,99599272	2011-01	15,3383410067	0,4496344619	19,2285646474	11,424656976	8,5894231688	1,8204645437	16,15735776
+Feb-81	1991-02	2,4485967095	-0,5980690529	3,1000443479	1,2686944341	0,9475335754	0,5153162298	3,343857214	2001-02	13,518268001	-1,1480036792	13,1822885917	4,9106897539	3,3778615204	3,4134613785	10,79905168	2011-02	15,8069212489	0,7522505942	20,0639507472	14,6825861916	9,1874225259	2,1006405144	16,72439364
+Mar-81	1991-03	2,2905608642	-0,5887780256	3,0349436783	1,3714137256	1,0844891361	0,5161980015	3,054569511	2001-03	12,1467182514	-1,1339349549	12,6108770379	5,4104525224	3,9770766397	2,8108063987	9,58442387	2011-03	14,6919597801	0,862923083	19,6029665485	16,5884824243	11,2120899744	1,8940075829	15,89701828
+Apr-81	1991-04	2,3323231005	-0,589044335	3,0860171038	1,3298508796	1,0991318924	0,5517050427	3,088701428	2001-04	12,5498690331	-1,1345137348	13,0664756936	5,1627901016	4,0191700857	2,7993964663	10,39725302	2011-04	15,0685166079	0,9928014753	20,0355175024	15,6195933737	11,3650304573	1,9486845949	16,64324154
+May-81	1991-05	2,6482202549	-0,566512388	3,1335391177	1,4501934174	1,1649970706	0,5906801463	3,27410903	2001-05	12,5679497487	-1,0885768781	12,2704145013	5,8060928241	4,3393378952	3,2195428398	10,47667672	2011-05	14,9782583755	1,1849954652	18,7973005484	18,1755238227	12,5121222437	2,0750476644	16,63354381
+Jun-81	1991-06	2,1840401317	-0,5154559796	3,0677852352	1,4491837015	1,2133304683	0,5937783304	2,993146549	2001-06	11,3980723363	-1,0669207015	12,9768572362	5,8062400439	4,5816173061	3,1106923887	10,10642348	2011-06	13,930887989	1,3575707738	19,3701676182	18,1774618259	13,4052176374	1,9440125776	16,35995373
+Jul-81	1991-07	2,1252251886	-0,4179392554	2,7597049708	1,4431076233	1,2163221724	0,6637026553	3,263984013	2001-07	10,7938890915	-0,9887720701	11,686309034	5,8182251355	4,6386286789	3,1717934309	10,15104001	2011-07	13,241016131	1,8833246687	17,4078604582	18,1898069843	13,5852472589	2,2128877441	16,33610905
+Aug-81	1991-08	2,2723362897	-0,4440591346	2,7238031963	1,4961329897	1,2494987608	0,7165899903	3,339883342	2001-08	9,6350369494	-0,9723497237	10,3406537632	6,0953916346	4,7930201511	3,091543972	9,806634252	2011-08	10,6189309489	2,3394999823	13,8728871064	19,3039408478	14,1422338064	1,7767934879	15,38171075
+Sep-81	1991-09	2,4130723531	-0,5210977897	2,6953360966	1,4785533263	1,265977936	0,9171016483	3,851917084	2001-09	8,34144247	-0,9932056748	8,9297019527	5,9658186915	4,8466282929	2,9861157386	9,64233097	2011-09	10,7864820154	2,0646150389	13,1623638039	18,7409083817	14,3191789639	2,1282133253	15,16129269
+Oct-81	1991-10	2,3835220787	-0,4815987691	2,8615880399	1,3859817743	1,184713171	0,8937674601	3,779295398	2001-10	8,9980521079	-0,9735477265	10,0840782721	5,4503816209	4,4276735208	3,1024766514	9,513865042	2011-10	12,3647423241	1,8713637173	15,8434930989	16,6336033721	12,7340426532	2,2173727982	16,35312777
+Nov-81	1991-11	2,2234120708	-0,4318645321	2,836317963	1,3138042004	1,1569158851	0,8325634463	3,216366253	2001-11	9,6219200253	-0,9408017338	11,054117586	5,0920528146	4,310179483	3,2459033152	9,358808507	2011-11	11,7753315829	2,2702070143	15,7064090063	15,1970082053	12,273617189	2,2040604312	14,68389578
+Dec-81	1991-12	2,3626439901	-0,4178114597	2,7103396173	1,2698175589	1,1111443376	0,8390011375	3,648045505	2001-12	10,3582161223	-0,9464977715	11,0106697016	4,8452931625	4,0695304891	3,300416795	9,643724815	2011-12	11,7621716403	2,1007356831	14,7368025987	14,2939310925	11,448370492	2,2541246897	15,01942535
+Jan-82	1992-01	2,5285195886	-0,3753033246	3,0345050139	1,2951720982	1,1133972885	1,1242113091	3,626171554	2002-01	9,9723937851	-0,8757765885	11,3505085509	4,9726656371	4,0797586579	3,5666350777	9,464754127	2012-01	12,7319293811	2,3971307936	16,7925331239	14,7547864692	11,4637083439	2,6990407439	16,12745368
+Feb-82	1992-02	2,6049851413	-0,3578271434	3,0943993836	1,267193894	1,1020184288	1,1564393208	3,843883909	2002-02	9,6762418194	-0,818093624	11,0193742915	4,85702439	4,0505458767	3,506802337	10,06505775	2012-02	13,4338302164	2,7360629538	17,4430530695	14,3041366519	11,3497524546	2,9892593125	18,20059551
+Mar-82	1992-03	2,443195593	-0,2631575522	2,9433019315	1,1942211734	1,0628157136	1,1865684659	3,729980981	2002-03	10,1706980282	-0,721481949	11,3329932781	4,5117317186	3,8836174445	3,8901623675	10,90304221	2012-03	13,2365721539	3,1454315867	17,196557906	13,0242359637	10,7718927413	3,2344342574	19,00452014
+Apr-82	1992-04	2,4764585405	-0,3443542423	2,8488852894	1,0806413859	0,9586600259	1,0718392138	3,553087878	2002-04	9,4011918198	-0,7461114388	10,5104523631	3,9867130915	3,4293208507	3,4356377484	9,911140256	2012-04	12,8412574928	2,7779934646	16,493756621	11,1260048199	9,2153036104	2,989265817	17,80019708
+May-82	1992-05	2,6660848746	-0,2952603981	3,0196101765	1,0463004426	0,9142415275	1,1409805484	3,882679705	2002-05	9,0077624297	-0,6573911508	10,2548476747	3,8011691664	3,2103432556	3,3426897399	10,23899031	2012-05	11,879659067	2,8301681791	15,3422541003	10,4525772336	8,469504171	2,8948954581	16,59442644
+Jun-82	1992-06	2,6321447696	-0,2123833289	2,928532243	1,1409310624	0,9287422255	1,2805852423	3,949447723	2002-06	8,2340723144	-0,5637153956	9,4841645747	4,2184029628	3,2495156004	3,3995085849	10,04973887	2012-06	12,4849988449	3,1761201068	15,699491374	11,8940359602	8,5735793174	3,2097331375	18,45079548
+Jul-82	1992-07	2,2994897123	-0,2512006021	2,6636681281	1,1851811351	0,9900130466	1,3385038972	4,02664623	2002-07	6,6515661861	-0,6521122461	8,3689948353	4,4358459719	3,5241184932	2,8913472478	9,20610246	2012-07	13,1765280424	2,8241581314	16,7109884509	12,6646504095	9,4684415695	3,3999668649	18,96142197
+Aug-82	1992-08	2,1641039021	-0,3512821752	2,413069336	1,1167229734	0,9833982128	1,3449134888	3,78086708	2002-08	6,7541384401	-0,7298414338	8,2059507978	4,1162690408	3,5027881422	2,9146571495	8,488310416	2012-08	13,7506143447	2,5716001776	16,8952230374	11,5121978735	9,3944509491	3,5237343407	18,02710301
+Sep-82	1992-09	1,8507742611	-0,5026622401	2,3222310273	1,0372889941	0,9143053524	1,0781124792	3,713077857	2002-09	4,353378168	-0,8512121687	6,1571204532	3,7231381005	3,1769882079	2,2560568009	7,343033928	2012-09	13,5592485065	2,0754605643	17,6059253932	10,1282577207	8,3087720794	3,088910573	18,46787825
+Oct-82	1992-10	1,9572722582	-0,4716348383	2,18804402	0,9798375936	0,8696545061	0,8667753628	3,266096824	2002-10	5,2832366362	-0,8196562864	6,6329327582	3,4528469341	2,9758513914	1,9195071605	7,388782313	2012-10	13,889273363	2,2403288792	16,9238842794	9,191924416	7,6428626531	2,7095619206	17,03575473
+Nov-82	1992-11	1,9940917098	-0,4802210194	2,2881462057	0,9583233581	0,7896438371	0,82607131	3,110363445	2002-11	5,4972946444	-0,7882315365	6,9746842766	3,3741945783	2,6607138907	2,0043001881	7,402528801	2012-11	13,8525470799	2,272187337	17,4611924172	8,9015171574	6,63690669	2,4167226639	16,32058753
+Dec-82	1992-12	1,7654999719	-0,533430964	2,1938084863	0,8992989946	0,7329546558	0,8636398996	2,953875498	2002-12	4,1439330886	-0,8194098601	5,8950690396	3,1014705871	2,4175139441	1,9113857381	6,590276709	2012-12	13,1486590826	1,9084969987	17,4402638159	8,0479590063	5,9376441432	2,4519710852	15,86006561
+Jan-83	1993-01	1,8497818457	-0,61035089	2,0493871588	0,8722671625	0,689110787	0,7754190878	2,869265087	2003-01	3,9310942039	-0,8223967598	5,18588826	3,0231530885	2,2803813664	1,7785024666	6,180635613	2013-01	13,6759976672	1,5980647466	16,8665664068	7,7929171802	5,532205752	2,4853098913	16,37517006
+Feb-83	1993-02	1,8371921529	-0,6342856168	2,2920923816	0,8638079471	0,687913148	0,7568672614	2,869211537	2003-02	3,1790298487	-0,8386213495	4,817991492	3,018918638	2,3043182138	1,4814191689	5,88340733	2013-02	12,5495677524	1,4277379755	17,0477095231	7,787989114	5,6092457301	2,4674304839	16,0213127
+Mar-83	1993-03	1,4719331141	-0,5232631009	2,1052299376	0,8188173973	0,6351490954	0,712813845	2,952459107	2003-03	2,4273828177	-0,7609821808	4,1332781746	2,8495664032	2,1191358399	1,3894420964	5,601200416	2013-03	10,9767618818	1,8934913051	15,8211860098	7,2606226409	5,0804364138	2,4056736766	15,80276239
+Apr-83	1993-04	1,206826013	-0,5181780773	1,6852852093	0,8382445061	0,5772649431	0,6162503912	2,850545257	2003-04	2,9790204655	-0,80944236	4,4552709069	2,9364556224	1,9086089209	1,4605374185	5,720708923	2013-04	10,3468383976	1,5485780352	14,1442972135	7,5215910476	4,4810794596	2,3416772335	15,15381862
+May-83	1993-05	1,3622046895	-0,4660918766	1,5409476218	0,8601478292	0,6039558676	0,5613122489	2,988273984	2003-05	3,318307605	-0,7445511832	4,226175965	3,0290754055	2,0088265542	1,5262619811	6,217622621	2013-05	11,7703922249	1,361284594	13,9289006419	7,7882572312	4,7368041324	2,3791039964	15,33540963
+Jun-83	1993-06	1,3285920233	-0,4050699203	1,7572585845	0,9401035689	0,720922185	0,550136025	2,820320818	2003-06	3,4381324644	-0,6947714245	4,8941739621	3,3728482138	2,4568237997	1,6573461822	6,107860329	2013-06	10,5229437648	1,3750771353	14,0250273188	8,9084081222	6,0345211795	2,2704798041	14,40272343
+Jul-83	1993-07	1,3739583526	-0,3763829151	1,802181264	0,9414133815	0,7445360012	0,5490253328	2,980617152	2003-07	3,6255021643	-0,7243545575	4,9724743545	3,377221312	2,5500208311	1,674337838	6,40354102	2013-07	10,4160097908	1,1642838773	13,8637193445	8,9087100897	6,3001266468	2,3987068449	15,55532908
+Aug-83	1993-08	1,782514788	-0,3890722757	1,889183922	0,9847670515	0,7788829301	0,6334647515	3,152882913	2003-08	3,9741310253	-0,6889717732	4,8248631868	3,5619729087	2,6819051568	1,7558524818	6,529946597	2013-08	10,9780518292	1,3602530422	13,1656705441	9,5177483933	6,694127885	2,5344623391	15,09422074
+Sep-83	1993-09	1,6613671743	-0,4330540225	2,0266056201	1,0115591134	0,8039511073	0,6106292618	2,987392156	2003-09	3,4795074779	-0,6283826819	4,847572472	3,6594979915	2,7638025473	1,7678308759	6,418832643	2013-09	11,3957761236	1,4011746585	14,8108586261	9,8346943129	6,9341935868	2,4698426055	15,58127538
+Oct-83	1993-10	1,6405603086	-0,3710627188	2,2184578814	0,9714212251	0,8051463182	0,6232250855	3,156382175	2003-10	3,6400544689	-0,5844735178	5,3205874558	3,4756543821	2,7651574187	1,8355705655	6,984782322	2013-10	10,9498034404	1,4689763951	15,2887516807	9,2171753223	6,9390471773	2,5706276023	16,46997727
+Nov-83	1993-11	1,5599769559	-0,3128476765	1,9732973205	0,9715062766	0,803321342	0,6505741462	2,796630052	2003-11	3,6582896113	-0,5133867955	4,9761599488	3,4842045637	2,7658672406	1,9484489768	6,901492314	2013-11	11,1855793865	1,4927164059	14,7116706754	9,2222266347	6,9199609163	2,8278134297	16,32675105
+Dec-83	1993-12	1,8311056139	-0,3066852392	2,1518942897	0,9920881248	0,8186475315	0,6749163094	2,940262625	2003-12	3,919927172	-0,4968305192	5,1527595187	3,5661095569	2,8190971739	2,0655584698	7,300835302	2013-12	11,305821707	1,2829048742	14,712553707	9,5241641607	7,1098109608	2,9146704199	16,46461847
+Jan-84	1994-01	1,5884097855	-0,252595817	2,0519570954	0,9895937932	0,8123122969	0,6844210364	3,177409693	2004-01	3,8373128049	-0,4222728126	5,315621999	3,573172631	2,8102983167	2,204472932	7,371068701	2014-01	10,4826030815	1,5045537915		9,5407602899	7,0772778354	2,922407789	15,65363966
+Feb-84	1994-02	1,6136058591	-0,3129449246	1,8222741459	0,9437714227	0,7883727919	0,7910808159	3,186152779	2004-02	4,0629614226	-0,488997837	5,0309328692	3,3940864247	2,7347174181	2,4599893831	7,669766725	2014-02	11,6601628579	1,5158690127		8,9349189773	6,8356636379	3,1898617414	16,82631568
+Mar-84	1994-03	1,6551112439	-0,3299367909	2,0064665402	0,9224062411	0,7439029614	0,7511591956	2,796744965	2004-03	3,8048732449	-0,5145080609	5,1081742958	3,2999182809	2,5538649298	2,3666524224	7,19288516	2014-03	11,3974669405	1,5327983006		8,6391532726	6,2991373231	3,287669476	16,01199965
+Apr-84	1994-04	1,7627125498	-0,3117847387	2,1560948726	0,9224234792	0,7476562995	0,6821781719	2,936938661	2004-04	3,8904762191	-0,4871080941	5,2639408676	3,2942099071	2,5631186148	2,3950608828	7,039803	2014-04	11,2534878961	1,5532664983		8,6389273972	6,3438506769	3,2909668114	16,25749351
+May-84	1994-05	1,7132063127	-0,292403942	1,956318786	0,9413312633	0,7500650956	0,7143980681	3,288503379	2004-05	4,0136473543	-0,528658756	5,1191507433	3,3842875681	2,5795899367	2,3033459028	7,816729698	2014-05	12,2556177153	1,5745434679		8,9385468199	6,3976464165	3,4002632031	18,1119653
+Jun-84	1994-06	1,473421796	-0,2832665342	1,9573800898	0,942543501	0,7606608097	0,7787517755	3,235402689	2004-06	4,0108996523	-0,5089214688	5,5320553553	3,3869898511	2,6200638181	2,500067308	7,926662574	2014-06	11,6341585209	1,5329180943		8,9384101631	6,5115423544	3,6885014248	18,28847622
+Jul-84	1994-07	1,8141494465	-0,1987651555	1,9799206764	0,9377358416	0,7596175778	0,7880036477	3,482821001	2004-07	4,1167429103	-0,4023698454	5,0936955706	3,3828940605	2,6311705879	2,4739406248	7,942939529	2014-07	11,830139049	1,9261446749		8,9321778695	6,5513564883	3,85453842	18,67118376
+Aug-84	1994-08	1,7212461746	-0,2190963963	2,2360505895	0,9124685391	0,7470690983	0,6678384735	3,169892284	2004-08	3,6352003823	-0,4034795488	5,2826370423	3,288527304	2,5950739987	2,0983319818	7,112064143	2014-08	11,1273726513	1,8741730835		8,6359390404	6,4542798139	3,3858164019	17,20859551
+Sep-84	1994-09	1,2633645593	-0,1612070172	1,8135633747	0,8563658538	0,7208496803	0,6667788678	3,070340982	2004-09	3,4260278035	-0,3626048629	5,0618602979	3,0345209147	2,4784930828	2,1688549306	7,30824991	2014-09	10,2563229852	1,7827840781		7,8066003916	6,0949262688	3,4354301218	16,75862718
+Oct-84	1994-10	1,2909837347	-0,1524198105	1,688411828	0,8271846981	0,6812087759	0,683057371	3,155099123	2004-10	3,4084560224	-0,308097543	4,7514157771	2,8792129508	2,2931790519	2,1961357403	7,433315265	2014-10	9,8184911439	1,7531183757		7,3055913244	5,5402980336	3,3700464463	16,68898788
+Nov-84	1994-11	1,2422368355	-0,171665353	1,5966037392	0,7901424753	0,6501631763	0,6520331734	2,977378513	2004-11	3,5821999724	-0,2482017962	4,9233794274	2,7296790117	2,1776147707	2,3405118889	7,944000437	2014-11	10,5428244657	1,6120061864		6,8251996468	5,1915496757	3,6471193837	17,13417737
+Dec-84	1994-12	1,2517035744	-0,113088979	1,6441452218	0,7499946036	0,6141064507	0,6460661019	2,926469297	2004-12	3,6059327626	-0,164272826	5,0415342913	2,5615891381	2,0353521327	2,4836756201	8,085585126	2014-12	10,044213918	1,9208447599		6,3622089948	4,8331626471	3,7652413317	16,44810109
+Jan-85	1995-01	1,0400407393	-0,0474145615	1,4797331737	0,7711501085	0,6024933849	0,6051062979	2,646278424	2005-01	3,392558255	-0,1287878901	5,004855518	2,658327572	2,0043854581	2,2796780175	7,398077199	2015-01	10,5630744819	2,3180579175		6,6183877972	4,7155137809	3,5282447015	15,20840522
+Feb-85	1995-02	1,0999845146	-0,043503978	1,4682164995	0,8284829495	0,6501584791	0,5734041666	2,694779973	2005-02	3,4335014599	-0,1191450662	4,8823493774	2,893415346	2,1832837329	2,1359177716	7,660773773	2015-02	11,193585504	2,2870626091		7,3368338116	5,2144779521	3,385928739	16,15843804
+Mar-85	1995-03	0,8455978221	-0,0361152594	1,2275910065	0,850432987	0,6959348806	0,6364493894	2,748133939	2005-03	3,3096388738	-0,1005973627	4,8039749375	2,9704403143	2,3455109526	2,133071138	7,178110851	2015-03	11,5087162411	2,0770697529		7,5865201289	5,6897656812	3,4077466448	15,28705625
+Apr-85	1995-04	0,8673300837	-0,0896098438	1,3000496926	0,7939031054	0,6790413033	0,6850133431	2,900481858	2005-04	2,9580221801	-0,2080622144	4,5181477344	2,7353917582	2,2795033514	2,0128347141	7,018722459	2015-04	10,4627161927	1,8695702512		6,8414948182	5,4840444556	3,4221090204	15,73153326
+May-85	1995-05	0,747050128	-0,0754740395	1,3099260981	0,7573237673	0,6443781935	0,704171521	2,729530842	2005-05	2,8206614052	-0,192296428	4,6560189633	2,582867598	2,1428861783	1,9884234382	6,749360574	2015-05	9,3145285959	1,9702546061		6,382023974	5,0961973964	3,3385933579	14,94582625
+Jun-85	1995-06	0,6019632957	-0,0712094969	1,1183183832	0,7350467559	0,6107678157	0,717860665	2,653045167	2005-06	2,645304051	-0,1727989242	4,3168510714	2,5042745624	2,0261799443	1,9876679396	6,670520771	2015-06	8,1567418023	1,922602201		6,1597220817	4,7798383572	3,1956806587	14,27266203
+Jul-85	1995-07	0,8182073379	-0,084154817	1,073524932	0,6934930708	0,5747365115	0,7452507293	2,760900031	2005-07	3,1282221676	-0,2010895857	4,2647950773	2,3527145205	1,9039416506	1,9627119089	6,775721991	2015-07	8,9844771417	1,7477425696		5,7283487076	4,4560186404	3,0942566223	14,22395158
+Aug-85	1995-08	0,662437691	-0,1435710507	1,1708092826	0,6535789652	0,526676406	0,7920679294	2,633269396	2005-08	2,698481939	-0,2211922706	4,4571584609	2,2059742696	1,7366284568	2,0280366141	6,763226415	2015-08	7,1925862139	1,5586939725		5,317222346	4,0148139711	3,0829416991	13,04158363
+Sep-85	1995-09	0,5059375225	-0,1213603881	0,9328919559	0,6191598253	0,4927332025	0,9183038862	2,718000137	2005-09	2,6243871777	-0,1420057108	4,2154785186	2,0682517782	1,6095951686	2,0773889856	6,910434851	2015-09	6,1704019901	1,6496575236		4,9358591886	3,6874015439	2,9823707439	12,39368537
+Oct-85	1995-10	0,2806504527	-0,1240984399	0,7599480664	0,6595885624	0,5025835657	0,9147825229	2,456465795	2005-10	2,0432065349	-0,1072533824	3,7246404441	2,2043378944	1,6283852326	1,9442645458	6,287127449	2015-10	6,0836938868	1,7250199492		5,3202056964	3,7346318656	3,1464916661	12,73311522
+Nov-85	1995-11	0,3761367623	-0,1122063614	0,5676160656	0,6813474542	0,5431954371	0,8443014539	2,384086816	2005-11	2,3332039757	-0,0732951292	3,3547904693	2,2849121624	1,7705407312	1,9184707511	6,133031467	2015-11	6,6680901257	1,5280307877		5,5278377786	4,0908370768	3,0230007926	11,90958722
+Dec-85	1995-12	0,1741903319	-0,0958354937	0,6371795362	0,6418306254	0,5412223194	0,8118572114	2,317899352	2005-12	1,9879386385	0,0347740995	3,6315461307	2,1379012836	1,7667504665	1,8339250436	5,942738029	2015-12	5,2089871032	1,504356246		5,1359843487	4,1088294861	2,765368071	11,07412978
+Jan-86	1996-01	0,3204312776	-0,145454164	0,5595141799	0,6240505025	0,5242907126	0,7955942179	2,328819907	2006-01	2,1829757634	0,0524633037	3,380904219	2,0809830258	1,7164093634	1,857050958	6,169902803	2016-01	4,6303582656	1,3764840057		4,9664884969	3,9669853173	2,4688582903	10,15266971
+Feb-86	1996-02	0,3528883877	-0,1123220723	0,5409190054	0,5991263296	0,4985455628	0,7824290943	2,041259748	2006-02	2,3439414953	0,0938841621	3,5186888509	2,0083514245	1,6443907335	1,6562683601	5,520238697	2016-02	4,5713970696	1,7252515257		4,7778910956	3,7898679629	2,2023166338	9,091487745
+Mar-86	1996-03	0,2200756509	-0,1658633929	0,5645444923	0,5424053926	0,4395000334	0,634898293	1,788587232	2006-03	2,1280839155	0,0597596721	3,7681527721	1,8127926998	1,4513146344	1,4824627811	5,031627606	2016-03	4,3215867745	1,7826309521		4,2361363398	3,2835345607	2,1583422633	8,782562727
+Apr-86	1996-04	0,1616280336	-0,1597569577	0,4094192562	0,4741038237	0,4045683415	0,5765377242	1,774908545	2006-04	1,978194446	0,2368782109	3,3683863339	1,5663389117	1,3290788057	1,3899146783	5,042609236	2016-04	4,089710482	1,8249644231		3,6029266979	2,9956811323	2,1396656086	8,666522773
+May-86	1996-05	0,3313022111	-0,1678438734	0,367523252	0,5410165642	0,3792420839	0,6150286506	1,78611157	2006-05	2,1265432697	0,4223963055	2,8839939552	1,8084589516	1,2497134673	1,3541603831	4,845676134	2016-05	4,8176458353	1,8615355749		4,2361154174	2,7876878481	2,1075131067	8,761838877
+Jun-86	1996-06	0,3697460965	-0,1915525448	0,5708438384	0,5556755801	0,3893610008	0,5889957114	1,678900622	2006-06	2,1800754542	0,1852268961	3,2870292863	1,866257158	1,286894225	1,1981193561	4,595565577	2016-06	4,548349827	1,8951215804		4,4038078135	2,8889837159	2,0394769927	8,245614554
+Jul-86	1996-07	0,3944589109	-0,2226653248	0,5237835474	0,531143838	0,3835179364	0,5473465611	1,542413563	2006-07	2,3746615623	0,2459825496	3,3520896423	1,7926843483	1,2807172965	1,2527774441	4,572988086	2016-07	5,3460947955	2,0057940651		4,2232977157	2,890865991	2,2398231962	8,572277813
+Aug-86	1996-08	0,2147475221	-0,2968058265	0,6524430283	0,493531328	0,3655467878	0,5597143579	1,338491497	2006-08	1,9771678003	0,1050873134	3,7103163619	1,6687201017	1,2310047371	1,253238589	4,227544173	2016-08	4,5802806358	1,7252800884		3,8913422748	2,7680571381	2,1978768495	7,748668701
+Sep-86	1996-09	0,39078122	-0,4088420849	0,4636977553	0,5115055346	0,3620057279	0,6522982383	1,558299159	2006-09	2,3154086642	-0,1352942385	3,2037826521	1,7314464607	1,2183338838	1,4327821627	4,539508029	2016-09	4,9611509438	1,3310901479		4,0483001693	2,7266377906	2,2914284109	8,191522512
+Oct-86	1996-10	0,3733692271	-0,4294771246	0,5668298326	0,5601743702	0,3703066142	0,7306790182	1,626308989	2006-10	2,4360717767	-0,1910113224	3,6417138483	1,9134226706	1,2499303317	1,5639347648	4,866660396	2016-10	4,9754220146	1,1451982676		4,5494632341	2,8088229801	2,2704813732	8,162637223
+Nov-86	1996-11	0,4300012657	-0,3750406663	0,6394831811	0,5788210894	0,3857468434	0,7624375636	1,666247627	2006-11	2,3232223423	0,0067447963	3,64933555	1,9806791238	1,2998804393	1,5319168549	4,761928771	2016-11	4,7242950465	1,2790100726		4,731559641	2,9293382164	2,1951728522	7,903408404
+Dec-86	1996-12	0,4722448062	-0,3874897546	0,598240546	0,5404033622	0,3804066919	0,7523842172	1,55680803	2006-12	2,5349592491	0,0252349906	3,7124800489	1,8428756219	1,284510512	1,5375381554	4,754441726	2016-12	5,3069752698	1,083623825		4,3653276246	2,9028439186	2,2775904687	7,928983458
+Jan-87	1997-01	0,8308077155	-0,4666583189	0,7238842252	0,5182413433	0,3706154417	0,6890017255	1,27924761	2007-01	3,2724963032	-0,0306140807	3,9381330391	1,7894266377	1,2774595859	1,3843564886	4,168953617	2017-01	6,3953698554	1,0807990974		4,2159681623	2,8835364376	2,1001958501	7,140822409
+Feb-87	1997-02	1,129579836	-0,4706317027	1,1362820995	0,5195680841	0,3360003154	0,6530748858	1,226130959	2007-02	3,4983180811	0,0805547507	4,5778206942	1,7851719356	1,1551561535	1,2428440192	3,9556062	2017-02	7,1005167485	1,2303515729		4,2094880822	2,586252204	1,9548014861	7,091865732
+Mar-87	1997-03	1,1555432666	-0,4738417293	1,4161515784	0,5014190833	0,32555779	0,5619094202	1,027895271	2007-03	3,4428708107	0,0221009826	5,1410709313	1,7198418673	1,1208874775	1,0436670575	3,727415056	2017-03	7,0949072495	1,1610360359		4,0397629101	2,5084487223	1,8705842627	6,665067816
+Apr-87	1997-04	1,1585540557	-0,5477328531	1,3261629986	0,4717180729	0,3079382412	0,5259086347	0,973718145	2007-04	3,7748760948	-0,0427917494	5,2867503044	1,5936625614	1,0448515257	1,1692382216	3,649904787	2017-04	7,1574243771	1,0302408299		3,721578558	2,3412190735	1,9068862656	6,31766213
+May-87	1997-05	1,2698696537	-0,5864647145	1,4408598643	0,4550982721	0,2881949157	0,7038813553	1,112506398	2007-05	4,1972491872	-0,1358924938	5,6151834849	1,5416998486	0,9884645219	1,2593649695	3,797847026	2017-05	7,4092464633	0,8557526094		3,5799834773	2,2034623617	1,9874200037	6,493223908
+Jun-87	1997-06	1,2442929402	-0,5757613282	1,6429226669	0,5026530231	0,2752088277	0,7242475274	1,233355846	2007-06	3,8689665023	-0,1256041311	5,7259425958	1,716892394	0,9539874291	1,151651046	3,759200711	2017-06	6,5500711567	0,9623606181		4,0447954612	2,1226228209	1,8968344546	6,527964146
+Jul-87	1997-07	1,4887007852	-0,6265912787	1,8190243241	0,5427359305	0,2699475802	0,7700719352	1,287674745	2007-07	3,2502775074	-0,1149450873	5,0055032525	1,8962551809	0,9656168311	1,0869368171	3,533738227	2017-07	5,8863374891	0,8914346773		4,5467699748	2,1604871865	1,8279043451	6,554819735
+Aug-87	1997-08	1,1113143659	-0,6453208624	1,2913354084	0,575111879	0,2930598182	0,6545163039	0,971793885	2007-08	3,2157409421	-0,1521703621	4,569726916	2,0247877884	1,0454401724	0,8360538745	3,246844455	2017-08	5,7346663277	0,9247079721		4,9042493672	2,3482549273	1,618042136	6,10033688
+Sep-87	1997-09	1,3449444803	-0,6471622689	1,4069830535	0,6104995372	0,3143377336	0,749173614	1,14098224	2007-09	3,4710018202	-0,0596363937	4,5906740368	2,1491119533	1,1038933523	0,9870107954	3,553759499	2017-09	6,425092095	0,9974830205		5,2787152134	2,5056203254	1,77953455	6,411918874
+Oct-87	1997-10	1,8054369368	-0,6471400699	1,2492467722	0,6503665864	0,3617111837	1,0773953536	1,495894448	2007-10	5,1741398673	0,0156468838	4,9450263529	2,2886089717	1,2468422766	1,4280778902	4,786194853	2017-10	9,3205866299	0,8877144723		5,6860706494	2,8602305163	2,4037653418	8,271546987
+Nov-87	1997-11	2,5450888179	-0,6876643866	2,083991918	0,5636636197	0,346988127	1,3963345112	1,620660546	2007-11	6,1413124376	0,1209991461	6,5019775567	1,9472645983	1,1883594201	1,673914295	4,678999435	2017-11	10,9608792432	0,8824037134		4,7182218846	2,7221316407	3,0939291534	8,750501368
+Dec-87	1997-12	2,9051036104	-0,7517124522	2,8139809912	0,5786799427	0,3103818277	1,512332562	1,529614679	2007-12	6,4528125324	0,0353668406	7,7892101826	2,0039855303	1,0687045218	1,7578016192	4,334975163	2017-12	11,0472665296	0,7281265632		4,8902835163	2,4401792979	3,3047341661	8,440117802
+Jan-88	1998-01	3,4065027166	-0,7340586512	3,0536063444	0,583745107	0,3077927919	1,4138894594	1,544312425	2008-01	5,7206488481	0,2555050892	6,7062453574	2,0157664719	1,0559152933	1,4142130561	3,766796175	2018-01	12,2471047965	0,9394743256		4,9104124886	2,401155022	3,3482582614	8,743311491
+Feb-88	1998-02	3,024382708	-0,6647498343	3,6654236358	0,5501245746	0,299985486	1,5037487217	1,571758545	2008-02	4,6464636727	0,4864332974	7,2019230759	1,8843643095	1,0253301851	1,2723778191	3,446284241	2018-02	9,6671852875	1,1649885577		4,5462311223	2,3297304512	3,0311746712	7,758780833
+Mar-88	1998-03	3,4609491567	-0,6709616346	3,3487578363	0,5329536027	0,280425155	1,5728307832	1,60572539	2008-03	4,5336539799	0,5767134634	5,8778378849	1,8123448863	0,9544242367	1,0913902294	3,246119298	2018-03	9,5176112892	1,1288737421		4,3638877632	2,1738867612	2,8887218195	7,275361413
+Apr-88	1998-04	3,5066497509	-0,6535033929	3,3838929131	0,5514902484	0,2772023099	1,7152144344	1,598644029	2008-04	4,9811513928	0,4102578336	6,2559163796	1,8799532651	0,9446102743	1,2362417862	3,442905408	2018-04	10,1000749305	1,0948528931		4,5377879543	2,1404353026	2,8627402158	7,269070657
+May-88	1998-05	3,8072728084	-0,6706631233	3,8282314878	0,607866606	0,2974899285	1,7906785867	1,624575395	2008-05	4,9406332409	0,3602077773	6,5017333422	2,0754116097	0,995518351	1,3620538278	3,626649761	2018-05	9,776326782	1,0302022575		5,0912959652	2,2658673947	3,0683356356	7,519620444
+Jun-88	1998-06	3,8353335246	-0,6885898125	3,9228029032	0,6053751895	0,3071457358	1,6285321251	1,696359288	2008-06	4,0132931145	0,3551508235	5,660581163	2,0709144524	1,029662357	1,0575773124	3,216393324	2018-06	8,9300452419	0,9787585277		5,0895771446	2,3563391927	2,9046526986	7,528021608
+Jul-88	1998-07	3,6302780124	-0,6709601037	3,7401671999	0,6183580747	0,3501443693	1,7802862846	1,630655314	2008-07	3,860160297	0,5283812819	5,2518926135	2,1301317052	1,1760518809	0,8940128023	3,005281065	2018-07	8,9719304219	0,9655914801		5,2790481697	2,728861473	3,0170227496	7,637211254
+Aug-88	1998-08	2,8086546419	-0,6798198073	2,8014193219	0,6376357667	0,3973636097	1,6286588148	1,385355859	2008-08	3,8891545695	0,3279099694	5,00194458	2,2007542941	1,3307029455	1,0179114452	3,205964434	2018-08	8,7394774773	0,9183176237		5,473253229	3,106873254	3,2448911947	8,303668189
+Sep-88	1998-09	2,2015503649	-0,6373411347	2,467727824	0,6054291725	0,4219767525	1,4532189533	1,324320099	2008-09	3,0314475274	0,371952781	4,4138022377	2,061944152	1,4003737712	0,8631470474	2,466575645	2018-09	7,8979313274	1,0222093803		5,0712003515	3,2803289759	3,2596078647	7,941646748
+Oct-88	1998-10	2,2590967456	-0,6020339108	2,3275813035	0,5738522531	0,4143324335	1,3960765021	1,387419213	2008-10	2,2170142041	0,3825582367	3,3675608314	1,9353821329	1,3675470433	0,3208197859	1,503446582	2018-10	6,9216927975	1,1103928844		4,6981829569	3,181196545	2,8941441949	6,66761294
+Nov-88	1998-11	2,6094659593	-0,6261842061	2,5264245057	0,5788956099	0,393755986	1,7708821441	1,457186516	2008-11	2,0596947704	0,2048102689	2,7074742974	1,9531672455	1,2988778022	0,245557775	1,22775369	2018-11	6,9536456569	1,0393909164		4,7082087312	2,9724121322	2,9277264939	6,489284265
+Dec-88	1998-12	2,4404303925	-0,6318457207	2,5794166284	0,5964680052	0,4033433835	1,8375223741	1,566987594	2008-12	2,0183661336	0,3516162369	2,9378838946	2,0143659657	1,3266201595	0,2150703555	1,287650825	2018-12	6,0831077962	1,1125677666		4,8919622721	3,0532868815	2,5847383008	5,795649619
+Jan-89	1999-01	2,6177255968	-0,6026374136	2,4800337139	0,6457436165	0,4379643783	1,9119394488	1,540740046	2009-01	1,7226775683	0,5385190575	2,4105879755	2,1709959981	1,4193343871	0,1572505736	0,97089823								
+Feb-89	1999-02	2,5033946067	-0,5670320207	2,2678575601	0,686921722	0,500410781	1,8262544378	1,487381504	2009-02	1,3990065146	0,8385973116	1,8999629336	2,3091977797	1,6170226949	-0,0140922003	0,729187773								
+Mar-89	1999-03	2,3846019369	-0,5745538317	2,322258156	0,7052836884	0,5493573689	1,9375709568	1,622548956	2009-03	1,5076762736	0,7921419386	2,176975888	2,3840102884	1,7948619635	-0,0932593877	0,919288553								
+Apr-89	1999-04	2,6259084604	-0,573471622	2,5553916506	0,6868889507	0,5595368158	1,9622346393	1,66919008	2009-04	1,9026816212	0,743908154	2,6323454962	2,3164572198	1,8362969259	0,0432792165	1,138439644								
+May-89	1999-05	2,2993224099	-0,5574573775	2,2550336662	0,7285421768	0,5799187737	1,8577921501	1,637293626	2009-05	1,9434174247	0,9284743949	2,6235747334	2,4700756099	1,9019472662	0,0967864725	1,464378684								
+Jun-89	1999-06	2,3440374377	-0,5947743734	2,3875821668	0,6893392995	0,601829929	1,7451360977	1,807025473	2009-06	1,6897002904	1,0042017244	2,4691415716	2,3195699831	1,9861436686	0,0728394214	1,479703911								
+Jul-89	1999-07	1,9697675197	-0,6300542014	2,0457593283	0,6639521442	0,5998510478	1,7921678071	1,475336801	2009-07	1,856437232	0,9156433206	2,5813903318	2,2480547175	2,0046449879	0,054401347	1,402710995								
+Aug-89	1999-08	1,9856897604	-0,6099921424	1,9764465431	0,6639479266	0,5910970743	1,543020384	1,539364187	2009-08	1,8395252327	1,0171274412	2,3901179517	2,2420668667	1,9660693024	0,1014536088	1,593657311								
+Sep-89	1999-09	1,9629022868	-0,577087098	1,7605114294	0,7052030904	0,6099081849	1,5176222685	1,438873568	2009-09	2,0270795926	1,1765754187	2,4127116786	2,3869625992	2,0211247128	0,1632077419	1,632247178								
+Oct-89	1999-10	2,4495800188	-0,4526441193	1,9398786137	0,7483106983	0,6513966495	1,4922815645	1,687281222	2009-10	2,1045986654	1,2728611082	2,1911421346	2,5397468221	2,1606628028	0,2135465942	1,688738562								
+Nov-89	1999-11	2,4345572395	-0,558642866	2,3379391898	0,8038959367	0,6917082657	1,7554345545	1,652073249	2009-11	2,0031738806	1,2921281044	2,6040371254	2,7792759835	2,3294173954	0,2979584635	1,701304289								
+Dec-89	1999-12	2,5819204396	-0,6118680089	2,6751667612	0,8026551579	0,7051011258	1,7661937301	1,790426304	2009-12	1,7553807674	1,1985467296	2,5645611113	2,7705944219	2,3779873327	0,2878668566	1,648988479								
+Jan-90	2000-01	2,4517264245	-0,6044065068	2,245961287	0,8338921675	0,7260104197	1,866493412	1,76214796	2010-01	1,5235603903	1,1764253655	2,0024279217	2,8931681861	2,4547042126	0,389660025	1,685567525								
+Feb-90	2000-02	2,8986514954	-0,571097974	2,5137176939	0,9992029575	0,7985091442	1,874926331	1,912700522	2010-02	1,5412772067	1,0787384358	1,9031444312	3,5893693814	2,7279546786	0,3945241598	1,877428969								
+Mar-90	2000-03	2,5669909626	-0,5650088017	2,5330621752	1,0494779024	0,8369724326	1,9099702739	2,354411696	2010-03	1,566881231	1,2748221816	2,2417093476	3,8105245898	2,8795776206	0,4539266326	2,311175672								
+Apr-90	2000-04	2,7957135074	-0,5466351564	2,1059358499	1,0557972365	0,8408200206	1,9583326532	2,251011366	2010-04	1,8330861632	1,5026196132	1,9236484991	3,8381328639	2,894159584	0,5327998116	2,36739292								
+May-90	2000-05	2,5678320316	-0,5397205457	2,2797338806	1,0715602046	0,8617128125	1,7649368886	1,839287505	2010-05	1,6813427232	1,7133208725	2,08101446	3,8861582177	2,9600710172	0,3504489574	1,674190281								
+Jun-90	2000-06	2,3760852503	-0,4841761812	2,1130788136	1,0813171308	0,8838599167	1,7631886811	1,960290972	2010-06	1,6201423282	1,9413853728	2,0205005228	3,9638587835	3,083266654	0,2383414213	1,586615605								
+Jul-90	2000-07	2,4474277295	-0,5194996902	2,0758594177	1,0245256467	0,8838523931	1,7881161881	1,834068326	2010-07	1,6478679046	1,7498053981	2,0100641475	3,72710798	3,106071273	0,2382166217	1,804403446								
+Aug-90	2000-08	3,1353953954	-0,5979947586	1,918314888	1,0986300369	0,8978685562	2,1271275598	2,275954303	2010-08	2,0817098133	1,5186302018	1,765879394	4,0428069297	3,1412459641	0,4271003194	2,011687383								
+Sep-90	2000-09	3,8003933072	-0,5896864649	2,2500398126	1,1408994897	0,9068514606	2,2635933945	2,485231777	2010-09	3,1144483752	1,7120058799	2,5755113594	4,2407044354	3,1781453467	0,6093382963	2,795147481								
+Oct-90	2000-10	3,6534673607	-0,5735701841	2,9470619471	1,1504380096	0,9303888621	2,1901635583	2,114144731	2010-10	3,0604690947	1,9787204706	3,6973696409	4,2488993086	3,2468135659	0,7848603155	2,583245925								
+Nov-90	2000-11	3,1365148745	-0,5884798356	2,3619632971	1,1176257925	0,9360696419	2,0739481202	1,9586475	2010-11	3,0987349314	2,0501364576	3,3592073143	4,1058831776	3,2831620179	0,783073276	2,564466724								
+Dec-90	2000-12	3,3065015557	-0,575765507	2,3048695247	1,0863636938	0,9283610655	1,8183552456	1,933628567	2010-12	3,3942630633	2,1342786016	3,5002210337	3,9963129593	3,2834098499	0,7547098318	2,765204523								
+Jan-91	2001-01	3,5036295078	-0,5898707423	2,6015586182	1,1191500327	0,9377443989	1,8729970351	1,893035255	2011-01	3,4458315789	1,9995018161	3,7541964672	4,09992206	3,2786400782	0,8705284709	2,720641954								
+Feb-91	2001-02	2,744542415	-0,5609645107	2,3720627673	1,0092041826	0,9237613789	1,4825346479	1,378477986	2011-02	3,1779523649	2,2320545439	3,8854879431	3,5941321228	3,2179024403	0,6834342173	2,500234645								
+Mar-91	2001-03	2,5472018842	-0,5567483029	1,9517391427	1,0071883135	0,9078758835	1,1593265955	1,279402244	2011-03	3,0776712579	2,3692324837	3,3439833712	3,5764991312	3,1409858458	0,570614623	2,573623826								
+Apr-91	2001-04	2,6150805289	-0,5578558955	2,2076819637	0,9981977363	0,9010336848	1,1089689145	1,442663329	2011-04	3,1331596715	2,571476834	3,6758821355	3,5578175785	3,1323200099	0,5617290322	2,715172762								
+May-91	2001-05	2,310779541	-0,5206561623	2,0160716085	1,0018221621	0,9066430001	1,2821314939	1,352253326	2011-05	2,7438127952	2,698164992	3,3813479028	3,5679614179	3,1509670912	0,5884093847	2,550229751								
+Jun-91	2001-06	2,4533006227	-0,5423736537	1,9504807508	1,0029258455	0,905761794	1,2204818524	1,438669154	2011-06	3,0134744058	2,6382118476	3,1781272408	3,5706468082	3,1451492395	0,5167033745	2,751199475								
+Jul-91	2001-07	2,3468925156	-0,5385581961	1,9874704541	1,0641429894	0,9310745669	1,1646574548	1,296745504	2011-07	2,8957524032	2,7451719235	3,207778056	3,7945764413	3,2044242407	0,5841536646	2,504154739								
+Aug-91	2001-08	1,8786864282	-0,5003654698	1,741399531	1,0549401198	0,9563928305	1,0643936069	1,182890167	2011-08	1,9836902952	3,4112029474	2,4498209514	3,7425135212	3,3041270691	0,3141980612	2,233184186								
+Sep-91	2001-09	1,4148803278	-0,455338119	1,2975588959	1,0307299727	0,9631775782	0,8100322981	0,9088516	2011-09	1,8955788576	3,5818515447	2,1401548585	3,6317795341	3,332277948	0,305061204	1,821045852								
+Oct-91	2001-10	1,6180590649	-0,4740566035	1,4974665387	1,0144709945	0,9715908859	0,8880326406	0,917345847	2011-10	2,3548069545	3,1212350764	2,6678810481	3,5496171783	3,36004094	0,3666121494	2,105468618								
+Nov-91	2001-11	1,93212699	-0,4856164016	1,7649554717	1,0209335175	0,9841945242	1,0207579052	1,162123094	2011-11	2,3693050176	3,3053473366	2,6857037506	3,540863644	3,3785145731	0,4183778984	2,188278039								
+Dec-91	2001-12	2,0063459461	-0,5010483638	1,873295885	0,9897917425	0,9735311619	1,0361671698	1,001622462	2011-12	2,2177413751	3,0469453312	2,6192437466	3,4472204518	3,3756981768	0,4353727276	1,93648286								
+Jan-92	2002-01	1,7690234992	-0,4627458	1,9032032552	0,9433508325	0,9513468543	0,879191345	0,980311537	2012-01	2,3170763521	3,1620496657	3,0520938652	3,2281467399	3,2626724159	0,394023141	2,184807597								
+Feb-92	2002-02	1,6357528812	-0,4161971009	1,7223238959	0,937308458	0,9234489382	0,8279109664	1,005768046	2012-02	2,4197103827	3,4170002219	3,0513844456	3,1781874776	3,1189780458	0,4867632582	2,432501353								
+Mar-92	2002-03	1,8899561417	-0,3977544531	1,7616362672	0,9532147909	0,9194714181	0,9547849792	1,222129618	2012-03	2,5306113306	3,347115452	2,9389805622	3,24262457	3,0980643631	0,55776644	2,674528336								
+Apr-92	2002-04	1,6611971644	-0,3519526003	1,6780837202	0,9669939511	0,9291862376	0,8714769097	1,111508597	2012-04	2,3926238085	3,3602974091	2,9375142435	3,2838893934	3,1214651499	0,5566998934	2,580149664								
+May-92	2002-05	1,4284579258	-0,3105606047	1,597349287	0,9774742758	0,9336054507	0,7778906208	1,028619252	2012-05	1,9733436254	3,2023589909	2,6342601663	3,3246529541	3,135750632	0,464843679	2,099997184								
+Jun-92	2002-06	1,2592630342	-0,2978232321	1,2984224891	0,9757361401	0,937865335	0,6942639714	0,967082223	2012-06	2,165702039	3,1869316526	2,5406651244	3,3125632663	3,1495662872	0,4852079799	2,416428852								
+Jul-92	2002-07	1,0527150346	-0,3481524166	1,0967495908	0,9913362083	0,9493041315	0,4605506675	0,779202175	2012-07	2,6971643326	3,0240024029	2,8695318281	3,3653353687	3,1835872133	0,5139973814	2,456583087								
+Aug-92	2002-08	1,1712020839	-0,3354274048	1,2641236507	0,9833349406	0,9712908339	0,4648042978	0,735111066	2012-08	3,0205913497	3,2292085246	3,302116817	3,3232665519	3,2710204603	0,5517286465	2,454795518								
+Sep-92	2002-09	0,6481564744	-0,3169067158	0,8312281712	0,9076163661	0,9608973288	0,3787063195	0,532100948	2012-09	3,4134200765	3,5370943773	3,715415644	3,0042010241	3,2309956871	0,5985349279	2,594639127								
+Oct-92	2002-10	0,8760276241	-0,3166808113	1,15220715	0,8646981285	0,8570612136	0,3837254973	0,719301601	2012-10	3,3604002601	3,567508513	3,9749779738	2,8140574116	2,7827236293	0,631749631	2,682235702								
+Nov-92	2002-11	0,9237261853	-0,2731062971	1,2154406447	0,8579464109	0,810988906	0,4591546552	0,798980057	2012-11	3,2985127659	3,6516273802	4,0388715415	2,751998505	2,5627915814	0,5373180284	2,671148286								
+Dec-92	2002-12	0,6354432887	-0,2408038729	0,904734908	0,838049788	0,7802116872	0,3823168083	0,67500276	2012-12	3,4259457629	3,5409943062	4,0437405719	2,7093396987	2,478016166	0,5167573316	2,712216056								
+Jan-93	2003-01	0,5229334295	-0,1404446016	0,836242421	0,8158704978	0,7480450652	0,3902303399	0,622306972	2013-01	3,464921095	3,5998470312	4,2414819691	2,5924950841	2,3264850738	0,6243371595	2,929021797								
+Feb-93	2003-02	0,2915353998	-0,1287011372	0,6743495472	0,7816718402	0,7150354598	0,2604407139	0,552890793	2013-02	3,1195019192	3,4752157088	4,1395846508	2,4447490853	2,1884881955	0,6337475864	2,841955404								
+Mar-93	2003-03	0,219700357	-0,1843563323	0,4804216738	0,7321774295	0,6378724545	0,2467096908	0,451931181	2013-03	3,1491993178	3,3423362338	3,7964865512	2,2465976414	1,8960891492	0,6459897006	2,701349623								
+Apr-93	2003-04	0,5931110522	-0,2551089028	0,7561751444	0,7403076925	0,6271241645	0,3588394139	0,524817249	2013-04	3,3892991195	2,8713258438	3,7711462011	2,2654421355	1,846093914	0,7212094037	2,650070602								
+May-93	2003-05	0,618640921	-0,2408056601	0,8471735686	0,7731553022	0,6245068515	0,4427959783	0,589186508	2013-05	3,6436260018	2,3858313055	4,1472385751	2,371010544	1,8175044126	0,8074592014	2,564455656								
+Jun-93	2003-06	0,6868141222	-0,2506596127	0,9513609669	0,7683042884	0,6249647891	0,5229959168	0,634932602	2013-06	3,2359396928	2,139099976	3,8552775615	2,3582513496	1,8247908456	0,7630490949	2,501400651								
+Jul-93	2003-07	0,7262169972	-0,3133128997	1,0311825627	0,7364804276	0,6221857959	0,5343486767	0,636729763	2013-07	3,1172676585	1,8037784427	3,9272157961	2,226420678	1,8055310259	0,8338176487	2,623742182								
+Aug-93	2003-08	0,5836370108	-0,2627865077	0,9203014441	0,6994504421	0,5838670123	0,5011675844	0,594152307	2013-08	2,6939216239	2,0690707849	3,5466718831	2,0869775883	1,6700582617	0,8044505513	2,365244762								
+Sep-93	2003-09	0,4897254375	-0,1447977551	0,6877128534	0,660732941	0,5407163552	0,5288755267	0,63711582	2013-09	3,0085071835	2,3147035989	3,4730636906	1,9474111872	1,5237724844	0,7988494993	2,624782572								
+Oct-93	2003-10	0,5566862307	-0,1688941769	0,9055403487	0,6266304115	0,5278051172	0,5531298685	0,69429617	2013-10	2,8911158156	2,1357416653	3,8105581515	1,8267773276	1,482581665	0,8379256094	2,673309166								
+Nov-93	2003-11	0,6168188802	-0,1600608136	0,7852993334	0,6300529426	0,4996162718	0,5888504571	0,8461779	2013-11	3,0993243345	1,9448766211	3,5886604521	1,8186662185	1,3693762529	0,9391107248	3,001209533								
+Dec-93	2003-12	0,5378265851	-0,1477504536	0,8689327602	0,6002967299	0,4619744114	0,6232334353	0,865342302	2013-12	2,7388341275	1,7121730111	3,6721088017	1,7370960345	1,2677669905	0,9519146904	2,880997846								
+Jan-94	2004-01	0,660376064	-0,1327617517	0,8076320423	0,5999679053	0,449930215	0,6866669749	0,776217365	2014-01	2,8146672789	1,7518882169		1,7238428234	1,2190185912	0,948810429	2,481648507								
+Feb-94	2004-02	0,7243551161	-0,1362853663	0,8416610245	0,6520993393	0,4566959648	0,7134484238	0,842908856	2014-02	3,1798580814	1,948868547		1,8906552397	1,2243267749	0,9535840008	2,736484014								
+Mar-94	2004-03	0,6078840598	-0,1429124249	0,8416032806	0,6951132817	0,4748816758	0,7033851789	0,917717857	2014-03	3,023278395	2,0240793618		2,0575713608	1,2916012414	1,046409368	2,928223242								
+Apr-94	2004-04	0,5696402236	-0,1334258543	0,8605837984	0,7150255324	0,4811967906	0,7821669076	0,808356769	2014-04	2,8189599836	1,9810650828		2,1485387449	1,327004408	1,1349927139	2,842784367								
+May-94	2004-05	0,6406991251	-0,1954839713	0,7451237079	0,7493303225	0,500835245	0,7053679182	0,824913227	2014-05	3,2248177586	1,9315036991		2,2774622145	1,3921823617	1,1501041464	2,926770914								
+Jun-94	2004-06	0,7997671464	-0,1855580922	0,9086453454	0,8212073245	0,5546085608	0,7417526129	0,873847299	2014-06	3,4052770398	1,8631278198		2,5510179495	1,5683009819	1,2084079192	3,016003401								
+Jul-94	2004-07	0,614638008	-0,1664402793	0,9037711206	0,7948292513	0,5769329778	0,7193451619	0,769981717	2014-07	2,9328478709	1,9567252035		2,4431857552	1,6413728981	1,2729636772	2,865075669								
+Aug-94	2004-08	0,5104000809	-0,1477103777	0,7740706831	0,8297690747	0,5884604349	0,6442082278	0,72125545	2014-08	2,8310845278	1,9628698193		2,5817081018	1,6825409817	1,198430324	2,833851083								
+Sep-94	2004-09	0,7337502124	-0,1653699007	0,7647244072	0,9097150272	0,6492552994	0,6817415379	0,809538811	2014-09	3,255660366	1,718230598		2,9048285776	1,8970372811	1,2254366295	2,825861835								
+Oct-94	2004-10	0,7081260632	-0,1265539225	0,9454415325	0,9112816818	0,696917815	0,68282417	0,799609982	2014-10	3,0497753182	1,6835466968		2,9219439661	2,0809810386	1,1774896246	2,737036683								
+Nov-94	2004-11	0,8164721627	-0,0556597417	0,9965747836	0,9073234516	0,7288739122	0,7894017791	1,006584552	2014-11	3,4256245436	1,6133485216		2,8875842882	2,184532235	1,3641783581	3,017663005								
+Dec-94	2004-12	0,8122720076	-0,0407843145	1,0813336422	0,8914020545	0,723995578	0,8643453549	1,058849739	2014-12	3,2101465972	1,7188046018		2,8666204924	2,2071487272	1,4325877833	2,908566142								
+Jan-95	2005-01	0,9116714919	-0,0736480668	1,0692470754	0,9330468419	0,7618685586	0,8079840091	1,056330254	2015-01	3,866051645	1,8738338147		2,9975914136	2,314694392	1,3787096359	2,914965906								
+Feb-95	2005-02	0,8761441771	-0,0694526679	1,2115066307	0,8985044067	0,751155368	0,7650905291	1,094809191	2015-02	3,9949077077	1,8389036608		2,8510963454	2,2699309913	1,3488674916	3,098143435								
+Mar-95	2005-03	1,0629188811	-0,061422557	1,1203440715	0,8663532675	0,7260154073	0,6987653132	0,94206085	2015-03	4,7886630562	1,6568103971		2,7368513661	2,189794821	1,2691075292	2,821096201								
+Apr-95	2005-04	0,8790811218	-0,1001986225	1,2398487916	0,8330949735	0,6486477595	0,592739744	0,828153196	2015-04	4,2437347102	1,6237600466		2,5919821934	1,894204862	1,209798547	2,773257299								
+May-95	2005-05	0,9342627388	-0,1000068055	1,2725276995	0,7898964923	0,6073378307	0,5633357992	0,846800625	2015-05	4,0189646194	1,672474103		2,4279895271	1,7524185617	1,1439454308	2,756552379								
+Jun-95	2005-06	1,0028956416	-0,0877695459	1,2494335633	0,7753178443	0,5628723095	0,5498424174	0,865537997	2015-06	3,8194496271	1,6173998851		2,3758435832	1,6021786977	1,0546900938	2,666343917								
+Jul-95	2005-07	1,0033635253	-0,0990298631	1,369654052	0,7886802137	0,5633734857	0,512418378	0,834793458	2015-07	3,665908004	1,4993825672		2,4333939401	1,6092622225	0,9697257097	2,544797057								
+Aug-95	2005-08	0,9564863772	-0,0597404348	1,2386617976	0,7647464173	0,557883661	0,5034511163	0,895155411	2015-08	3,151029606	1,4814537677		2,3482068981	1,5966996016	0,9082409487	2,368245865								
+Sep-95	2005-09	1,1016892423	-0,0140301614	1,3202806242	0,734510744	0,522268271	0,427616192	0,885499266	2015-09	2,9846667038	1,5051538842		2,246064811	1,4875357566	0,7305793856	2,128962248								
+Oct-95	2005-10	1,0655485447	0,0186837801	1,2955287599	0,7275387675	0,5061227687	0,3696456242	0,864020294	2015-10	3,5683379316	1,5830664676		2,2285566305	1,440845295	0,8082071238	2,463707332								
+Nov-95	2005-11	1,1131123552	0,0349828053	1,4744638809	0,6928107698	0,4865950944	0,4126664376	0,867580123	2015-11	3,6409601876	1,3914667373		2,0801349123	1,3600221868	0,8271111646	2,319824739								
+Dec-95	2005-12	1,1925708652	0,1078638389	1,5218242486	0,6418757384	0,4388247317	0,3947869559	0,848958769	2015-12	3,337712119	1,3285999623		1,9158690834	1,2250149363	0,7403436614	2,157583429								
+Jan-96	2006-01	1,0980978114	0,1790790366	1,6334499428	0,6194801309	0,4105336587	0,4214636966	0,910588374	2016-01	2,5534970805	1,334975809		1,8229481176	1,1259541971	0,6219179229	1,903161976								
+Feb-96	2006-02	1,1453363599	0,1740515998	1,5352707133	0,6731837121	0,3967749869	0,3343446689	0,896322076	2016-02	2,4295158266	1,5416841705		2,0159430359	1,0834940926	0,5061284533	1,864531849								
+Mar-96	2006-03	1,2037225465	0,207409199	1,629183601	0,7148343508	0,4221461693	0,3602005934	0,907876942	2016-03	2,5892700025	1,7235970333		2,1594096475	1,1524190481	0,6235177429	2,018137564								
+Apr-96	2006-04	1,1953451015	0,353819295	1,6524744365	0,6986492396	0,4255043104	0,3571731582	0,916996074	2016-04	2,5887254335	1,741509686		2,1214836703	1,1821267439	0,676624596	1,995359284								
+May-96	2006-05	1,0387597384	0,5264378574	1,5137155237	0,7144163352	0,4214785155	0,3086629362	0,847838477	2016-05	2,6178380834	1,7955771914		2,167392678	1,1585884722	0,6181794491	2,014074372								
+Jun-96	2006-06	1,0175603512	0,3507156198	1,4317879034	0,7325907481	0,4293121625	0,24647492	0,836192045	2016-06	2,3622987478	1,888960665		2,2414748531	1,1884306775	0,6097715816	1,961655933								
+Jul-96	2006-07	1,0937362779	0,447475317	1,3805578443	0,7162034744	0,4422464212	0,3060387334	0,921812337	2016-07	2,7615086813	2,069777884		2,1872368694	1,2357090825	0,7588448058	2,228216862								
+Aug-96	2006-08	1,1010566183	0,4273965897	1,5342609142	0,6859239357	0,4373052054	0,2960352823	0,954023326	2016-08	2,7446200757	2,0407509239		2,0690327635	1,2148419035	0,7201293948	2,19006291								
+Sep-96	2006-09	1,0629378897	0,3645174071	1,5543703413	0,6749498538	0,4262998952	0,3172723228	0,8988627	2016-09	2,5403569315	2,0378314119		2,0207689469	1,1724934704	0,6663840783	2,071349724								
+Oct-96	2006-10	1,1549931193	0,3377184928	1,5592669685	0,6362583563	0,3996646365	0,3222525198	0,959745368	2016-10	2,5844715314	1,9052580019		1,8819785183	1,0897486906	0,57460596	1,978881336								
+Nov-96	2006-11	1,0159261769	0,4575318364	1,5810696888	0,6121539015	0,3933357184	0,2844025453	0,896954445	2016-11	2,3145017983	1,857521268		1,7935064587	1,067937756	0,5090406076	1,849116039								
+Dec-96	2006-12	1,0778828121	0,4986151369	1,5746217635	0,5959884963	0,3784775258	0,2919252988	0,970142066	2016-12	2,5431386345	1,6881970609		1,7459236165	1,0294738939	0,5543124783	1,973912496								
+Jan-97	2007-01	1,0423267808	0,5810134565	1,6325400018	0,6089707263	0,3853851327	0,2664383469	0,98099433	2017-01	2,3900116803	1,9487725823		1,7725427592	1,0366998657	0,5348118004	2,034911785								
+Feb-97	2007-02	0,8611789812	0,7210424157	1,4630844734	0,5633866404	0,3589863304	0,220262829	0,941092921	2017-02	2,2136267056	2,1436333534		1,6234254337	0,9635979062	0,494981211	2,084040148								
+Mar-97	2007-03	0,8159161352	0,6604147287	1,3748671942	0,5873111033	0,3552663775	0,1825801044	1,022511545	2017-03	2,1711604547	2,0746635536		1,7113934925	0,9565848311	0,5412343971	2,190327935								
+Apr-97	2007-04	0,9436921417	0,7623282107	1,3750840421	0,6047485715	0,3548690701	0,2746415848	1,038867496	2017-04	2,1928120939	2,2511042408		1,7993094361	0,9776728834	0,5984445445	2,12453801								
+May-97	2007-05	1,0162167279	0,7364857991	1,5120895385	0,5911298567	0,3551797076	0,1908069833	0,973870751	2017-05	2,1388324799	2,2019917789		1,7429673709	0,9724788751	0,4640698302	2,001638403								
+Jun-97	2007-06	0,9104360703	0,7193434481	1,4046491506	0,5855555859	0,3518618264	0,1247638016	0,855760989	2017-06	1,8387097592	2,2839448502		1,7198006179	0,9592425141	0,4007443977	1,854781499								
+Jul-97	2007-07	0,5083901643	0,8545210195	1,1691857795	0,5638515699	0,3491432278	0,0661962528	0,726056	2017-07	1,3196498829	2,4042784871		1,635629503	0,944041157	0,3286619138	1,793806738								
+Aug-97	2007-08	0,7564670463	0,8520183351	0,8842328162	0,5813417402	0,3589711675	0,014244775	0,86430471	2017-08	1,6747199228	2,5452554243		1,690643938	0,968810294	0,3231591714	2,024187221								
+Sep-97	2007-09	0,677481252	0,9958655127	1,1745934789	0,5620080549	0,3554501494	0,0284508172	0,843529335	2017-09	1,6599136937	2,6642554187		1,6446540461	0,975615708	0,3193866476	1,916285654								
+Oct-97	2007-10	0,9415329438	1,1122175963	1,1066061815	0,5569688421	0,3637172896	0,0416833853	1,020527377	2017-10	2,1303602809	2,5227206902		1,6375844478	1,009704076	0,3416294773	2,162838255								
+Nov-97	2007-11	0,7792810618	1,4248759911	1,2361415556	0,5503232311	0,3854087291	-0,0160650692	0,889413251	2017-11	1,8782794393	2,7690556401		1,6263243923	1,086913242	0,3889199399	2,17777603								
+Dec-97	2007-12	0,6800674918	1,564577771	1,1758209571	0,5086835376	0,3852984222	-0,0378632311	0,832993823	2017-12	1,6135150319	2,9567365547		1,4938476642	1,0942955603	0,3852782381	2,1764968								
+Jan-98	2008-01	0,3293464948	1,8554022398	0,7613247123	0,4784603979	0,3617755465	-0,1179983931	0,629590472	2018-01	1,5546270465	3,1918602663		1,3885729808	1,0180524909	0,4723006832	2,273227542								
+Feb-98	2008-02	0,2167793322	1,8883079615	0,6578341211	0,4574764572	0,3521746266	-0,2038348683	0,501097299	2018-02	1,2221465942	3,0613692886		1,3248397465	0,9932036252	0,2999145965	1,900260516								
+Mar-98	2008-03	0,0579137866	2,0591657784	0,4963654823	0,4367138102	0,3365743219	-0,2938657182	0,409441625	2018-03	0,9460268936	3,0554219434		1,273272776	0,9601610466	0,2065697078	1,694756524								
+Apr-98	2008-04	0,139864348	1,7337280114	0,460530115	0,4389119227	0,337321168	-0,2885743055	0,481852946	2018-04	1,0431416667	2,8983480165		1,2718425735	0,9543405237	0,1212535391	1,699966625								
+May-98	2008-05	0,0492343428	1,7488644745	0,4762136459	0,4437431552	0,3343513876	-0,2737056532	0,527216474	2018-05	0,8348450041	2,9318029292		1,2994777849	0,9564243142	0,1485954338	1,75863711								
+Jun-98	2008-06	-0,1379867406	1,8177234954	0,2115052449	0,4179517155	0,3302259505	-0,3248895149	0,349237449	2018-06	0,659372101	2,9602004783		1,2215799146	0,9488809045	0,1801308123	1,686443391								
+Jul-98	2008-07	-0,125552154	1,9848995228	0,148362782	0,3973975312	0,3249807194	-0,422086886	0,311039031	2018-07	0,75417568	2,8014076417		1,1651339696	0,9415515492	0,1383567411	1,78881528								
+Aug-98	2008-08	0,0998878448	1,7280315368	0,1202951883	0,3585395392	0,3105220965	-0,3393209378	0,523463134	2018-08	1,1265325716	2,7972567107		1,0386492945	0,8929535393	0,2921186485	2,316049237								
+Sep-98	2008-09	0,0826437539	1,6244013492	0,227967535	0,3015919722	0,2760385656	-0,341741119	0,284081719	2018-09	1,3222718022	2,7126808663		0,8697330052	0,7942978332	0,4007187687	2,26256323								
+Oct-98	2008-10	-0,1643843222	1,5082683837	0,1614973194	0,3027192078	0,2506216236	-0,5216628344	-0,104264835	2018-10	1,0049445328	2,6498107615		0,8656376571	0,7132253858	0,3038491365	1,71029834								
+Nov-98	2008-11	-0,293276374	1,3526498486	-0,0022911731	0,320598166	0,2529810687	-0,6272443343	-0,226631397	2018-11	0,7980760876	2,7073715092		0,8938970425	0,6959676755	0,1051674099	1,573076801								
+Dec-98	2008-12	-0,2648208686	1,5878097663	-0,0822307691	0,2801658289	0,2289640896	-0,6514919368	-0,245671321	2018-12	0,6675237608	2,8466195554		0,7844683711	0,6375360375	-0,0358693785	1,22094648								
+Jan-99	2009-01	-0,3810580917	1,7633044974	-0,1545720237	0,2623937127	0,2078753758	-0,6824589722	-0,346029687																
+Feb-99	2009-02	-0,4450826705	2,0411626805	-0,2915624715	0,2775282122	0,1887366148	-0,726868303	-0,419502549																
+Mar-99	2009-03	-0,388880287	2,009767017	-0,195195771	0,306874777	0,1924967594	-0,7669572116	-0,39052575																
+Apr-99	2009-04	-0,3374672959	1,936698427	-0,0385527003	0,2833343557	0,1813229756	-0,7265657701	-0,328033864																
+May-99	2009-05	-0,2446917403	2,1276294566	-0,0920351334	0,3085519521	0,1721054621	-0,6927586784	-0,206470878																
+Jun-99	2009-06	-0,3275873153	2,404222791	-0,0595543521	0,3567854217	0,1828344065	-0,6820604997	-0,258077244																
+Jul-99	2009-07	-0,1706488843	2,4308990697	-0,0209185471	0,4102729834	0,2300789795	-0,6912293614	-0,167325997																
+Aug-99	2009-08	-0,1837487559	2,4749517458	0,0205095383	0,4359778369	0,269255434	-0,6316378217	-0,126559759																
+Sep-99	2009-09	-0,120768196	2,5449144829	0,0352918863	0,4584620666	0,2866044326	-0,6067254695	-0,073844673																
+Oct-99	2009-10	-0,2439936524	2,1252846559	0,0136823172	0,496569334	0,3180983518	-0,5850011323	-0,151181355																
+Nov-99	2009-11	-0,2617911875	2,6189197813	-0,0153716691	0,46525698	0,3318794558	-0,6074291373	-0,129483342																
+Dec-99	2009-12	-0,365574539	2,7783917535	-0,0231361577	0,4766876484	0,3347798278	-0,6160399477	-0,198360885																
+Jan-00	2010-01	-0,392076638	2,7213897615	-0,2200477013	0,5481577634	0,3702254586	-0,5986289439	-0,171826941																
+Feb-00	2010-02	-0,4781532023	2,4262468008	-0,2166865633	0,5398508776	0,3815706006	-0,6016764146	-0,163150645																
+Mar-00	2010-03	-0,4119887298	2,6692258509	-0,2312880108	0,5052160996	0,383321565	-0,593345574	-0,17549226																
+Apr-00	2010-04	-0,3930504345	2,8792810831	-0,2266720033	0,4864912043	0,3820678143	-0,5792054038	-0,129922287																
+May-00	2010-05	-0,3838142698	3,1519723358	-0,2253444786	0,5122251556	0,4124172621	-0,5992653978	-0,207747444																
+Jun-00	2010-06	-0,3522181717	3,1015570872	-0,1946686474	0,4877292721	0,4303033848	-0,6308885668	-0,268529815																
+Jul-00	2010-07	-0,3584555985	3,0253603373	-0,1327632981	0,5039134523	0,4460926074	-0,632444477	-0,158282142																
+Aug-00	2010-08	-0,3971428262	3,2020548152	-0,193168117	0,489682028	0,4459825878	-0,6388570228	-0,234112845																
+Sep-00	2010-09	-0,3007314477	3,428843229	-0,1202408142	0,4987933233	0,4564557036	-0,6092303486	-0,08047479																
+Oct-00	2010-10	-0,2866587651	3,747943981	0,0138291734	0,488503239	0,4525305778	-0,5489040436	-0,020291865																
+Nov-00	2010-11	-0,16636797	3,9413208956	0,0398271426	0,4824611055	0,4559410202	-0,5237315049	0,033492557																
+Dec-00	2010-12	-0,1390239525	3,9115162755	0,1799031826	0,444316812	0,4244499537	-0,4731740343	0,10648938																
+Jan-01	2011-01	-0,1744889962	3,8997959827	0,2135234168	0,4282222445	0,3786064778	-0,4524924062	0,108580522																
+Feb-01	2011-02	-0,0446442199	4,0176253657	0,1756816976	0,4251720386	0,3712081678	-0,4123245081	0,281974938																
+Mar-01	2011-03	-0,0150978906	4,1815833092	0,2337864584	0,4016675363	0,3570067261	-0,3555130299	0,365050224																
+Apr-01	2011-04	-0,0188743366	4,4361723661	0,3736967067	0,4304391194	0,3468515417	-0,3382002435	0,32362771																
+May-01	2011-05	-0,0224559332	4,3447443019	0,2544139687	0,4691959312	0,3574915386	-0,3851375383	0,317012139																
+Jun-01	2011-06	0,0050659038	4,4327717954	0,2910326055	0,4625626	0,358631491	-0,3929519882	0,343043092																
+Jul-01	2011-07	0,007901156	4,6456353988	0,2004876725	0,4646448899	0,3503144443	-0,3490539931	0,334614008																
+Aug-01	2011-08	-0,103206332	5,2349529396	-0,003647816	0,4290998885	0,3310903201	-0,430177849	0,293736809																
+Sep-01	2011-09	0,0543811304	5,0809420401	0,0137884092	0,4230492973	0,3022126373	-0,3396690141	0,292546385																
+Oct-01	2011-10	0,1230632921	4,6629427723	0,36571626	0,3900446012	0,2699820572	-0,3439316699	0,416874253																
+Nov-01	2011-11	-0,0060807015	5,0578211987	0,2685630128	0,3653726648	0,2276930755	-0,3749966816	0,285740028																
+Dec-01	2011-12	-0,0752304569	4,7700059585	0,1346527096	0,4168360576	0,2590055418	-0,3680218553	0,283856061																
+Jan-02	2012-01	0,0485267296	4,6615652941	0,2327242321	0,4373954674	0,2723503173	-0,3248186898	0,411058869																
+Feb-02	2012-02	0,1399622422	4,6745391668	0,3039303552	0,4420358811	0,2915820105	-0,2609634551	0,501492423																
+Mar-02	2012-03	0,0630681733	4,4666214403	0,3263716673	0,4759878834	0,3123388076	-0,2855140382	0,446952725																
+Apr-02	2012-04	0,1170334477	4,2190519555	0,2350286933	0,4742904062	0,3237087565	-0,2497881503	0,486482692																
+May-02	2012-05	0,078488805	3,8188011284	0,1975364966	0,4799554037	0,3262282862	-0,2493260132	0,339348675																
+Jun-02	2012-06	0,2446954049	3,7431738272	0,2525264374	0,4587758059	0,3241888453	-0,1961526749	0,527584116																
+Jul-02	2012-07	0,6075897889	3,8568775858	0,4425116017	0,4322867192	0,3051155817	-0,0397021392	0,709852139																
+Aug-02	2012-08	0,6488483624	4,0147867366	0,6826193045	0,3839421006	0,2556408266	-0,0222842416	0,749807436																
+Sep-02	2012-09	1,3751871258	4,233171891	0,7485899733	0,3505232624	0,2258938725	0,0701442259	1,053511769																
+Oct-02	2012-10	1,0707950391	4,2812862622	1,3272745275	0,3610808278	0,2083746163	0,0865342996	0,881124611																
+Nov-02	2012-11	0,9947471103	4,1655692874	1,1091322421	0,3605184523	0,2008067757	-0,0287223232	0,795818063																
+Dec-02	2012-12	1,4029605587	3,8338430377	1,094746151	0,3453292841	0,1916688555	0,0175636719	0,947047787																
+Jan-03	2013-01	1,6057747449	3,4608317539	1,444179179	0,3280803865	0,2353429547	0,079798535	1,134388718																
+Feb-03	2013-02	1,8153907548	3,310955081	1,5574406333	0,2951856823	0,1883055739	0,2008274464	1,180663898																
+Mar-03	2013-03	1,9885513053	3,4305095967	1,7417587941	0,2988650151	0,1612329062	0,2220195296	1,24159436																
+Apr-03	2013-04	1,4622308289	3,2996925296	1,9095193449	0,3202211062	0,1611002183	0,1672936161	1,112017115																
+May-03	2013-05	1,5670015867	2,7524837534	1,5606081479	0,2688469018	0,1475382116	0,1480459749	0,982843576																
+Jun-03	2013-06	1,2513793235	2,5322196155	1,3915928032	0,2433948497	0,1369700263	0,0591967314	0,893939129																
+Jul-03	2013-07	1,1396720837	2,4284388439	1,3295144218	0,2889877793	0,1094206278	0,0904333654	0,958107178																
+Aug-03	2013-08	1,0921893715	2,5134874968	1,1553928768	0,311739106	0,1156298954	0,0989097907	0,866413793																
+Sep-03	2013-09	1,4034197554	2,3237707612	1,241932167	0,3152424041	0,1197232336	0,0735118939	0,956079932																
+Oct-03	2013-10	1,2377400383	2,2339730396	1,5126805162	0,3247343707	0,1476883126	0,0784373646	0,916632463																
+Nov-03	2013-11	1,2740110254	2,0369678754	1,3517511011	0,34016967	0,1584928397	0,1079805228	0,918966906																
+Dec-03	2013-12	1,1768388435	1,7642989139	1,350026415	0,3359872564	0,1461646108	0,090758355	0,839507011																
+Jan-04	2014-01	1,0665938923	1,7725594125		0,3243149533	0,1833123441	0,0475632834	0,737051916																
+Feb-04	2014-02	1,1833283703	1,9800959199		0,3133634756	0,1431489114	0,0316263927	0,799394732																
+Mar-04	2014-03	1,2502344928	2,0647043031		0,2861049782	0,1188280277	0,0873950771	0,817486744																
+Apr-04	2014-04	1,1867039434	1,9860145483		0,3176545271	0,1360435181	0,0814080038	0,886084066																
+May-04	2014-05	1,3174112591	2,1387319097		0,3441181777	0,1382787552	0,1439068848	0,913462267																
+Jun-04	2014-06	1,2057722262	2,0411631657		0,3505815869	0,1321718535	0,1475786505	0,905661897																
+Jul-04	2014-07	1,1933824994	2,0738069115		0,3393793985	0,1503795851	0,1968979866	0,941283788																
+Aug-04	2014-08	1,2814067458	2,0209511585		0,317318278	0,1853040027	0,214662191	0,980307182																
+Sep-04	2014-09	1,2098667755	1,8380983041		0,3053506716	0,1377430045	0,198914395	0,877662519																
+Oct-04	2014-10	1,1346308863	1,6913072862		0,290300397	0,1734740665	0,1736940023	0,844116517																
+Nov-04	2014-11	1,1973588766	1,4577397737		0,2737019953	0,1736187734	0,1930111976	0,779305212																
+Dec-04	2014-12	1,0948209702	1,5008867855		0,258597465	0,1284263491	0,1792223343	0,687479109																
+Jan-05	2015-01	1,3067131725	1,7392558998		0,2581972426	0,1690323864	0,1940996792	0,69843889																
+Feb-05	2015-02	1,4105618731	1,6972321537		0,2519745305	0,1399265414	0,2080897318	0,744708354																
+Mar-05	2015-03	1,5414471028	1,5079637939		0,2740492058	0,1488823847	0,2148743435	0,752700027																
+Apr-05	2015-04	1,5222053645	1,5773074155		0,2390965585	0,1251097927	0,2647899793	0,838317278																
+May-05	2015-05	1,3463320958	1,6195986052		0,2172465619	0,1125061694	0,2527771915	0,812060333																
+Jun-05	2015-06	1,1774920197	1,5385147913		0,1981368021	0,086365135	0,2142049737	0,751471144																
+Jul-05	2015-07	1,1078131666	1,4576189896		0,2098497125	0,1010831489	0,1963118673	0,721965628																
+Aug-05	2015-08	0,9187440539	1,3472474452		0,2148543006	0,0800888279	0,1676288257	0,581855051																
+Sep-05	2015-09	0,7131832441	1,2652351112		0,197201508	0,0823751758	0,1231488291	0,476162634																
+Oct-05	2015-10	0,9991251234	1,2592722595		0,219560318	0,1079406594	0,2206286679	0,654178816																
+Nov-05	2015-11	0,9861148762	1,0777671644		0,2443706898	0,1206561652	0,1944037082	0,581885475																
+Dec-05	2015-12	0,7898978682	0,9006032746		0,2385623829	0,1110933899	0,1576864292	0,521730786																
+Jan-06	2016-01	0,5359453027	0,8033020398		0,2415340347	0,1592881751	0,0649878634	0,35567322																
+Feb-06	2016-02	0,4496540703	0,9623520888		0,2640418701	0,1501546175	0,0614743294	0,348999461																
+Mar-06	2016-03	0,4716410205	1,0390783237		0,2783234854	0,123625455	0,1136951256	0,409407018																
+Apr-06	2016-04	0,4794605529	0,8380573341		0,3198433067	0,1415237269	0,1514050089	0,393556697																
+May-06	2016-05	0,6085504446	0,6672368346		0,3265013235	0,1483531786	0,1555271202	0,455545482																
+Jun-06	2016-06	0,5113417962	0,9381891414		0,3287829094	0,1405646121	0,2079909998	0,439938071																
+Jul-06	2016-07	0,6287204994	0,9219005624		0,3371661922	0,1864234843	0,2514198785	0,499679724																
+Aug-06	2016-08	0,6147651931	0,9301111435		0,3163880831	0,1686208352	0,2348949621	0,455930951																
+Sep-06	2016-09	0,5531215755	1,0130259229		0,2937210489	0,133765884	0,1786624944	0,440967991																
+Oct-06	2016-10	0,502537091	0,9643017771		0,2980392589	0,1680286858	0,1134903797	0,351215709																
+Nov-06	2016-11	0,4877500184	0,7799649367		0,2868848362	0,1375131025	0,1029085221	0,335958769																
+Dec-06	2016-12	0,5404680886	0,6303490571		0,2940622262	0,1477046099	0,1258646514	0,340339395																
+Jan-07	2017-01	0,5059962945	0,6989396375		0,3361283742	0,194344113	0,1384962915	0,365961116																
+Feb-07	2017-02	0,5680741043	0,6602413328		0,3393104896	0,1751195669	0,1529436489	0,416598474																
+Mar-07	2017-03	0,585854454	0,6827066075		0,3236294037	0,1648309908	0,2227102218	0,404926372																
+Apr-07	2017-04	0,4896485659	0,6736028879		0,3580305709	0,1807700521	0,1726775501	0,364329352																
+May-07	2017-05	0,4128073759	0,6758121406		0,3792409999	0,2025740495	0,1594075511	0,356290006																
+Jun-07	2017-06	0,350683253	0,7349681879		0,4194895829	0,1910951184	0,1787054539	0,37323864																
+Jul-07	2017-07	0,4105615767	0,6692714224		0,4118188446	0,2357437268	0,185954857	0,448255149																
+Aug-07	2017-08	0,3887289589	0,7396352897		0,3799924276	0,2307197525	0,2403178491	0,449555404																
+Sep-07	2017-09	0,4460548558	0,665903466		0,3705795873	0,2170607372	0,2191050224	0,412590261																
+Oct-07	2017-10	0,4644140963	0,5121107306		0,381393526	0,2390386353	0,2214243454	0,396458559																
+Nov-07	2017-11	0,472717626	0,4054305158		0,3571704678	0,2422948159	0,3280674977	0,502909488																
+Dec-07	2017-12	0,4180290873	0,3917669245		0,3733342033	0,2331683565	0,3513872081	0,546904162																
+Jan-08	2018-01	0,7463128988	0,3226093091		0,3519817834	0,2862595262	0,5444378444	0,793446587																
+Feb-08	2018-02	0,6642309408	0,2644092001		0,3406442221	0,2403999889	0,5188989329	0,722702207																
+Mar-08	2018-03	0,6734813139	0,1874783223		0,3205567204	0,1930061336	0,5784472299	0,700602012																
+Apr-08	2018-04	0,6340649097	0,2828398955		0,3511409281	0,2117217392	0,4792817661	0,623703856																
+May-08	2018-05	0,5974943105	0,2875286159		0,3764416737	0,1893827982	0,4790736544	0,609520577																
+Jun-08	2018-06	0,7408993468	0,2649183169		0,4256482273	0,2359670483	0,6067908906	0,765747306																
+Jul-08	2018-07	0,8033101337	0,1424738371		0,4246313671	0,2487087318	0,7663886396	0,879982752																
+Aug-08	2018-08	0,747684633	0,2526331961		0,3775952925	0,2970540671	0,7602105597	0,93048845																
+Sep-08	2018-09	0,9183927359	0,2718332917		0,3573533572	0,2599276535	0,8844883476	1,223818971																
+Oct-08	2018-10	1,1085975604	0,3080414312		0,3229555542	0,2922600418	1,2758859553	1,563956544																
+Nov-08	2018-11	1,2176064101	0,4182730566		0,2716997965	0,3147472513	1,4060106762	1,78025666																
+Dec-08	2018-12	1,0051986838	0,3344428777		0,2066633597	0,3012527874	1,2581007619	1,471822306																

二進制
data/original/RA_ExpFB_Renditedaten.xlsx


二進制
favicon.ico


+ 69 - 0
index.html

@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta charset="utf-8">
+        <title>Erfahrungslernen-Verbraucherfaktenbox</title>
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        <link href="assets/shared/css/main.css" rel="stylesheet">
+    </head>
+    <body>
+        <main>
+            <div>
+<h2 id="fragestellungen-zur-risikokommunikation-für-verbraucher">Fragestellungen zur Risikokommunikation für Verbraucher</h2>
+<p>Liegt ein Problem des Risikos vor, d.h. sind belastbare numerische Schätzer vom Eintreffen spezifischer Ereignisse oder Entscheidungenkonsequenzen verfügbar, ist eine Hauptfragestellung, wie Risikokommunikation hier transparent, ausgewogen und verständlich für die Verbraucher sein kann? Vier Herausforderungen sind hierbei</p>
+<ol type="1">
+<li>Wie können Einzelfallwahrscheinlichkeiten trotz aleatorischer Unsicherheit über den konkreten Ausgang im Einzelfall vermittelt werden?</li>
+<li>Wie lassen sich seltene Ereignisse als solche erkennen?</li>
+<li>Wie lassen sich Handlungsoptionen hinsichtlich der Wahrscheinlichkeiten kontrastieren?</li>
+<li>Wie lassen sich die ersten drei Herausforderungen nicht nur nach dem letzten Stand der Forschung sondern zudem auch ansprechend adressieren, da das Hervorrufen von Aufmerksamkeit und Bindung des Verbrauchers an das Informationsangebot für dessen Exploration notwendig ist.</li>
+</ol>
+<h2 id="lösungsansatz">Lösungsansatz</h2>
+<p>Erfahrungslernen-Verbraucherfaktenbox</p>
+<ol type="1">
+<li>Einzelfallwahrscheinlichkeiten lassen sich entweder mit einfachen Häufigkeiten (sofern nur Wahrscheinlichkeitswerte &gt; 1% auch als Prozentformat) in tabellarischer Form (Schwartz et al., 2009) oder, zur Unterstützung von Verbrauchern mit niedriger Numeracy (Cokely et al., 2012), durch den Einsatz von empirisch validierten Grafikformaten (Garcia-Retamero &amp; Galesic, 2010), Barcharts oder IconArrays kommunizieren.</li>
+<li>Lernen aus der Erfahrung führt zu anderen Entscheidungen mit Risiken als das Lernen aus Beschreibungen (description-experience gap, Hertwig &amp; Erev, 2009). So konnte beispielsweise gezeigt werden, wie erfahrungsbasierte Lernverfahren die Risikopräferenz bei Investitionsentscheidungen beeinflussen (Bradbury et al., 2014; Kaufmann et al., 2013). Hierfür ist entscheidend, dass Erfahrungslernen mit vollem Feedback zu besseren Wahrscheinlichkeitsabschätzungen führen kann (Hau et al., 2008; Ungemach et al., 2009) und veränderte Wahrscheinlichkeitsgewichtungen (z.B. bei seltenen Ereignissen) nicht auf Stichprobenfehler oder systematische Schätzfehler zurückzuführen sind (Wulff et al., 2018). Dies mag auch der Natur des menschlichen Geistes zuschulden sein, wenn es darum geht, die Frequenzen von Ereignissen zu kodieren (Hasher &amp; Zacks, 1979).</li>
+<li>Faktenboxen als evaluiertes Format (McDowell et al., 2016, 2019) zeigen, wie Risikokommunikation an Entscheidungsoptionen knüpft, zugleich transparent, ausgewogen und verständlich ist. Sofern nicht gleichwertige Daten für verschiedene Entscheidungsoptionen vorliegen, sind zumindest qualitative Hinweise hilfreich.</li>
+<li>Dynamische Informationsvisualisierungen können ansprechend sein, wenn Sie auf verschiedenen Explorationstiefen, mit einem leichten Einstieg, begleitet mit Erklärtext und einem durchziehenden Narrativ versehen sind.</li>
+</ol>
+<p>Erste Ergebnisse der RisikoAtlas-Kommunikationsstudien mit dem vorliegenden Format zeigen, dass für eine begrenzte Anzahl von zu betrachtenden Risiko-Endpunkten (mögliche Nutzen und Schäden) die erfahrungsbasierte Risikokommunikation als Alternative zu den bereits erfolgreich evaluierten statischen Icon-Arrays betrachtet werden.</p>
+<h2 id="thematisches-muster">Thematisches Muster</h2>
+<p>…</p>
+<h2 id="einleitung">Einleitung</h2>
+<p>…</p>
+<h2 id="für-welche-verbraucher-ist-die-folgende-grafik-geeignet">Für welche Verbraucher ist die folgende Grafik geeignet?</h2>
+<p>…</p>
+            </div>
+
+            <iframe src="sampling.html" width="1024px" height="680px" frameborder="0"></iframe>
+
+            <div>
+<h2 id="was-zeigt-die-grafik">Was zeigt die Grafik?</h2>
+<p>…</p>
+<h2 id="woher-stammen-die-zahlen">Woher stammen die Zahlen?</h2>
+<p>…</p>
+<h2 id="wie-hoch-ist-die-qualität-der-daten">Wie hoch ist die Qualität der Daten?</h2>
+<p>…</p>
+<h2 id="quellen.">Quellen.</h2>
+<p>Bradbury, M. A., Hens, T., &amp; Zeisberger, S. (2014). Improving investment decisions with simulated experience. Review of Finance, 19(3), 1019-1052.<br />
+Cokely, E. T., Galesic, M., Schulz, E., Ghazal, S., &amp; Garcia-Retamero, R. (2012). Measuring Risk Literacy: The Berlin Numeracy Test. Judgment and Decision Making, 7(1), 25-47.<br />
+Frey, C. B., &amp; Osborne, M. A. (2017). The future of employment: how susceptible are jobs to computerisation?. Technological Forecasting and Social Change, 114, 254-280.<br />
+Garcia-Retamero, R., &amp; Galesic, M. (2010). Who proficts from visual aids: Overcoming challenges in people’s understanding of risks. Social Science &amp; Medicine, 70(7), 1019-1025.<br />
+Hasher, L., &amp; Zacks, R. T. (1979). Automatic and effortful processes in memory. Journal of Experimental Psychology: General, 108(3), 356-388.<br />
+Hau, R., Pleskac, T. J., Kiefer, J., &amp; Hertwig, R. (2008). The description–experience gap in risky choice: The role of sample size and experienced probabilities. Journal of Behavioral Decision Making, 21(5), 493-518.<br />
+Hertwig, R., &amp; Erev, I. (2009). The description–experience gap in risky choice. Trends in Cognitive Sciences, 13(12), 517-523.<br />
+Kaufmann, C., Weber, M., &amp; Haisley, E. (2013). The role of experience sampling and graphical displays on one’s investment risk appetite. Management science, 59(2), 323-340.<br />
+McDowell, M., Gigerenzer, G., Wegwarth, O., &amp; Rebitschek, F. G. (2019). Effect of Tabular and Icon Fact Box Formats on Comprehension of Benefits and Harms of Prostate Cancer Screening: A Randomized Trial. Medical Decision Making, 39(1), 41-56.<br />
+McDowell, M., Rebitschek, F. G., Gigerenzer, G., &amp; Wegwarth, O. (2016). A simple tool for communicating the benefits and harms of health interventions: a guide for creating a fact box. MDM Policy &amp; Practice, 1(1), 2381468316665365.<br />
+Schwartz, L. M., Woloshin, S., &amp; Welch, H. G. (2009). Using a drug facts box to communicate drug benefits and harms: two randomized trials. Annals of Internal Medicine, 150(8), 516-527.<br />
+Ungemach, C., Chater, N., &amp; Stewart, N. (2009). Are probabilities overweighted or underweighted when rare outcomes are experienced (rarely)?. Psychological Science, 20(4), 473-479.<br />
+Wulff, D. U., Mergenthaler-Canseco, M., &amp; Hertwig, R. (2018). A meta-analytic review of two modes of learning and the description-experience gap. Psychological Bulletin, 144(2), 140-176.</p>
+<h2 id="letztes-update">Letztes Update</h2>
+<ol start="7" type="1">
+<li>Februar 2019</li>
+</ol>
+<h2 id="erstellung">Erstellung</h2>
+<p>Felix G. Rebitschek, Michael Zitzmann</p>
+            </div>
+        </main>
+    </body>
+</html>

+ 7 - 0
jsconfig.json

@@ -0,0 +1,7 @@
+{
+  "compilerOptions": {
+    "target": "ES6",
+    "module": "amd",
+    "experimentalDecorators": true
+  }
+}

+ 34 - 0
karma.conf.js

@@ -0,0 +1,34 @@
+"use strict";
+const path = require('path');
+const project = require('./aurelia_project/aurelia.json');
+
+let testSrc = [
+  { pattern: project.unitTestRunner.source, included: false },
+  'test/aurelia-karma.js'
+];
+
+let output = project.platform.output;
+let appSrc = project.build.bundles.map(x => path.join(output, x.name));
+let entryIndex = appSrc.indexOf(path.join(output, project.build.loader.configTarget));
+let entryBundle = appSrc.splice(entryIndex, 1)[0];
+let files = [entryBundle].concat(testSrc).concat(appSrc);
+
+module.exports = function(config) {
+  config.set({
+    basePath: '',
+    frameworks: [project.testFramework.id],
+    files: files,
+    exclude: [],
+    preprocessors: {
+      [project.unitTestRunner.source]: [project.transpiler.id]
+    },
+    'babelPreprocessor': { options: project.transpiler.options },
+    reporters: ['progress'],
+    port: 9876,
+    colors: true,
+    logLevel: config.LOG_INFO,
+    autoWatch: true,
+    browsers: ['Chrome'],
+    singleRun: false
+  });
+};

+ 95 - 0
package.json

@@ -0,0 +1,95 @@
+{
+  "name": "experience-based-fact-box-aimless",
+  "version": "1.0.0",
+  "license": "MIT",
+  "dependencies": {
+    "aurelia-animator-css": "^1.0.4",
+    "aurelia-binding": "^2.3.1",
+    "aurelia-bootstrapper": "^2.3.3",
+    "aurelia-fetch-client": "^1.8.2",
+    "aurelia-http-client": "^1.3.1",
+    "aurelia-validation": "^1.4.0",
+    "bluebird": "^3.5.5",
+    "bourbon-neat": "^3.0.1",
+    "d3-array": "^2.2.0",
+    "d3-collection": "^1.0.7",
+    "d3-dispatch": "^1.0.5",
+    "d3-ease": "^1.0.5",
+    "d3-fetch": "^1.1.2",
+    "d3-format": "^1.3.2",
+    "d3-interpolate": "^1.3.2",
+    "d3-scale": "^3.0.0",
+    "d3-selection": "^1.4.0",
+    "d3-time": "^1.0.11",
+    "d3-time-format": "^2.1.3",
+    "d3-timer": "^1.0.9",
+    "d3-transition": "^1.2.0",
+    "node-gyp": "^5.0.2",
+    "node-sass": "^4.12.0",
+    "npm": "^6.10.0",
+    "whatwg-fetch": "^3.0.0"
+  },
+  "peerDependencies": {},
+  "devDependencies": {
+    "@babel/core": "^7.5.0",
+    "@babel/preset-env": "^7.5.2",
+    "aurelia-cli": "^1.0.2",
+    "aurelia-dependency-injection": "^1.4.2",
+    "aurelia-event-aggregator": "^1.0.3",
+    "aurelia-framework": "^1.3.1",
+    "aurelia-history": "^1.2.1",
+    "aurelia-history-browser": "^1.4.0",
+    "aurelia-loader-default": "^1.2.1",
+    "aurelia-logging-console": "^1.1.1",
+    "aurelia-pal-browser": "^1.8.1",
+    "aurelia-polyfills": "^1.3.4",
+    "aurelia-route-recognizer": "^1.3.2",
+    "aurelia-router": "^1.7.1",
+    "aurelia-templating-binding": "^1.5.3",
+    "aurelia-templating-resources": "^1.11.0",
+    "aurelia-templating-router": "^1.4.0",
+    "aurelia-testing": "^1.0.0",
+    "aurelia-tools": "^2.0.0",
+    "babel-eslint": "^10.0.2",
+    "babel-plugin-syntax-flow": "^6.18.0",
+    "babel-plugin-transform-decorators-legacy": "^1.3.5",
+    "babel-plugin-transform-es2015-modules-amd": "^6.24.1",
+    "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
+    "babel-plugin-transform-flow-strip-types": "^6.22.0",
+    "babel-polyfill": "^6.26.0",
+    "babel-preset-env": "^1.7.0",
+    "babel-preset-es2015": "^6.24.1",
+    "babel-preset-es2015-loose": "^8.0.0",
+    "babel-preset-stage-1": "^6.24.1",
+    "babel-register": "^6.26.0",
+    "browser-sync": "^2.26.7",
+    "connect-history-api-fallback": "^1.6.0",
+    "gulp": "^4.0.2",
+    "gulp-babel": "^8.0.0",
+    "gulp-changed-in-place": "^2.3.0",
+    "gulp-eslint": "^6.0.0",
+    "gulp-notify": "^3.2.0",
+    "gulp-plumber": "^1.2.1",
+    "gulp-rename": "^1.4.0",
+    "gulp-sass": "^4.0.2",
+    "gulp-sourcemaps": "^2.6.5",
+    "jasmine-core": "^3.4.0",
+    "jspm": "^0.16.54",
+    "karma": "^4.1.0",
+    "karma-babel-preprocessor": "^8.0.0",
+    "karma-chrome-launcher": "^2.2.0",
+    "karma-jasmine": "^2.0.1",
+    "minimatch": "^3.0.4",
+    "through2": "^3.0.1",
+    "uglify-js": "^3.6.0",
+    "vinyl-fs": "^3.0.3"
+  },
+  "jspm": {
+    "dependencies": {},
+    "devDependencies": {
+      "babel": "npm:babel-core@^5.8.24",
+      "babel-runtime": "npm:babel-runtime@^5.8.24",
+      "core-js": "npm:core-js@^1.1.4"
+    }
+  }
+}

+ 15 - 0
sampling.html

@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <title></title>
+    <style type="text/css">.aurelia-hide { visibility:hidden !important; }</style>
+    <script src="scripts/configuration.js" type="text/javascript"></script>
+    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
+    <script type="text/javascript" src="assets/pdfkit.min.js"></script>
+    <script type="text/javascript" src="assets/blob-stream.min.js"></script>
+  </head>
+
+  <body aurelia-app="main">
+    <script src="scripts/vendor-bundle.js" data-main="aurelia-bootstrapper"></script>
+  </body>
+</html>

File diff suppressed because it is too large
+ 3793 - 0
scripts/_vendor-bundle.js


+ 156 - 0
scripts/configuration.js

@@ -0,0 +1,156 @@
+var appConfig =[
+    {
+        "config": {
+            "buttonLabels": [
+                "N\u00e4chster Fall", 
+                "Start", 
+                "Stop"
+            ], 
+            "groupSizes": [
+                {
+                    "id": 0, 
+                    "value": 1
+                }, 
+                {
+                    "id": 1, 
+                    "value": 10
+                }, 
+                {
+                    "id": 2, 
+                    "value": 100
+                }
+            ],
+            "intervalSize": 1000,
+            "maxSamples": 1000,
+            "modes": [
+                {
+                    "id": 0, 
+                    "value": "manuell"
+                }, 
+                {
+                    "id": 1, 
+                    "value": "auto"
+                }
+            ], 
+            "sorting": [
+                {
+                    "id": 0,
+                    "value": "keine"
+                },
+                {
+                    "id": 1,
+                    "value": "O -> o"
+                },
+                {
+                    "id": 2,
+                    "value": "o -> O"
+                },
+                {
+                    "id": 3,
+                    "value": "Faktenbox\u2122"
+                }
+            ],
+            "formats": [
+                {
+                    "id": 0,
+                    "modeId": 0,
+                    "name": "seqs",
+                    "showControls": false,
+                    "showSampleButton": true,
+                    "showText": true,
+                    "showVisualisation": false,
+                    "sizeId": 0,
+                    "sortId": null  // not applicable
+                },
+                {
+                    "id": 1,
+                    "modeId": null,  // not applicable
+                    "name": "desc",
+                    "showControls": false,
+                    "showSampleButton": false,
+                    "showText": false,
+                    "showVisualisation": true,
+                    "sizeId": null,  // not applicable
+                    "sortId": 3
+                },
+                {
+                    "id": 2,
+                    "modeId": 0,
+                    "name": "seqm",
+                    "showControls": false,
+                    "showSampleButton": true,
+                    "showText": true,
+                    "showVisualisation": true,
+                    "sizeId": 0,
+                    "sortId": 3
+                },
+                {
+                    "id": 3,
+                    "modeId": 0,
+                    "name": "open",
+                    "showControls": false,
+                    "showSampleButton": true,
+                    "showText": true,
+                    "showVisualisation": true,
+                    "sizeId": 0,
+                    "sortId": 3
+                }
+            ],
+            "colours": [
+                "#cccccc",
+                "#9E1E20",
+                "#0971B2",
+                "#ff974f",
+                "#FFCE19",
+                "#bbbb00"
+            ],
+        },
+    },
+    {
+        "classes": [
+            [
+                {
+                    // "colour": "#cccccc",
+                    "id": 0,
+                    "name": {de: "Kein kriminelles Ereignis", en: "Nothing happened"},
+                    "pval": 0.7979
+                }, 
+                {
+                    // "colour": "#9E1E20",
+                    "id": 1,
+                    "name": {de: "Straftat", en: "Any crime"},
+                    "pval": 0.1057
+                }, 
+                {
+                    // "colour": "#0971B2",
+                    "id": 2,
+                    "name": {de: "Straftat gegen das Leben", en: "Offense against life"},
+                    "pval": 0.0002
+                }, 
+                {
+                    // "colour": "#ff974f",
+                    "id": 3,
+                    "name": {de: "Straftat mit Körperverletzung", en: "Brutalization offense"},
+                    "pval": 0.0918
+                }, 
+                {
+                    // "colour": "#FFCE19",
+                    "id": 4,
+                    "name": {de: "Straftaten gegen die sexuelle Selbstbestimmung", en: "Offense against sexual self determination"},
+                    "pval": 0.0044
+                }
+            ],
+        ],
+        "formatId": 2,
+        "nrSurveys": 2,
+        "heading": {de: "Verbesserte Straßenbeleuchtung gegen Kriminalität", en: "Improved street lighting against crime"},
+        "subheading": {de: "Vergleich von Kriminalitätsrisiken über 10 Jahre ohne und mit verbesserter Straßenbeleuchtung", en:"Comparison of 10-year crime risks without and with improved street lighting"},
+        "referenceGroup1": {de: "Übliche Straßenbeleuchtung", en: "Standard street lighting"},
+        "referenceGroup2": {de: "Verbesserte Straßenbeleuchtung", en: "Improved street lighting"},
+        "buttonLabel": {de: "Mehr Personen", en: "More persons"},
+        overview_prefix: {de: "Sie haben", en: "You studied"},
+        overview_infix: { first: {de: "keine Person", en: "no individual"}, more: {de: "Personen", en: "individuals"}},
+        overview_suffix: {de: "angeschaut", en: ""},
+        textual: {de: "Person Nr.", en: "Individual No."}
+    }
+]

二進制
scripts/jsbundles.zip


+ 36 - 0
scripts/require.js

@@ -0,0 +1,36 @@
+/*
+ RequireJS 2.2.0 Copyright jQuery Foundation and other contributors.
+ Released under MIT license, http://github.com/requirejs/requirejs/LICENSE
+*/
+var requirejs,require,define;
+(function(ga){function ka(b,c,d,g){return g||""}function K(b){return"[object Function]"===Q.call(b)}function L(b){return"[object Array]"===Q.call(b)}function y(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+=1);}}function X(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b));--d);}}function x(b,c){return la.call(b,c)}function e(b,c){return x(b,c)&&b[c]}function D(b,c){for(var d in b)if(x(b,d)&&c(b[d],d))break}function Y(b,c,d,g){c&&D(c,function(c,e){if(d||!x(b,e))!g||"object"!==
+typeof c||!c||L(c)||K(c)||c instanceof RegExp?b[e]=c:(b[e]||(b[e]={}),Y(b[e],c,d,g))});return b}function z(b,c){return function(){return c.apply(b,arguments)}}function ha(b){throw b;}function ia(b){if(!b)return b;var c=ga;y(b.split("."),function(b){c=c[b]});return c}function F(b,c,d,g){c=Error(c+"\nhttp://requirejs.org/docs/errors.html#"+b);c.requireType=b;c.requireModules=g;d&&(c.originalError=d);return c}function ma(b){function c(a,n,b){var h,k,f,c,d,l,g,r;n=n&&n.split("/");var q=p.map,m=q&&q["*"];
+if(a){a=a.split("/");k=a.length-1;p.nodeIdCompat&&U.test(a[k])&&(a[k]=a[k].replace(U,""));"."===a[0].charAt(0)&&n&&(k=n.slice(0,n.length-1),a=k.concat(a));k=a;for(f=0;f<k.length;f++)c=k[f],"."===c?(k.splice(f,1),--f):".."===c&&0!==f&&(1!==f||".."!==k[2])&&".."!==k[f-1]&&0<f&&(k.splice(f-1,2),f-=2);a=a.join("/")}if(b&&q&&(n||m)){k=a.split("/");f=k.length;a:for(;0<f;--f){d=k.slice(0,f).join("/");if(n)for(c=n.length;0<c;--c)if(b=e(q,n.slice(0,c).join("/")))if(b=e(b,d)){h=b;l=f;break a}!g&&m&&e(m,d)&&
+(g=e(m,d),r=f)}!h&&g&&(h=g,l=r);h&&(k.splice(0,l,h),a=k.join("/"))}return(h=e(p.pkgs,a))?h:a}function d(a){E&&y(document.getElementsByTagName("script"),function(n){if(n.getAttribute("data-requiremodule")===a&&n.getAttribute("data-requirecontext")===l.contextName)return n.parentNode.removeChild(n),!0})}function m(a){var n=e(p.paths,a);if(n&&L(n)&&1<n.length)return n.shift(),l.require.undef(a),l.makeRequire(null,{skipMap:!0})([a]),!0}function r(a){var n,b=a?a.indexOf("!"):-1;-1<b&&(n=a.substring(0,
+b),a=a.substring(b+1,a.length));return[n,a]}function q(a,n,b,h){var k,f,d=null,g=n?n.name:null,p=a,q=!0,m="";a||(q=!1,a="_@r"+(Q+=1));a=r(a);d=a[0];a=a[1];d&&(d=c(d,g,h),f=e(v,d));a&&(d?m=f&&f.normalize?f.normalize(a,function(a){return c(a,g,h)}):-1===a.indexOf("!")?c(a,g,h):a:(m=c(a,g,h),a=r(m),d=a[0],m=a[1],b=!0,k=l.nameToUrl(m)));b=!d||f||b?"":"_unnormalized"+(T+=1);return{prefix:d,name:m,parentMap:n,unnormalized:!!b,url:k,originalName:p,isDefine:q,id:(d?d+"!"+m:m)+b}}function u(a){var b=a.id,
+c=e(t,b);c||(c=t[b]=new l.Module(a));return c}function w(a,b,c){var h=a.id,k=e(t,h);if(!x(v,h)||k&&!k.defineEmitComplete)if(k=u(a),k.error&&"error"===b)c(k.error);else k.on(b,c);else"defined"===b&&c(v[h])}function A(a,b){var c=a.requireModules,h=!1;if(b)b(a);else if(y(c,function(b){if(b=e(t,b))b.error=a,b.events.error&&(h=!0,b.emit("error",a))}),!h)g.onError(a)}function B(){V.length&&(y(V,function(a){var b=a[0];"string"===typeof b&&(l.defQueueMap[b]=!0);G.push(a)}),V=[])}function C(a){delete t[a];
+delete Z[a]}function J(a,b,c){var h=a.map.id;a.error?a.emit("error",a.error):(b[h]=!0,y(a.depMaps,function(h,f){var d=h.id,g=e(t,d);!g||a.depMatched[f]||c[d]||(e(b,d)?(a.defineDep(f,v[d]),a.check()):J(g,b,c))}),c[h]=!0)}function H(){var a,b,c=(a=1E3*p.waitSeconds)&&l.startTime+a<(new Date).getTime(),h=[],k=[],f=!1,g=!0;if(!aa){aa=!0;D(Z,function(a){var l=a.map,e=l.id;if(a.enabled&&(l.isDefine||k.push(a),!a.error))if(!a.inited&&c)m(e)?f=b=!0:(h.push(e),d(e));else if(!a.inited&&a.fetched&&l.isDefine&&
+(f=!0,!l.prefix))return g=!1});if(c&&h.length)return a=F("timeout","Load timeout for modules: "+h,null,h),a.contextName=l.contextName,A(a);g&&y(k,function(a){J(a,{},{})});c&&!b||!f||!E&&!ja||ba||(ba=setTimeout(function(){ba=0;H()},50));aa=!1}}function I(a){x(v,a[0])||u(q(a[0],null,!0)).init(a[1],a[2])}function O(a){a=a.currentTarget||a.srcElement;var b=l.onScriptLoad;a.detachEvent&&!ca?a.detachEvent("onreadystatechange",b):a.removeEventListener("load",b,!1);b=l.onScriptError;a.detachEvent&&!ca||a.removeEventListener("error",
+b,!1);return{node:a,id:a&&a.getAttribute("data-requiremodule")}}function P(){var a;for(B();G.length;){a=G.shift();if(null===a[0])return A(F("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));I(a)}l.defQueueMap={}}var aa,da,l,R,ba,p={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},t={},Z={},ea={},G=[],v={},W={},fa={},Q=1,T=1;R={require:function(a){return a.require?a.require:a.require=l.makeRequire(a.map)},exports:function(a){a.usingExports=!0;if(a.map.isDefine)return a.exports?
+v[a.map.id]=a.exports:a.exports=v[a.map.id]={}},module:function(a){return a.module?a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return e(p.config,a.map.id)||{}},exports:a.exports||(a.exports={})}}};da=function(a){this.events=e(ea,a.id)||{};this.map=a;this.shim=e(p.shim,a.id);this.depExports=[];this.depMaps=[];this.depMatched=[];this.pluginMaps={};this.depCount=0};da.prototype={init:function(a,b,c,h){h=h||{};if(!this.inited){this.factory=b;if(c)this.on("error",c);else this.events.error&&
+(c=z(this,function(a){this.emit("error",a)}));this.depMaps=a&&a.slice(0);this.errback=c;this.inited=!0;this.ignore=h.ignore;h.enabled||this.enabled?this.enable():this.check()}},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,--this.depCount,this.depExports[a]=b)},fetch:function(){if(!this.fetched){this.fetched=!0;l.startTime=(new Date).getTime();var a=this.map;if(this.shim)l.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],z(this,function(){return a.prefix?this.callPlugin():
+this.load()}));else return a.prefix?this.callPlugin():this.load()}},load:function(){var a=this.map.url;W[a]||(W[a]=!0,l.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id;b=this.depExports;var h=this.exports,k=this.factory;if(!this.inited)x(l.defQueueMap,c)||this.fetch();else if(this.error)this.emit("error",this.error);else if(!this.defining){this.defining=!0;if(1>this.depCount&&!this.defined){if(K(k)){if(this.events.error&&this.map.isDefine||g.onError!==
+ha)try{h=l.execCb(c,k,b,h)}catch(d){a=d}else h=l.execCb(c,k,b,h);this.map.isDefine&&void 0===h&&((b=this.module)?h=b.exports:this.usingExports&&(h=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",A(this.error=a)}else h=k;this.exports=h;if(this.map.isDefine&&!this.ignore&&(v[c]=h,g.onResourceLoad)){var f=[];y(this.depMaps,function(a){f.push(a.normalizedMap||a)});g.onResourceLoad(l,this.map,f)}C(c);
+this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}},callPlugin:function(){var a=this.map,b=a.id,d=q(a.prefix);this.depMaps.push(d);w(d,"defined",z(this,function(h){var k,f,d=e(fa,this.map.id),M=this.map.name,r=this.map.parentMap?this.map.parentMap.name:null,m=l.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(h.normalize&&(M=h.normalize(M,function(a){return c(a,r,!0)})||
+""),f=q(a.prefix+"!"+M,this.map.parentMap),w(f,"defined",z(this,function(a){this.map.normalizedMap=f;this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),h=e(t,f.id)){this.depMaps.push(f);if(this.events.error)h.on("error",z(this,function(a){this.emit("error",a)}));h.enable()}}else d?(this.map.url=l.nameToUrl(d),this.load()):(k=z(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),k.error=z(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];D(t,function(a){0===
+a.map.id.indexOf(b+"_unnormalized")&&C(a.map.id)});A(a)}),k.fromText=z(this,function(h,c){var d=a.name,f=q(d),M=S;c&&(h=c);M&&(S=!1);u(f);x(p.config,b)&&(p.config[d]=p.config[b]);try{g.exec(h)}catch(e){return A(F("fromtexteval","fromText eval for "+b+" failed: "+e,e,[b]))}M&&(S=!0);this.depMaps.push(f);l.completeLoad(d);m([d],k)}),h.load(a.name,m,k,p))}));l.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){Z[this.map.id]=this;this.enabling=this.enabled=!0;y(this.depMaps,z(this,function(a,
+b){var c,h;if("string"===typeof a){a=q(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=e(R,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;w(a,"defined",z(this,function(a){this.undefed||(this.defineDep(b,a),this.check())}));this.errback?w(a,"error",z(this,this.errback)):this.events.error&&w(a,"error",z(this,function(a){this.emit("error",a)}))}c=a.id;h=t[c];x(R,c)||!h||h.enabled||l.enable(a,this)}));D(this.pluginMaps,z(this,function(a){var b=e(t,a.id);
+b&&!b.enabled&&l.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){y(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};l={config:p,contextName:b,registry:t,defined:v,urlFetched:W,defQueue:G,defQueueMap:{},Module:da,makeModuleMap:q,nextTick:g.nextTick,onError:A,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");if("string"===typeof a.urlArgs){var b=
+a.urlArgs;a.urlArgs=function(a,c){return(-1===c.indexOf("?")?"?":"&")+b}}var c=p.shim,h={paths:!0,bundles:!0,config:!0,map:!0};D(a,function(a,b){h[b]?(p[b]||(p[b]={}),Y(p[b],a,!0,!0)):p[b]=a});a.bundles&&D(a.bundles,function(a,b){y(a,function(a){a!==b&&(fa[a]=b)})});a.shim&&(D(a.shim,function(a,b){L(a)&&(a={deps:a});!a.exports&&!a.init||a.exportsFn||(a.exportsFn=l.makeShimExports(a));c[b]=a}),p.shim=c);a.packages&&y(a.packages,function(a){var b;a="string"===typeof a?{name:a}:a;b=a.name;a.location&&
+(p.paths[b]=a.location);p.pkgs[b]=a.name+"/"+(a.main||"main").replace(na,"").replace(U,"")});D(t,function(a,b){a.inited||a.map.unnormalized||(a.map=q(b,null,!0))});(a.deps||a.callback)&&l.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ga,arguments));return b||a.exports&&ia(a.exports)}},makeRequire:function(a,n){function m(c,d,f){var e,r;n.enableBuildCallback&&d&&K(d)&&(d.__requireJsBuild=!0);if("string"===typeof c){if(K(d))return A(F("requireargs",
+"Invalid require call"),f);if(a&&x(R,c))return R[c](t[a.id]);if(g.get)return g.get(l,c,a,m);e=q(c,a,!1,!0);e=e.id;return x(v,e)?v[e]:A(F("notloaded",'Module name "'+e+'" has not been loaded yet for context: '+b+(a?"":". Use require([])")))}P();l.nextTick(function(){P();r=u(q(null,a));r.skipMap=n.skipMap;r.init(c,d,f,{enabled:!0});H()});return m}n=n||{};Y(m,{isBrowser:E,toUrl:function(b){var d,f=b.lastIndexOf("."),g=b.split("/")[0];-1!==f&&("."!==g&&".."!==g||1<f)&&(d=b.substring(f,b.length),b=b.substring(0,
+f));return l.nameToUrl(c(b,a&&a.id,!0),d,!0)},defined:function(b){return x(v,q(b,a,!1,!0).id)},specified:function(b){b=q(b,a,!1,!0).id;return x(v,b)||x(t,b)}});a||(m.undef=function(b){B();var c=q(b,a,!0),f=e(t,b);f.undefed=!0;d(b);delete v[b];delete W[c.url];delete ea[b];X(G,function(a,c){a[0]===b&&G.splice(c,1)});delete l.defQueueMap[b];f&&(f.events.defined&&(ea[b]=f.events),C(b))});return m},enable:function(a){e(t,a.id)&&u(a).enable()},completeLoad:function(a){var b,c,d=e(p.shim,a)||{},g=d.exports;
+for(B();G.length;){c=G.shift();if(null===c[0]){c[0]=a;if(b)break;b=!0}else c[0]===a&&(b=!0);I(c)}l.defQueueMap={};c=e(t,a);if(!b&&!x(v,a)&&c&&!c.inited)if(!p.enforceDefine||g&&ia(g))I([a,d.deps||[],d.exportsFn]);else return m(a)?void 0:A(F("nodefine","No define call for "+a,null,[a]));H()},nameToUrl:function(a,b,c){var d,k,f,m;(d=e(p.pkgs,a))&&(a=d);if(d=e(fa,a))return l.nameToUrl(d,b,c);if(g.jsExtRegExp.test(a))d=a+(b||"");else{d=p.paths;k=a.split("/");for(f=k.length;0<f;--f)if(m=k.slice(0,f).join("/"),
+m=e(d,m)){L(m)&&(m=m[0]);k.splice(0,f,m);break}d=k.join("/");d+=b||(/^data\:|^blob\:|\?/.test(d)||c?"":".js");d=("/"===d.charAt(0)||d.match(/^[\w\+\.\-]+:/)?"":p.baseUrl)+d}return p.urlArgs&&!/^blob\:/.test(d)?d+p.urlArgs(a,d):d},load:function(a,b){g.load(l,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===a.type||oa.test((a.currentTarget||a.srcElement).readyState))N=null,a=O(a),l.completeLoad(a.id)},onScriptError:function(a){var b=O(a);if(!m(b.id)){var c=[];
+D(t,function(a,d){0!==d.indexOf("_@r")&&y(a.depMaps,function(a){if(a.id===b.id)return c.push(d),!0})});return A(F("scripterror",'Script error for "'+b.id+(c.length?'", needed by: '+c.join(", "):'"'),a,[b.id]))}}};l.require=l.makeRequire();return l}function pa(){if(N&&"interactive"===N.readyState)return N;X(document.getElementsByTagName("script"),function(b){if("interactive"===b.readyState)return N=b});return N}var g,B,C,H,O,I,N,P,u,T,qa=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,ra=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
+U=/\.js$/,na=/^\.\//;B=Object.prototype;var Q=B.toString,la=B.hasOwnProperty,E=!("undefined"===typeof window||"undefined"===typeof navigator||!window.document),ja=!E&&"undefined"!==typeof importScripts,oa=E&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,ca="undefined"!==typeof opera&&"[object Opera]"===opera.toString(),J={},w={},V=[],S=!1;if("undefined"===typeof define){if("undefined"!==typeof requirejs){if(K(requirejs))return;w=requirejs;requirejs=void 0}"undefined"===typeof require||
+K(require)||(w=require,require=void 0);g=requirejs=function(b,c,d,m){var r,q="_";L(b)||"string"===typeof b||(r=b,L(c)?(b=c,c=d,d=m):b=[]);r&&r.context&&(q=r.context);(m=e(J,q))||(m=J[q]=g.s.newContext(q));r&&m.configure(r);return m.require(b,c,d)};g.config=function(b){return g(b)};g.nextTick="undefined"!==typeof setTimeout?function(b){setTimeout(b,4)}:function(b){b()};require||(require=g);g.version="2.2.0";g.jsExtRegExp=/^\/|:|\?|\.js$/;g.isBrowser=E;B=g.s={contexts:J,newContext:ma};g({});y(["toUrl",
+"undef","defined","specified"],function(b){g[b]=function(){var c=J._;return c.require[b].apply(c,arguments)}});E&&(C=B.head=document.getElementsByTagName("head")[0],H=document.getElementsByTagName("base")[0])&&(C=B.head=H.parentNode);g.onError=ha;g.createNode=function(b,c,d){c=b.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");c.type=b.scriptType||"text/javascript";c.charset="utf-8";c.async=!0;return c};g.load=function(b,c,d){var m=b&&b.config||
+{},e;if(E){e=g.createNode(m,c,d);e.setAttribute("data-requirecontext",b.contextName);e.setAttribute("data-requiremodule",c);!e.attachEvent||e.attachEvent.toString&&0>e.attachEvent.toString().indexOf("[native code")||ca?(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)):(S=!0,e.attachEvent("onreadystatechange",b.onScriptLoad));e.src=d;if(m.onNodeCreated)m.onNodeCreated(e,m,c,d);P=e;H?C.insertBefore(e,H):C.appendChild(e);P=null;return e}if(ja)try{setTimeout(function(){},
+0),importScripts(d),b.completeLoad(c)}catch(q){b.onError(F("importscripts","importScripts failed for "+c+" at "+d,q,[c]))}};E&&!w.skipDataMain&&X(document.getElementsByTagName("script"),function(b){C||(C=b.parentNode);if(O=b.getAttribute("data-main"))return u=O,w.baseUrl||-1!==u.indexOf("!")||(I=u.split("/"),u=I.pop(),T=I.length?I.join("/")+"/":"./",w.baseUrl=T),u=u.replace(U,""),g.jsExtRegExp.test(u)&&(u=O),w.deps=w.deps?w.deps.concat(u):[u],!0});define=function(b,c,d){var e,g;"string"!==typeof b&&
+(d=c,c=b,b=null);L(c)||(d=c,c=null);!c&&K(d)&&(c=[],d.length&&(d.toString().replace(qa,ka).replace(ra,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));S&&(e=P||pa())&&(b||(b=e.getAttribute("data-requiremodule")),g=J[e.getAttribute("data-requirecontext")]);g?(g.defQueue.push([b,c,d]),g.defQueueMap[b]=!0):V.push([b,c,d])};define.amd={jQuery:!0};g.exec=function(b){return eval(b)};g(w)}})(this);

+ 391 - 0
scripts/text.js

@@ -0,0 +1,391 @@
+/**
+ * @license RequireJS text 2.0.14 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved.
+ * Available via the MIT or new BSD license.
+ * see: http://github.com/requirejs/text for details
+ */
+/*jslint regexp: true */
+/*global require, XMLHttpRequest, ActiveXObject,
+  define, window, process, Packages,
+  java, location, Components, FileUtils */
+
+define(['module'], function (module) {
+    'use strict';
+
+    var text, fs, Cc, Ci, xpcIsWindows,
+        progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
+        xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,
+        bodyRegExp = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,
+        hasLocation = typeof location !== 'undefined' && location.href,
+        defaultProtocol = hasLocation && location.protocol && location.protocol.replace(/\:/, ''),
+        defaultHostName = hasLocation && location.hostname,
+        defaultPort = hasLocation && (location.port || undefined),
+        buildMap = {},
+        masterConfig = (module.config && module.config()) || {};
+
+    text = {
+        version: '2.0.14',
+
+        strip: function (content) {
+            //Strips <?xml ...?> declarations so that external SVG and XML
+            //documents can be added to a document without worry. Also, if the string
+            //is an HTML document, only the part inside the body tag is returned.
+            if (content) {
+                content = content.replace(xmlRegExp, "");
+                var matches = content.match(bodyRegExp);
+                if (matches) {
+                    content = matches[1];
+                }
+            } else {
+                content = "";
+            }
+            return content;
+        },
+
+        jsEscape: function (content) {
+            return content.replace(/(['\\])/g, '\\$1')
+                .replace(/[\f]/g, "\\f")
+                .replace(/[\b]/g, "\\b")
+                .replace(/[\n]/g, "\\n")
+                .replace(/[\t]/g, "\\t")
+                .replace(/[\r]/g, "\\r")
+                .replace(/[\u2028]/g, "\\u2028")
+                .replace(/[\u2029]/g, "\\u2029");
+        },
+
+        createXhr: masterConfig.createXhr || function () {
+            //Would love to dump the ActiveX crap in here. Need IE 6 to die first.
+            var xhr, i, progId;
+            if (typeof XMLHttpRequest !== "undefined") {
+                return new XMLHttpRequest();
+            } else if (typeof ActiveXObject !== "undefined") {
+                for (i = 0; i < 3; i += 1) {
+                    progId = progIds[i];
+                    try {
+                        xhr = new ActiveXObject(progId);
+                    } catch (e) {}
+
+                    if (xhr) {
+                        progIds = [progId];  // so faster next time
+                        break;
+                    }
+                }
+            }
+
+            return xhr;
+        },
+
+        /**
+         * Parses a resource name into its component parts. Resource names
+         * look like: module/name.ext!strip, where the !strip part is
+         * optional.
+         * @param {String} name the resource name
+         * @returns {Object} with properties "moduleName", "ext" and "strip"
+         * where strip is a boolean.
+         */
+        parseName: function (name) {
+            var modName, ext, temp,
+                strip = false,
+                index = name.lastIndexOf("."),
+                isRelative = name.indexOf('./') === 0 ||
+                             name.indexOf('../') === 0;
+
+            if (index !== -1 && (!isRelative || index > 1)) {
+                modName = name.substring(0, index);
+                ext = name.substring(index + 1);
+            } else {
+                modName = name;
+            }
+
+            temp = ext || modName;
+            index = temp.indexOf("!");
+            if (index !== -1) {
+                //Pull off the strip arg.
+                strip = temp.substring(index + 1) === "strip";
+                temp = temp.substring(0, index);
+                if (ext) {
+                    ext = temp;
+                } else {
+                    modName = temp;
+                }
+            }
+
+            return {
+                moduleName: modName,
+                ext: ext,
+                strip: strip
+            };
+        },
+
+        xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/,
+
+        /**
+         * Is an URL on another domain. Only works for browser use, returns
+         * false in non-browser environments. Only used to know if an
+         * optimized .js version of a text resource should be loaded
+         * instead.
+         * @param {String} url
+         * @returns Boolean
+         */
+        useXhr: function (url, protocol, hostname, port) {
+            var uProtocol, uHostName, uPort,
+                match = text.xdRegExp.exec(url);
+            if (!match) {
+                return true;
+            }
+            uProtocol = match[2];
+            uHostName = match[3];
+
+            uHostName = uHostName.split(':');
+            uPort = uHostName[1];
+            uHostName = uHostName[0];
+
+            return (!uProtocol || uProtocol === protocol) &&
+                   (!uHostName || uHostName.toLowerCase() === hostname.toLowerCase()) &&
+                   ((!uPort && !uHostName) || uPort === port);
+        },
+
+        finishLoad: function (name, strip, content, onLoad) {
+            content = strip ? text.strip(content) : content;
+            if (masterConfig.isBuild) {
+                buildMap[name] = content;
+            }
+            onLoad(content);
+        },
+
+        load: function (name, req, onLoad, config) {
+            //Name has format: some.module.filext!strip
+            //The strip part is optional.
+            //if strip is present, then that means only get the string contents
+            //inside a body tag in an HTML string. For XML/SVG content it means
+            //removing the <?xml ...?> declarations so the content can be inserted
+            //into the current doc without problems.
+
+            // Do not bother with the work if a build and text will
+            // not be inlined.
+            if (config && config.isBuild && !config.inlineText) {
+                onLoad();
+                return;
+            }
+
+            masterConfig.isBuild = config && config.isBuild;
+
+            var parsed = text.parseName(name),
+                nonStripName = parsed.moduleName +
+                    (parsed.ext ? '.' + parsed.ext : ''),
+                url = req.toUrl(nonStripName),
+                useXhr = (masterConfig.useXhr) ||
+                         text.useXhr;
+
+            // Do not load if it is an empty: url
+            if (url.indexOf('empty:') === 0) {
+                onLoad();
+                return;
+            }
+
+            //Load the text. Use XHR if possible and in a browser.
+            if (!hasLocation || useXhr(url, defaultProtocol, defaultHostName, defaultPort)) {
+                text.get(url, function (content) {
+                    text.finishLoad(name, parsed.strip, content, onLoad);
+                }, function (err) {
+                    if (onLoad.error) {
+                        onLoad.error(err);
+                    }
+                });
+            } else {
+                //Need to fetch the resource across domains. Assume
+                //the resource has been optimized into a JS module. Fetch
+                //by the module name + extension, but do not include the
+                //!strip part to avoid file system issues.
+                req([nonStripName], function (content) {
+                    text.finishLoad(parsed.moduleName + '.' + parsed.ext,
+                                    parsed.strip, content, onLoad);
+                });
+            }
+        },
+
+        write: function (pluginName, moduleName, write, config) {
+            if (buildMap.hasOwnProperty(moduleName)) {
+                var content = text.jsEscape(buildMap[moduleName]);
+                write.asModule(pluginName + "!" + moduleName,
+                               "define(function () { return '" +
+                                   content +
+                               "';});\n");
+            }
+        },
+
+        writeFile: function (pluginName, moduleName, req, write, config) {
+            var parsed = text.parseName(moduleName),
+                extPart = parsed.ext ? '.' + parsed.ext : '',
+                nonStripName = parsed.moduleName + extPart,
+                //Use a '.js' file name so that it indicates it is a
+                //script that can be loaded across domains.
+                fileName = req.toUrl(parsed.moduleName + extPart) + '.js';
+
+            //Leverage own load() method to load plugin value, but only
+            //write out values that do not have the strip argument,
+            //to avoid any potential issues with ! in file names.
+            text.load(nonStripName, req, function (value) {
+                //Use own write() method to construct full module value.
+                //But need to create shell that translates writeFile's
+                //write() to the right interface.
+                var textWrite = function (contents) {
+                    return write(fileName, contents);
+                };
+                textWrite.asModule = function (moduleName, contents) {
+                    return write.asModule(moduleName, fileName, contents);
+                };
+
+                text.write(pluginName, nonStripName, textWrite, config);
+            }, config);
+        }
+    };
+
+    if (masterConfig.env === 'node' || (!masterConfig.env &&
+            typeof process !== "undefined" &&
+            process.versions &&
+            !!process.versions.node &&
+            !process.versions['node-webkit'] &&
+            !process.versions['atom-shell'])) {
+        //Using special require.nodeRequire, something added by r.js.
+        fs = require.nodeRequire('fs');
+
+        text.get = function (url, callback, errback) {
+            try {
+                var file = fs.readFileSync(url, 'utf8');
+                //Remove BOM (Byte Mark Order) from utf8 files if it is there.
+                if (file[0] === '\uFEFF') {
+                    file = file.substring(1);
+                }
+                callback(file);
+            } catch (e) {
+                if (errback) {
+                    errback(e);
+                }
+            }
+        };
+    } else if (masterConfig.env === 'xhr' || (!masterConfig.env &&
+            text.createXhr())) {
+        text.get = function (url, callback, errback, headers) {
+            var xhr = text.createXhr(), header;
+            xhr.open('GET', url, true);
+
+            //Allow plugins direct access to xhr headers
+            if (headers) {
+                for (header in headers) {
+                    if (headers.hasOwnProperty(header)) {
+                        xhr.setRequestHeader(header.toLowerCase(), headers[header]);
+                    }
+                }
+            }
+
+            //Allow overrides specified in config
+            if (masterConfig.onXhr) {
+                masterConfig.onXhr(xhr, url);
+            }
+
+            xhr.onreadystatechange = function (evt) {
+                var status, err;
+                //Do not explicitly handle errors, those should be
+                //visible via console output in the browser.
+                if (xhr.readyState === 4) {
+                    status = xhr.status || 0;
+                    if (status > 399 && status < 600) {
+                        //An http 4xx or 5xx error. Signal an error.
+                        err = new Error(url + ' HTTP status: ' + status);
+                        err.xhr = xhr;
+                        if (errback) {
+                            errback(err);
+                        }
+                    } else {
+                        callback(xhr.responseText);
+                    }
+
+                    if (masterConfig.onXhrComplete) {
+                        masterConfig.onXhrComplete(xhr, url);
+                    }
+                }
+            };
+            xhr.send(null);
+        };
+    } else if (masterConfig.env === 'rhino' || (!masterConfig.env &&
+            typeof Packages !== 'undefined' && typeof java !== 'undefined')) {
+        //Why Java, why is this so awkward?
+        text.get = function (url, callback) {
+            var stringBuffer, line,
+                encoding = "utf-8",
+                file = new java.io.File(url),
+                lineSeparator = java.lang.System.getProperty("line.separator"),
+                input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),
+                content = '';
+            try {
+                stringBuffer = new java.lang.StringBuffer();
+                line = input.readLine();
+
+                // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
+                // http://www.unicode.org/faq/utf_bom.html
+
+                // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
+                // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
+                if (line && line.length() && line.charAt(0) === 0xfeff) {
+                    // Eat the BOM, since we've already found the encoding on this file,
+                    // and we plan to concatenating this buffer with others; the BOM should
+                    // only appear at the top of a file.
+                    line = line.substring(1);
+                }
+
+                if (line !== null) {
+                    stringBuffer.append(line);
+                }
+
+                while ((line = input.readLine()) !== null) {
+                    stringBuffer.append(lineSeparator);
+                    stringBuffer.append(line);
+                }
+                //Make sure we return a JavaScript string and not a Java string.
+                content = String(stringBuffer.toString()); //String
+            } finally {
+                input.close();
+            }
+            callback(content);
+        };
+    } else if (masterConfig.env === 'xpconnect' || (!masterConfig.env &&
+            typeof Components !== 'undefined' && Components.classes &&
+            Components.interfaces)) {
+        //Avert your gaze!
+        Cc = Components.classes;
+        Ci = Components.interfaces;
+        Components.utils['import']('resource://gre/modules/FileUtils.jsm');
+        xpcIsWindows = ('@mozilla.org/windows-registry-key;1' in Cc);
+
+        text.get = function (url, callback) {
+            var inStream, convertStream, fileObj,
+                readData = {};
+
+            if (xpcIsWindows) {
+                url = url.replace(/\//g, '\\');
+            }
+
+            fileObj = new FileUtils.File(url);
+
+            //XPCOM, you so crazy
+            try {
+                inStream = Cc['@mozilla.org/network/file-input-stream;1']
+                           .createInstance(Ci.nsIFileInputStream);
+                inStream.init(fileObj, 1, 0, false);
+
+                convertStream = Cc['@mozilla.org/intl/converter-input-stream;1']
+                                .createInstance(Ci.nsIConverterInputStream);
+                convertStream.init(inStream, "utf-8", inStream.available(),
+                Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
+
+                convertStream.readString(inStream.available(), readData);
+                convertStream.close();
+                inStream.close();
+                callback(readData.value);
+            } catch (e) {
+                throw new Error((fileObj && fileObj.path || '') + ': ' + e);
+            }
+        };
+    }
+    return text;
+});

+ 121 - 0
src/app.html

@@ -0,0 +1,121 @@
+<template>
+    <require from="./scss/styles.css"></require>
+    <require from="./sampler-visual"></require>
+    <require from="./sampler-textual.html"></require>
+    <require from="./sampling-info.html"></require>
+    <main class="${samplers.length === 2 ? 'two-samplers' : 'single-sampler'} ${format.name}">
+        <header>
+            <h1 class="factbox-title">${title[lang]}
+                <a href="#" click.delegate="toggleSource($event)"><i class="demo-icon ${modal.icon.class}" innerhtml.bind="modal.icon.glyph"></i></a>
+            </h1>
+            <h4 class="factbox-description">
+                ${description[lang]}
+                <select id="period-selector"
+                        value.bind="selectedPeriod"
+                        change.delegate="periodChanged()"
+                        class="period-selectors form-item">
+                    <option repeat.for="period of periods" model.bind="period">${period.value} ${labels.period[lang]}</option>
+                </select>
+            </h4>
+            <div as-element="sampling-info" id="source-modal" css="visibility: ${modal.visibility}">
+            </div>
+        </header>
+        <section class="samplers">
+            <div repeat.for="sampler of samplers"
+                 class="sampler sampler-wrapper-${samplers.indexOf(sampler)}">
+                <div class="reference-group">
+                    <h4 class="reference-group-title">
+                        ${referenceClasses[sampler.id].prefix[lang]} ${sampler.samples.length} ${referenceClasses[sampler.id].infix[lang]}
+                    </h4>
+                    <div class="investment-options-ratio">
+                        <div class="investment-option-selector investment-option-selector-left">
+                            <select id="investment-option-selector"
+                                    value.bind="selectedOption1"
+                                    change.delegate="investmentOptionChanged()"
+                                    class="form-item">
+                                <option repeat.for="iopt of investmentOptions"
+                                        disabled.bind="isComparism($index, 0)"
+                                        model.bind="iopt">${iopt.desc}</option>
+                            </select>
+                        </div>
+                        <div class="investment-option-range">
+                            <div class="investment-options-range-labels">
+                                <span class="range-label-left">${sampler.stockRatioRepr}</span>
+                                <span class="range-label-right">${sampler.depositRatioRepr}</span>
+                            </div>
+                            <input type="range" id="ratio-sampler-${sampler.id}" min="0" max="1.0" step="0.01" value.bind="sampler.depositRatio" change.delegate="ratioChanged()" />
+                        </div>
+                        <div class="investment-option-selector investment-option-selector-right">
+                            <select id="investment-option-selector"
+                                    value.bind="selectedOption2"
+                                    change.delegate="investmentOptionChanged()"
+                                    class="form-item">
+                                <option repeat.for="iopt of investmentOptions"
+                                        disabled.bind="isComparism($index, 1)"
+                                        model.bind="iopt">${iopt.desc}</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
+                <sampler-visual
+                    class="visual-${sampler.id}"
+                    sampler.bind="sampler"
+                    soffsets.bind="soffsets"
+                    colours.bind="colours"
+                    lang.bind="lang"
+                    max-samples.bind="maxSamples"
+                    sort-method-id.bind="format.sortId"
+                    if.bind="createVisualisation"
+                    show.bind="format.showVisualisation">
+                </sampler-visual>
+            </div>
+        </section>
+        <aside>
+            <div class="buttons size-selectors">
+                <div repeat.for="gsize of groupSizes" class="size-input">
+                    <input id="size-${gsize.id}" type="radio" class="input-radio" model.bind="gsize.id" checked.bind="format.sizeId" change.delegate="groupSizeChanged" />
+                    <label for="size-${gsize.id}" class="form-item">
+                        ${gsize.name}</label>
+                </div>
+            </div>
+            <sampler-textual
+                show.bind="format.showText"
+                class="textual-0"
+                colours.bind="colours"
+                sampler.bind="samplers[0]"
+                textual.bind="textual"
+                lang.bind="lang"
+                group-size-id.bind="format.sizeId">
+            </sampler-textual>
+                <button class="sample form-item"
+                        if.bind="format.showSampleButton"
+                        click.delegate="sampleButtonClicked($event)"
+                        disabled.bind="maximumSamplesDrawn">
+                    <a href="#"> ${labels.sample[lang]}</a>
+                </button>
+            <sampler-textual
+                show.bind="format.showText"
+                class="textual-1"
+                colours.bind="colours"
+                sampler.bind="samplers[1]"
+                textual.bind="textual"
+                lang.bind="lang"
+                group-size-id.bind="format.sizeId">
+            </sampler-textual>
+            <div class="buttons">
+                <button id="export" class="form-item export-button">
+                    <a href.bind="pdfDownloadURL" id="exportPDF" class="export button"
+                                                                 download.bind="pdfFilename">
+                        <i class="demo-icon icon-download">&#xe801;</i>Faktenbox
+                    </a>
+                </button>
+                <button class="form-item"
+                        if.bind="format.showSampleButton"
+                        click.delegate="reset($event)"
+                        disabled.bind="resetEnabled">
+                    <a href="#"><i class="demo-icon icon-ccw">&#xe802;</i>${labels.reset[lang]}</a>
+                </button>
+            </div>
+        </aside>
+    </main>
+</template>

+ 337 - 0
src/app.js

@@ -0,0 +1,337 @@
+import { inject } from 'aurelia-framework';
+import { EventAggregator } from 'aurelia-event-aggregator';
+import { PDFExport } from './pdfExport';
+
+import { UpdateVisualisation } from './messages';
+
+import { Sampler } from './sampler';
+import { SamplingConfiguration } from './configuration';
+import { VisualConfig } from './config_visual';
+
+import * as d3 from './d3custom';
+
+@inject(VisualConfig, EventAggregator)
+
+export class App {
+
+    riskOfOverflow = false;
+    visibilityModal = 'hidden';
+    visibility = 0;
+    modal = undefined;
+
+    soffsets = [];  // 'synchronised' visual / vertical offsets
+    pdfDownloadURL = '';
+    selectedPeriod = {};
+    configuration = undefined;
+
+    constructor(vconfig, eventaggregator) {
+
+        // keep configuration in case to reset app to defaults
+        this.configuration = new SamplingConfiguration();
+
+        this.ea = eventaggregator;
+
+        // visual configuration. bypass insane event massaging mess
+        for (let key in vconfig) {
+            this[key] = vconfig[key];
+        }
+
+        // general configuration
+        for (let key in this.configuration) {
+            this[key] = this.configuration[key];
+        }
+
+        this.modal = this.modalStates[this.visibility];
+        console.log(this.modal);
+
+        this.format = this.configuration.formats[this.formatId];
+        this.selectedPeriod = this.periods[this.format.periodId];
+        this.selectedOption1 = this.investmentOptions[this.format.investmentOption1Id];
+        this.selectedOption2 = this.investmentOptions[this.format.investmentOption2Id];
+
+        let option = window.location.search.substr(1, 4);
+        if (option === 'lang') {
+            this.lang = window.location.search.substr(6, window.location.search.length - 1);
+        } else {
+            this.lang = 'de';
+        }
+
+        // load new data
+        this.investmentOptionChanged();
+    }
+
+    initialise() {
+
+        this.samplers = [];
+
+        for (let i = 0; i < this.nrSamplers; ++i) {
+            let vo = [];
+            for (let c = 1; c < this.classes[0].length; ++c) {  // no offset for the default event
+                vo[c - 1] = 0;
+            }
+
+            let sampler = new Sampler(i, this.data, this.classes[0], this.investmentRatios[i], this.maxSamples, this.voffsets);
+            sampler.voffsets = vo;
+            this.samplers.push(sampler);
+        }
+
+        for (let i = 0; i < this.classes[0].length; ++i) {
+            this.soffsets[i] = 0;
+        }
+
+        document.title = this.title[this.lang];  // not using aurelia-router only to set document title
+
+        this.generatePDF();
+        this.reset();
+    }
+
+    queryData() {
+        let iopt1 = this.selectedPeriod.name + '_' + this.selectedOption1.name;
+        let iopt2 = this.selectedPeriod.name + '_' + this.selectedOption2.name;
+        this.filterData(this, 'data/data.tsv', iopt1, iopt2);
+    }
+
+    filterData(self, filepath, o1, o2) {
+
+        function parseVal(val) {
+            return parseFloat(val.replace(',', '.'));
+        }
+
+        d3.tsv(filepath, function(d) {
+            if (d[o1] && d[o2]) {
+                return {
+                    year: d.date_of_investment,
+                    values: [parseVal(d[o1]), parseVal(d[o2])]
+                };
+            }
+        }).then(function(data) {
+            self.data = data;
+            self.initialise();
+        });
+    }
+
+    zip(arrays) {
+        return arrays[0].map(function(_, i) {
+            return arrays.map(function(array) {
+                return array[i];
+            });
+        });
+    }
+
+    toggleSource(e) {
+        e.preventDefault();
+        this.visibility = (this.visibility + 1) % 2;
+        this.modal = this.modalStates[this.visibility];
+    }
+
+    sampleButtonClicked(e) {
+
+        /* // automatic mode, not enabled
+        if (this.format.modeId === 1) {
+            if (!this.intervalId) {
+                this.drawSamples();
+                this.intervalId = setInterval(this.drawSamples, this.intervalSize, this);
+                this.buttonLabel = this.buttonLabels[2];
+            } else {
+                this.stop();
+                // console.log('stopping. proceeding to evaluation');
+            }
+            return;
+        }*/
+
+        this.drawSamples(this, true);  // manual, send message?
+    }
+
+    drawSamples(diz, visualisationShouldBeUpdated = true) {
+
+        let self = diz || this; // hackety-hack for manual as well as automatic calls
+        if (self.samplers[0].samples.length >= self.maxSamples) {
+            // if (self.intervalId) {
+            //     self.stop();
+            // }
+            return;
+        }
+
+        let groupSize = self.groupSizes[self.formats[self.formatId].sizeId].value;
+        let remaining = self.samplers[0].maxSamples - self.samplers[0].samples.length;
+        let amount = remaining >= groupSize ? groupSize : remaining;
+
+        // let hblocks = self.blocks.horizontal.amount;
+        let vblocks = self.blocks.vertical.amount;
+        let hblocksize = self.blocks.horizontal.size;
+        let vblocksize = self.blocks.vertical.size;
+
+        for (let sampler of self.samplers) {
+            let spc = sampler.samplesPerClass();
+            for (let i = 0; i < sampler.classes.length; ++i) {
+                let amountBefore = spc[i].length;
+                let amountAfter = spc[i].length + groupSize;
+                if (spc[i].length > 0 &&
+                    Math.ceil(amountBefore / (vblocks * vblocksize)) === self.soffsets[i] * hblocksize &&
+                    Math.ceil(amountBefore / (vblocks * vblocksize)) < Math.ceil(amountAfter / (vblocks * vblocksize))) {
+                    self.riskOfOverflow = true;
+                    return;
+                }
+            }
+        }
+
+        for (let i = 0; i < amount; ++i) {
+            // (importance?) sampling. As all data points are now equally probable, this implementation is a bit of an overkill.
+            let cumulatedProbability = 0.0;
+            let rval = Math.random();
+            let probability = 1.0 / self.data.length;
+
+            let idx = 0;
+            for (; idx < self.data.length; ++idx) {
+                cumulatedProbability += probability;
+
+                if (rval < cumulatedProbability) {
+                    break;
+                }
+            }
+
+            for (let sampler of self.samplers) {
+                sampler.drawSample(self.data[idx]);
+            }
+        }
+
+        for (let sampler of self.samplers) {
+            sampler.updateOffsets(self.blocks * self.blocksize * self.blocksize);
+        }
+
+        for (let cidx = 0; cidx < self.classes[0].length; ++cidx) {
+            self.soffsets[cidx] = Math.max(self.samplers[0].voffsets[cidx], self.samplers[1].voffsets[cidx]);
+        }
+
+        if (visualisationShouldBeUpdated) {
+            self.ea.publish(new UpdateVisualisation());
+        }
+    }
+
+    // this function should always be called immediately after initialisation / reset
+    generatePDF() {
+
+        for (let i = 0; i < 1000; ++i) {
+            this.drawSamples(this, false);
+        }
+
+        this.pdfx = new PDFExport(
+            this,
+            {
+                title: this.title[this.lang],
+                description: this.description[this.lang] + ' ' + this.selectedPeriod.value + ' ' + this.labels.period[this.lang],
+                referenceClasses: [
+                    this.referenceClasses[0],
+                    this.referenceClasses[1]
+                ],
+                author: this.author,
+                subject: this.subject[this.lang],
+                classes: this.classes[0],
+                colours: this.colours,
+                context: this.context,
+                fontRatios: this.fontRatios,
+                iconArray: {
+                    blocks: this.blocks,
+                    // blocksize: this.blocksize,
+                    // blockspacingRatio: this.blockspacingRatio,
+                    dotspacingRatio: this.dotspacingRatio,
+                    radius: this.radius
+                },
+                lang: this.lang,
+                labels: this.labels,
+                maxSamples: this.maxSamples,
+                samples: [this.samplers[0].samples, this.samplers[1].samples],
+                samplers: this.samplers,
+                soffsets: this.soffsets,
+                reference: this.reference
+            }
+        );
+    }
+
+    logAction(property, value) {
+
+        let timestamp = new Date().toISOString();
+        let msg = {
+            'time': timestamp,
+            'property': property,
+            'value': value
+        };
+
+        // this.logger.info(msg);
+        return JSON.stringify(msg);
+    }
+
+    updatePDFLink(url) {
+        this.pdfDownloadURL = url;
+        this.pdfFilename = this.title[this.lang] + '.pdf';
+    }
+
+    clearSamples() {
+        for (let sampler of this.samplers) {
+            sampler.reset();
+        }
+        this.riskOfOverflow = false;
+        this.ea.publish(new UpdateVisualisation());
+    }
+
+    groupSizeChanged() {
+        this.riskOfOverflow = false;
+    }
+
+    investmentOptionChanged() {
+        this.queryData();
+    }
+
+    periodChanged() {
+        this.queryData();
+    }
+
+    ratioChanged() {
+        this.generatePDF();
+        this.clearSamples();
+    }
+
+    get createVisualisation() {
+        if (this.formatId === 0) {  // 'seqs': text only
+            return false;
+        }
+
+        return true;
+    }
+
+    // disable option if already selected in comparative selection
+    // idx: index of option (select)
+    // oid: index of respective selected Option
+    isComparism(idx, oid) {
+        let coptid;
+        if (oid === 0) {
+            coptid = this.selectedOption2.id;
+        } else if (oid === 1) {
+            coptid = this.selectedOption1.id;
+        }
+
+        return idx === coptid;
+    }
+
+    get resetEnabled() {
+        return this.samplers[0].samples.length === 0;
+    }
+
+    get maximumSamplesDrawn() {
+        return this.riskOfOverflow;
+    }
+
+    reset() {
+        // this.stop();
+        this.format = this.configuration.formats[this.formatId];
+        this.selectedPeriod = this.periods[this.format.periodId];
+        // this.selectedOption1 = this.investmentOptions[this.format.investmentOption1Id];
+        // this.selectedOption2 = this.investmentOptions[this.format.investmentOption2Id];
+
+        if (this.samplers) {
+            this.clearSamples();
+        }
+
+        this.riskOfOverflow = false;
+    }
+}

+ 29 - 0
src/config_visual.js

@@ -0,0 +1,29 @@
+export class VisualConfig {
+    radius = 3.5;
+
+    blocks = {
+        horizontal: {
+            size: 8,
+            amount: 5,
+            spacingRatio: 0.5
+        },
+        vertical: {
+            size: 5,
+            amount: 5,
+            spacingRatio: 0.0
+        }
+    };
+
+    layout = 'vertical';
+
+    dotspacingRatio = 0.5;
+    blockspacingRatio = 0.5;
+
+    bins = [
+        '+50%',
+        '+20%',
+        '0%',
+        '-20%',
+        '-50%'
+    ];
+}

+ 266 - 0
src/configuration.js

@@ -0,0 +1,266 @@
+export class SamplingConfiguration {
+
+    allColours = {
+        bright: [
+            '#847d71',
+            '#0d47dd',
+            '#0dafdd',
+            '#0ddda3',
+            '#0ddd3b',
+            '#afdd0d',
+            '#dda30d',
+            '#dd3b0d',
+            '#dd0d47',
+            '#dd0daf'
+        ],
+        medium: [
+            '#ad4f28',
+            '#db8b3e',
+            '#1bb5a9',
+            '#107d83',
+            '#00485e'
+        ],
+        dark: [
+            '#322f2b',
+            '#07246d',
+            '#07576d',
+            '#076d50',
+            '#076d1d',
+            '#576d07',
+            '#6d5007',
+            '#6d1d07',
+            '#6d0724',
+            '#6d0757'
+        ]
+    };
+
+    author = 'HC RA';
+
+    // new classes w/o probabilities -> sampling based on data
+    // order of classes is important for the sampling process!
+    classes = [
+        [
+            {
+                'id': 0,
+                'name': {de: 'Verluste', en: 'at least 50% loss'},
+                'min': -1000000.0,
+                'max': 0.0
+            },
+            {
+                'id': 1,
+                'name': {de: 'bis zu\n500 €', en: 'at most 50% loss'},
+                'min': 0.0,
+                'max': 0.5
+            },
+            {
+                'id': 2,
+                'name': {de: 'bis zu\n1000 €', en: 'at most 20% loss'},
+                'min': 0.5,
+                'max': 1.0
+            },
+            {
+                'id': 3,
+                'name': {de: 'bis zu\n2000 €', en: 'at most 20% gain'},
+                'min': 1.0,
+                'max': 2.0
+            },
+            {
+                'id': 4,
+                'name': {de: 'mehr als\n2000 €', en: 'at most 50% gain'},
+                'min': 2.0,
+                'max': 1000000.0
+            }
+        ]
+    ];
+
+    description = {
+        de: 'Vergleich von möglichen Renditen individueller Geldanlagen über eine Laufzeit von',
+        en: 'Comparison of 10-year crime risks without and with improved street lighting'
+    };
+
+    // major third
+    fontRatios = {
+        tiny: 0.8,
+        small: 1,
+        medium: 1.25,
+        large: 1.563,
+        huge: 1.953
+    };
+
+    formatId = 2;
+    formats = [
+        {
+            'id': 0,
+            'investmentOptionsIds': [0, 4],
+            'investmentOption1Id': 0,
+            'investmentOption2Id': 1,
+            'modeId': 0,
+            'name': 'seqs',
+            'periodId': 1,
+            'showControls': false,
+            'showSampleButton': true,
+            'showText': true,
+            'showVisualisation': false,
+            'sizeId': 0,
+            'sortId': null  // not applicable
+        },
+        {
+            'id': 1,
+            'investmentOptionsIds': [0, 4],
+            'investmentOption1Id': 0,
+            'investmentOption2Id': 1,
+            'modeId': null,  // not applicable
+            'name': 'desc',
+            'periodId': 1,
+            'showControls': false,
+            'showSampleButton': false,
+            'showText': false,
+            'showVisualisation': true,
+            'sizeId': null,  // not applicable
+            'sortId': 3
+        },
+        {
+            'id': 2,
+            'investmentOptionsIds': [0, 4],
+            'investmentOption1Id': 0,
+            'investmentOption2Id': 1,
+            'modeId': 0,
+            'name': 'seqm',
+            'periodId': 0,
+            'showControls': false,
+            'showSampleButton': true,
+            'showText': true,
+            'showVisualisation': true,
+            'sizeId': 0,
+            'sortId': 3
+        },
+        {
+            'id': 3,
+            'investmentOptionsIds': [0, 4],
+            'investmentOption1Id': 0,
+            'investmentOption2Id': 1,
+            'modeId': 0,
+            'name': 'open',
+            'periodId': 1,
+            'showControls': false,
+            'showSampleButton': true,
+            'showText': true,
+            'showVisualisation': true,
+            'sizeId': 0,
+            'sortId': 3
+        }
+    ];
+
+    groupSizes = [
+        { 'id': 0, 'value': 1, 'name': 'Individuell' },
+        { 'id': 1, 'value': 10, 'name': 'In Gruppen' }
+    ];
+
+    intervalSize = 1000;
+
+    investmentOptions = [
+        { id: 0, name: 'dax', desc: 'Aktien DE (Dax)'   },
+        { id: 1, name: 'gol', desc: 'Gold UK'           },
+        { id: 2, name: 'fts', desc: 'Aktien DE (allg.)' },
+        { id: 3, name: 'bon', desc: 'Bundesanleihen'    },
+        { id: 4, name: 'fes', desc: 'Festgeld'          },
+        { id: 5, name: 'sp',  desc: 'Aktien USA (S&P)'  },
+        { id: 6, name: 'msci', desc: 'MSCI World'       }
+    ];
+
+    investmentRatios = [0, 1];
+
+    labels = {
+        groupSize: {de: 'Anzahl der Ziehungen', en: 'Group size'},
+        period: { de: 'Jahren', en: 'years'},
+        reset: {de: 'Neustart', en: 'Reset'},
+        ratio: {
+            stock: {de: 'DAX', en: 'Dow Jones'},
+            deposit: {de: 'Festgeld', en: 'Deposit'}
+        },
+        sample: {de: 'Risiken genauer bestimmen', en: 'More\u00a0persons'},
+        source: {de: 'Quelle', en: 'Source'}
+    };
+
+    maxSamples = 1000;
+
+    modalStates = [
+        {
+            visibility: 'hidden',
+            icon: {
+                class: 'icon-info-circled',
+                glyph: '&#xe803;'
+            }
+        },
+        {
+            visibility: 'visible',
+            icon: {
+                class: 'icon-cancel-circled',
+                glyph: '&#xe804;'
+            }
+        }
+    ];
+
+    modes = [
+        { 'id': 0, 'value': 'manuell' },
+        { 'id': 1, 'value': 'auto' }
+    ];
+
+    nrSamplers = 2;
+
+    overview = {
+        prefix: {de: 'Sie haben', en: 'You studied'},
+        infix: {
+            first: {de: 'keine Ziehung', en: 'no individual'},
+            more: {de: 'Ziehungen', en: 'individuals'}
+        },
+        suffix: {de: 'gespielt', en: ''}
+    };
+
+    periods = [
+        { 'id': 0, 'value': 10, 'name': 'ten', 'desc': 'short' },
+        { 'id': 1, 'value': 20, 'name': 'twe', 'desc': 'medium' },
+        { 'id': 2, 'value': 30, 'name': 'thi', 'desc': 'long' }
+    ];
+
+    reference = {
+        authors: '',
+        title: 'lotto.de'
+    };
+
+    referenceClasses = [
+        {
+            prefix: {de: 'Von', en: 'Of each'},
+            infix: {de: 'Verbrauchern, die 1000 Euro investieren:', en: 'investors'}
+        },
+        {
+            prefix: {de: 'Von je', en: 'Of each'},
+            infix: {de: 'Verbrauchern, die 1000 Euro investieren:', en: 'investors'}
+        }
+    ];
+
+    subject = {
+        'de': 'ziehung',
+        'en': 'sampling'
+    };
+
+    sorting = [
+        { 'id': 0, 'value': 'keine' },
+        { 'id': 1, 'value': 'O -> o' },
+        { 'id': 2, 'value': 'o -> O' },
+        { 'id': 3, 'value': 'Faktenbox\u2122' }
+    ];
+
+    title = {
+        de: 'Faktenbox: Risiken der Geldanlage zum passenden Zeitpunkt',
+        en: 'Improved street lighting against crime'
+    };
+
+    textual = {de: 'Verbraucher Nr.', en: 'Individual No.'};
+
+    constructor() {
+        this.colours = this.allColours.medium.filter(function(e, i) {
+            return e;
+        });
+    }
+}

+ 10 - 0
src/d3custom.js

@@ -0,0 +1,10 @@
+import { select, selectAll, selection } from 'd3-selection';
+import { json, tsv } from 'd3-fetch';
+
+export {
+    json,
+    select,
+    selectAll,
+    selection,
+    tsv
+};

+ 4 - 0
src/environment.js

@@ -0,0 +1,4 @@
+export default {
+  debug: true,
+  testing: true
+};

+ 27 - 0
src/main.js

@@ -0,0 +1,27 @@
+// import 'whatwg-fetch';
+import environment from './environment';
+
+//Configure Bluebird Promises.
+//Note: You may want to use environment-specific configuration.
+Promise.config({
+    warnings: {
+        wForgottenReturn: false
+    }
+});
+
+export function configure(aurelia) {
+    aurelia.use
+        .standardConfiguration()
+    // .plugin('aurelia-validation')
+        .feature('resources');
+
+    if (environment.debug) {
+        aurelia.use.developmentLogging();
+    }
+
+    if (environment.testing) {
+        aurelia.use.plugin('aurelia-testing');
+    }
+
+    aurelia.start().then(() => aurelia.setRoot());
+}

+ 3 - 0
src/messages.js

@@ -0,0 +1,3 @@
+export class UpdateVisualisation {
+    constructor() { }
+}

+ 356 - 0
src/pdfExport.js

@@ -0,0 +1,356 @@
+import { HttpClient } from 'aurelia-fetch-client';
+
+export class PDFExport {
+
+    constructor(controller, config) {
+
+        this.controller = controller;
+
+        for (let key in config) {
+            this[key] = config[key];
+        }
+
+        this.httpClient = new HttpClient();
+        this.httpClient.configure(conf => {
+            conf.useStandardConfiguration();
+        });
+
+        this.fontcounter = 0;
+        this.fontsloaded = 0;
+        this.fontData = {
+            'roman': { 'name': 'AsapCondensed', 'url': 'assets/fonts/Asap-Regular.ttf', 'data': undefined },
+            'bold': { 'name': 'AsapCondensed Bold', 'url': 'assets/fonts/Asap-Bold.ttf', 'data': undefined },
+            'italic': { 'name': 'AsapCondensed Italic', 'url': 'assets/fonts/Asap-Italic.ttf', 'data': undefined }
+        };
+
+        this.context_url = 'src/sampling-info.json';
+
+        this.lineSpacing = 1.5;
+        // this.baseFontSize = 11;
+        this.baseFontSize = 10;
+
+        this.axisWidth = 45;
+        this.axisOffset = 10;
+        this.tickLength = 10;
+        this.labelOffset = 5;
+        this.height = 180;
+        this.width = 215;
+
+        this.offset = {
+            x: 4 * this.baseFontSize,
+            y: 4 * this.baseFontSize
+        };
+
+        // ***MAGIC NUMBERS*** for conversion from svg web layout to pdf print
+        this.magicSpacingRatio = 0.425;
+        this.magicMagicRatio = 0.49;
+
+        this.diameter = parseFloat(this.iconArray.radius) * 1.18;
+        this.dotspacing = this.diameter * this.iconArray.dotspacingRatio * this.magicSpacingRatio;
+
+        this.fontcounter = Object.keys(this.fontData).length;
+
+        this.httpClient.fetch(this.context_url)
+            .then(response => response.json())
+            .then(data => {
+                this.context = data;
+
+                for (let md in this.fontData) {
+                    let cfd = this.fontData[md];
+                    this.httpClient.fetch(cfd.url)
+                        .then(response => response.arrayBuffer())
+                        .then(data => {
+                            cfd.data = data;
+                            this.fontsloaded += 1;
+                            if (this.fontsloaded === this.fontcounter) {
+                                this.drawPDF();
+                            }
+
+                        });
+                }
+        });
+
+        this.samplers[0].samples = this.samples[0];
+        this.samplers[1].samples = this.samples[1];
+    }
+
+    listUpdated(list) {
+        this.drawPDF(list);
+    }
+
+    samplesPerClass(idx) {
+        let samplesIsolated = [];
+        let samples = [];
+        for (let s of this.samples[idx]) {  // deep copy of samples
+            samples.push(s);
+        }
+
+        for (let cls of this.classes) {
+            let arr = samples.filter(function(c) {
+                return c === cls.id;
+            }, cls);
+
+            samplesIsolated.push(arr);
+        }
+        return samplesIsolated;
+    }
+
+    drawAxis(doc, x_offset) {
+        let blockspacing = this.diameter * this.iconArray.blocks.horizontal.spacingRatio;
+        let binWidth = (this.iconArray.blocks.horizontal.size * (this.diameter * 1.03 + this.dotspacing) + blockspacing);
+        let axisLabel = {de: 'Gewinne', en: 'Profits'};
+
+        let y_baseline = this.iconArray.y_offset + this.height + this.axisOffset - this.labelOffset / 2;
+
+        doc.fillColor('black');
+        doc.font(this.fontData.bold.name)
+            .fontSize(this.baseFontSize * this.fontRatios.tiny)
+            .text(
+                axisLabel[this.lang],
+                x_offset + binWidth,
+                this.iconArray.y_offset + this.height + this.axisOffset,
+                { width: 500, align: 'left' }
+            )
+            .fill();
+
+        let x_magicoffset = (this.diameter - this.dotspacing) * 1.2;
+
+        for (let cidx in this.samplers[0].classes) {
+            cidx = parseInt(cidx);
+            let bidx = cidx;
+
+            let lines = this.samplers[0].classes[bidx].name[this.lang].split('\n');
+            let y = this.iconArray.y_offset + this.height + this.axisOffset + this.labelOffset * 2;
+
+            if (cidx === 0) {
+                y = this.iconArray.y_offset + this.height + this.axisOffset;
+                doc.font(this.fontData.bold.name);
+            } else {
+                doc.font(this.fontData.roman.name);
+            }
+
+            for (let lidx = 0; lidx < lines.length; ++lidx) {
+                doc.text(
+                    lines[lidx],
+                    x_offset + cidx * binWidth,
+                    y + lidx * this.labelOffset * 2
+                );
+            }
+
+            if (cidx < this.samplers[0].classes.length - 1) {
+                let y2 = y_baseline + this.axisOffset * 1.5;
+                let y2long = y_baseline + this.axisOffset * 3;
+                if (cidx === 0) {
+                    y2 = y2long;
+                }
+
+                let x = x_offset + (cidx + 1) * binWidth - x_magicoffset;
+
+                doc.moveTo(x, y_baseline - 3 * binWidth)
+                    .lineTo(x, y2long)
+                    .dash(1, {space: 2})
+                    .strokeColor('#aaa')
+                    .stroke();
+
+                doc.moveTo(x, y_baseline)
+                    .lineTo(x, y2)
+                    .dash(100)
+                    .strokeColor('#444')
+                    .stroke();
+            }
+        }
+        doc.moveTo(x_offset - this.axisOffset, y_baseline)
+            .lineTo(x_offset + this.width, y_baseline)
+            .dash(500)
+            .strokeColor('#444')
+            .stroke();
+    }
+
+    createIconArray(doc) {
+
+        // hand-adjusted positioning
+        this.iconArray.x_offset = this.baseFontSize * 25;
+        this.iconArray.y_offset = this.baseFontSize * 5;
+
+        let blockspacing = {
+            h: this.diameter * this.iconArray.blocks.horizontal.spacingRatio * 1.5,
+            v: this.diameter * this.iconArray.blocks.vertical.spacingRatio * 1.5
+        };
+
+        let blocksize = {
+            h: this.iconArray.blocks.horizontal.size,
+            v: this.iconArray.blocks.vertical.size
+        };
+
+        let nrblocks = {
+            h: this.iconArray.blocks.horizontal.amount,
+            v: this.iconArray.blocks.vertical.amount
+        };
+
+        let iaxfirst = this.iconArray.size === 100 ? 50 : 0;
+
+
+        for (let j = 0; j < 2; ++j) {
+
+            let samplesPerClass = this.samplesPerClass(j);
+            let samplesConcat = [];
+
+            for (let i = 0; i < samplesPerClass.length; ++i) {
+
+                for (let l = 0; l < samplesPerClass[i].length; ++l) {  // fill array with all samples of current class
+                    samplesConcat.push(i);
+                }
+
+                for (let k = 0; k < this.soffsets[i] * this.iconArray.blocks.vertical.amount * blocksize.h * blocksize.v - samplesPerClass[i].length; ++k) {  // fill up block with complementary class
+                    samplesConcat.push(undefined);
+                }
+            }
+
+            let sclength = samplesConcat.length;
+            for (let i = 0; i < this.maxSamples - sclength; ++i) {  // fill up the array with either base class id or undefined (placeholder)
+                samplesConcat.push(undefined);
+            }
+
+            let samples = samplesConcat;
+
+            let x_offset = j * this.iconArray.x_offset + iaxfirst + this.baseFontSize * 4 + this.diameter * this.magicMagicRatio + this.axisOffset;  // x-offset per icon array
+
+            for (let i = 0; i < samples.length; ++i) {
+
+                doc.ellipse(
+                    x_offset +
+                    // LINE-wise block-spaced layout
+                    (this.dotspacing + this.diameter) * Math.floor(i / (nrblocks.v * blocksize.v)) +
+                    blockspacing.h * (Math.floor(i / blocksize.h / blocksize.v / nrblocks.h)),
+
+                    this.iconArray.y_offset +  // y-offset
+                    this.height - (this.dotspacing + this.diameter) * (i % (nrblocks.v * blocksize.v)),  // blockspacing y
+                    this.diameter * this.magicMagicRatio  // radius !!??
+                );
+
+                let col = '';
+                if (samples[i] === undefined) {
+                    col = '#fff';
+                } else {
+                    col = this.colours[samples[i]];
+                }
+                doc.fill(col);
+            }
+            this.drawAxis(doc, x_offset);
+        }
+    }
+
+    drawPDF() {
+
+        let doc = new PDFDocument(
+            {
+                size: 'A4',
+                // size: 'A5',
+                // layout: 'landscape',
+                margin: 0
+            }
+        );
+
+        for (let fd in this.fontData) {
+            let cfd = this.fontData[fd];
+            doc.registerFont(cfd.name, cfd.data);
+        }
+
+        this.stream = doc.pipe(blobStream());
+
+        // meta data
+        doc.info.Title = this.title;
+        doc.info.Author = this.author;
+        doc.info.Subject = this.description;
+
+        // title
+        doc.font(this.fontData.bold.name)
+            .fontSize(this.baseFontSize * this.fontRatios.large)
+            .text(
+                this.title,
+                this.offset.x,
+                this.baseFontSize * this.fontRatios.huge,
+                { width: 500 }
+            );
+
+        // description
+        doc.font(this.fontData.roman.name)
+            .fontSize(this.baseFontSize * this.fontRatios.medium);
+        doc.text(this.description);
+
+        doc.fontSize(this.baseFontSize * this.fontRatios.small)
+            .fillColor('#333333')
+            .font(this.fontData.bold.name);
+
+        this.offset.table = 6;
+
+        doc.moveTo(this.offset.x, this.offset.y);
+        // reference classes
+        for (let i = 0; i < this.referenceClasses.length; ++i) {
+            doc.text(
+                this.referenceClasses[i].prefix[this.lang] + ' ' + this.samples[i].length + ' ' + this.referenceClasses[i].infix[this.lang] + '\n' +
+                this.samplers[i].getStockRatioRepr() + ' ' + this.labels.ratio.stock[this.lang] +
+                ' – ' + this.samplers[i].getDepositRatioRepr() + ' ' + this.labels.ratio.deposit[this.lang],
+                this.offset.x + i * this.baseFontSize * 25,
+                this.offset.table * this.baseFontSize,
+                { width: this.baseFontSize * 25, align: 'left' }
+            );
+        }
+
+        if (this.iconArray.size === 1000) {
+            this.iconArray.y_offset = this.baseFontSize * 24;
+        } else {
+            this.iconArray.y_offset = this.baseFontSize * 24;
+        }
+
+        // draw icon arrays inclusive axes
+        this.createIconArray(doc);
+
+        // draw ontext
+        doc.font(this.fontData.roman.name)
+            .fontSize(this.baseFontSize * this.fontRatios.small);
+
+        // reset the text cursor??! for continuous text positioning. !@&^%
+        doc.text(
+            '',
+            this.offset.x,
+            this.height + this.iconArray.y_offset * 2.5
+        );
+
+        // context
+        for (let i = 0; i < this.context.length; ++i) {  // classes array
+            doc.font(this.fontData.roman.name);
+
+            let obj = this.context[i];
+
+            if (obj.constructor === Array) {
+                let lst = obj.map(function(e) {
+                    return e.text;
+                });
+
+                doc.list(
+                    lst,
+                    { width: this.baseFontSize * 45, align: 'left' }
+                );
+            } else {
+                if (obj.type === 'heading') {
+                    doc.font(this.fontData.bold.name);
+                }
+
+                doc.text(
+                    obj.text,
+                    { width: this.baseFontSize * 45, align: 'left' }
+                );
+            }
+
+            doc.moveDown();
+        }
+
+        doc.end();
+
+        this.stream.on('finish', () => {
+            let url = this.stream.toBlobURL('application/pdf');
+            this.controller.updatePDFLink(url);
+        });
+    }
+}

+ 181 - 0
src/resources/HardingCenter_Logo_de.svg

@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   viewBox="0 0 290.92499 49.212502"
+   height="49.212502"
+   width="290.92499"
+   xml:space="preserve"
+   version="1.1"
+   id="svg3355"><metadata
+     id="metadata3361"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs3359"><clipPath
+       id="clipPath3371"
+       clipPathUnits="userSpaceOnUse"><path
+         id="path3373"
+         d="m 0,0 2327,0 0,393.656 -2327,0 L 0,0 Z" /></clipPath></defs><g
+     transform="matrix(1.25,0,0,-1.25,0,49.2125)"
+     id="g3363"><g
+       transform="scale(0.1,0.1)"
+       id="g3365"><g
+         id="g3367"><g
+           clip-path="url(#clipPath3371)"
+           id="g3369"><path
+             id="path3375"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="M 408.328,56.6992 C 408.328,28.1445 385.188,5 356.641,5 c -28.555,0 -51.7,23.1445 -51.7,51.6992 0,28.5352 23.145,51.6798 51.7,51.6798 28.547,0 51.687,-23.1446 51.687,-51.6798" /><path
+             id="path3377"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 408.328,56.6992 -5,0 C 403.324,43.7891 398.109,32.1484 389.652,23.6797 381.188,15.2148 369.547,10 356.641,10 c -12.914,0 -24.555,5.2148 -33.024,13.6797 -8.457,8.4687 -13.676,20.1094 -13.676,33.0195 0,12.8985 5.219,24.5391 13.676,33.0078 8.469,8.4571 20.11,13.672 33.024,13.672 12.906,0 24.55,-5.2149 33.011,-13.672 8.457,-8.4687 13.672,-20.1093 13.676,-33.0078 l 10,0 c -0.004,31.2969 -25.379,56.6798 -56.687,56.6798 -31.321,0 -56.696,-25.3829 -56.7,-56.6798 C 299.945,25.3828 325.32,0 356.641,0 c 31.308,0 56.683,25.3828 56.687,56.6992 l -5,0" /><path
+             id="path3379"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="M 259.812,56.6992 C 259.812,28.1445 236.672,5 208.125,5 179.57,5 156.438,28.1445 156.438,56.6992 c 0,28.5352 23.132,51.6798 51.687,51.6798 28.547,0 51.687,-23.1446 51.687,-51.6798" /><path
+             id="path3381"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 259.812,56.6992 -5,0 C 254.809,43.7891 249.594,32.1484 241.137,23.6797 232.672,15.2148 221.031,10 208.125,10 c -12.914,0 -24.551,5.2148 -33.02,13.6719 -8.457,8.4648 -13.667,20.1172 -13.667,33.0273 0,12.8985 5.21,24.5391 13.667,33.0078 8.469,8.4571 20.106,13.672 33.02,13.672 12.906,0 24.551,-5.2149 33.012,-13.672 8.457,-8.4687 13.672,-20.1093 13.675,-33.0078 l 10,0 c -0.003,31.2969 -25.378,56.6798 -56.687,56.6798 -31.316,0 -56.684,-25.3829 -56.687,-56.6798 C 151.438,25.3828 176.809,0 208.125,0 c 31.309,0 56.684,25.3828 56.687,56.6992 l -5,0" /><path
+             id="path3383"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="M 108.391,56.6992 C 108.391,28.1445 85.2344,5 56.6992,5 28.1445,5 5,28.1445 5,56.6992 c 0,28.5352 23.1445,51.6798 51.6992,51.6798 28.5352,0 51.6918,-23.1446 51.6918,-51.6798" /><path
+             id="path3385"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 108.391,56.6992 -5,0 C 103.383,43.7891 98.168,32.1484 89.707,23.6797 81.2383,15.2148 69.5977,10 56.6992,10 43.7852,10 32.1445,15.2148 23.6758,23.6797 15.2188,32.1484 10,43.7891 10,56.6992 c 0,12.8985 5.2188,24.5391 13.6758,33.0078 8.4687,8.4571 20.1094,13.672 33.0234,13.672 12.8985,0 24.5391,-5.2149 33.0078,-13.672 8.461,-8.4687 13.684,-20.1093 13.684,-33.0078 l 10,0 C 113.383,87.9961 87.9961,113.379 56.6992,113.379 25.3828,113.379 0.00390625,87.9961 0,56.6992 0.00390625,25.3828 25.3828,0 56.6992,0 87.9961,0 113.383,25.3828 113.391,56.6992 l -5,0" /><path
+             id="path3387"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 259.812,189.16 c 0,-28.555 -23.14,-51.699 -51.687,-51.699 -28.555,0 -51.687,23.144 -51.687,51.699 0,28.535 23.132,51.68 51.687,51.68 28.547,0 51.687,-23.145 51.687,-51.68" /><path
+             id="path3389"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 259.812,189.16 -5,0 c -0.003,-12.91 -5.218,-24.551 -13.675,-33.019 -8.465,-8.465 -20.106,-13.68 -33.012,-13.68 -12.914,0 -24.551,5.215 -33.02,13.672 -8.457,8.465 -13.667,20.117 -13.667,33.027 0,12.899 5.21,24.539 13.667,33.008 8.469,8.457 20.106,13.672 33.02,13.672 12.906,0 24.551,-5.215 33.012,-13.672 8.457,-8.469 13.672,-20.109 13.675,-33.008 l 10,0 c -0.003,31.301 -25.378,56.68 -56.687,56.68 -31.316,0 -56.684,-25.379 -56.687,-56.68 0,-31.316 25.371,-56.699 56.687,-56.699 31.309,0 56.684,25.383 56.687,56.699 l -5,0" /><path
+             id="path3391"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 408.328,189.16 c 0,-28.555 -23.14,-51.699 -51.687,-51.699 -28.555,0 -51.7,23.144 -51.7,51.699 0,28.535 23.145,51.68 51.7,51.68 28.547,0 51.687,-23.145 51.687,-51.68" /><path
+             id="path3393"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 408.328,189.16 -5,0 c -0.004,-12.91 -5.219,-24.551 -13.676,-33.019 -8.464,-8.465 -20.105,-13.68 -33.011,-13.68 -12.914,0 -24.555,5.215 -33.024,13.68 -8.457,8.468 -13.676,20.109 -13.676,33.019 0,12.899 5.219,24.539 13.676,33.008 8.469,8.457 20.11,13.672 33.024,13.672 12.906,0 24.55,-5.215 33.011,-13.672 8.457,-8.469 13.672,-20.109 13.676,-33.008 l 10,0 c -0.004,31.301 -25.379,56.68 -56.687,56.68 -31.321,0 -56.696,-25.379 -56.7,-56.68 0.004,-31.316 25.379,-56.699 56.7,-56.699 31.308,0 56.683,25.383 56.687,56.699 l -5,0" /><path
+             id="path3395"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 108.391,189.16 c 0,-28.555 -23.1566,-51.699 -51.6918,-51.699 C 28.1445,137.461 5,160.605 5,189.16 c 0,28.535 23.1445,51.68 51.6992,51.68 28.5352,0 51.6918,-23.145 51.6918,-51.68" /><path
+             id="path3397"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 108.391,189.16 -5,0 c -0.008,-12.91 -5.223,-24.551 -13.684,-33.019 -8.4687,-8.465 -20.1093,-13.68 -33.0078,-13.68 -12.914,0 -24.5547,5.215 -33.0234,13.68 C 15.2188,164.609 10,176.25 10,189.16 c 0,12.899 5.2188,24.539 13.6758,33.008 8.4687,8.457 20.1094,13.672 33.0234,13.672 12.8985,0 24.5391,-5.215 33.0078,-13.672 8.461,-8.469 13.684,-20.109 13.684,-33.008 l 10,0 C 113.383,220.461 87.9961,245.84 56.6992,245.84 25.3828,245.84 0.00390625,220.461 0,189.16 c 0.00390625,-31.316 25.3828,-56.699 56.6992,-56.699 31.2969,0 56.6838,25.383 56.6918,56.699 l -5,0" /><path
+             id="path3399"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 259.812,319.812 c 0,-28.55 -23.14,-51.699 -51.687,-51.699 -28.555,0 -51.687,23.149 -51.687,51.699 0,28.536 23.132,51.68 51.687,51.68 28.547,0 51.687,-23.144 51.687,-51.68" /><path
+             id="path3401"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 259.812,319.812 -5,0 c -0.003,-12.91 -5.218,-24.558 -13.675,-33.015 -8.465,-8.469 -20.106,-13.684 -33.012,-13.684 -12.914,0 -24.551,5.215 -33.02,13.684 -8.457,8.457 -13.667,20.105 -13.667,33.015 0,12.903 5.21,24.543 13.667,33.004 8.469,8.457 20.106,13.676 33.02,13.676 12.906,0 24.551,-5.219 33.012,-13.676 8.457,-8.461 13.672,-20.101 13.675,-33.004 l 10,0 c -0.003,31.301 -25.378,56.676 -56.687,56.68 -31.316,-0.004 -56.684,-25.379 -56.687,-56.68 0,-31.316 25.371,-56.699 56.687,-56.699 31.309,0 56.684,25.383 56.687,56.699 l -5,0" /><path
+             id="path3403"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 408.328,319.812 c 0,-28.55 -23.14,-51.699 -51.687,-51.699 -28.555,0 -51.7,23.149 -51.7,51.699 0,28.536 23.145,51.68 51.7,51.68 28.547,0 51.687,-23.144 51.687,-51.68" /><path
+             id="path3405"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 408.328,319.812 -5,0 c -0.004,-12.91 -5.219,-24.558 -13.676,-33.015 -8.464,-8.469 -20.105,-13.684 -33.011,-13.684 -12.914,0 -24.555,5.215 -33.024,13.684 -8.457,8.457 -13.676,20.105 -13.676,33.015 0,12.903 5.219,24.543 13.676,33.004 8.469,8.457 20.11,13.676 33.024,13.676 12.906,0 24.55,-5.219 33.011,-13.676 8.457,-8.461 13.672,-20.101 13.676,-33.004 l 10,0 c -0.004,31.301 -25.379,56.676 -56.687,56.68 -31.321,-0.004 -56.696,-25.379 -56.7,-56.68 0.004,-31.316 25.379,-56.699 56.7,-56.699 31.308,0 56.683,25.383 56.687,56.699 l -5,0" /><path
+             id="path3407"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 108.391,319.812 c 0,-28.55 -23.1566,-51.699 -51.6918,-51.699 C 28.1445,268.113 5,291.262 5,319.812 c 0,28.536 23.1445,51.68 51.6992,51.68 28.5352,0 51.6918,-23.144 51.6918,-51.68" /><path
+             id="path3409"
+             style="fill:#262728;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 108.391,319.812 -5,0 c -0.008,-12.91 -5.223,-24.55 -13.684,-33.015 -8.4687,-8.469 -20.1093,-13.684 -33.0078,-13.684 -12.914,0 -24.5547,5.215 -33.0234,13.684 C 15.2188,295.254 10,306.902 10,319.812 c 0,12.903 5.2188,24.543 13.6758,33.004 8.4687,8.457 20.1094,13.676 33.0234,13.676 12.8985,0 24.5391,-5.219 33.0078,-13.676 8.461,-8.461 13.684,-20.101 13.684,-33.004 l 10,0 c -0.008,31.301 -25.3949,56.676 -56.6918,56.68 C 25.3828,376.488 0.00390625,351.113 0,319.812 c 0.00390625,-31.316 25.3828,-56.699 56.6992,-56.699 31.2969,0 56.6838,25.383 56.6918,56.699 l -5,0" /><path
+             id="path3411"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 523.32,126.824 c 16.895,0 28.328,10.988 28.328,33.274 0,25.105 -10.437,31.394 -28.328,31.394 l -12.922,0 0,-64.668 12.922,0 z m -44.726,95.434 54.172,0 c 30.808,0 51.687,-17.59 51.687,-57.766 0,-28.562 -14.172,-47.707 -33.555,-51.476 l 0,-0.946 c 6.465,-1.261 13.672,-5.031 19.141,-25.4216 l 22.617,-83.50387 -33.808,0 -17.149,71.25777 c -4.219,17.2696 -12.414,22.9102 -24.101,22.9102 l -7.2,0 0,-94.16797 -31.804,0 0,219.11347" /><path
+             id="path3413"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 612.793,3.14453 31.8164,0 0,219.113 -31.8164,0 0,-219.113 z" /><path
+             id="path3415"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 673.691,45.5273 c 6.211,-5.0312 19.883,-13.5078 36.778,-13.5078 13.918,0 26.328,9.7461 26.328,31.7188 0,15.6875 -7.195,22.6015 -22.598,33.2656 l -16.152,11.3051 c -17.149,11.925 -28.34,29.191 -28.34,57.445 0,39.234 25.605,59.637 54.68,59.637 18.386,0 31.297,-5.965 36.277,-7.84 l -1.492,-33.598 c -7.707,3.77 -17.895,9.414 -32.551,9.414 -15.898,0 -24.109,-10.664 -24.109,-25.738 0,-16.32 8.699,-22.602 18.386,-29.504 l 18.645,-13.184 c 20.379,-14.445 30.066,-28.2535 30.066,-59.0113 0,-44.5742 -25.097,-65.9179812 -58.144,-65.9179812 -17.403,0 -30.82,3.1328112 -39.512,9.7226612 l 1.738,35.79292" /><path
+             id="path3417"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 794.473,3.14453 31.8047,0 0,219.113 -31.8047,0 0,-219.113 z" /><path
+             id="path3419"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 857.598,222.258 31.816,0 0,-92.934 0.742,0 49.453,92.934 36.524,0 -58.887,-103.285 63.613,-115.82847 -38.515,0 -52.188,102.95747 -0.742,0 0,-102.95747 -31.816,0 0,219.11347" /><path
+             id="path3421"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1038.03,30.7695 c 20.11,0 36.27,21.6602 36.27,81.9255 0,60.274 -16.16,81.934 -36.27,81.934 -20.14,0 -36.29,-21.66 -36.29,-81.934 0,-60.2653 16.15,-81.9255 36.29,-81.9255 z m 0,194.6215 c 36.02,0 69.08,-33.899 69.08,-112.696 0,-78.777 -33.06,-112.6832812 -69.08,-112.6832812 -36.04,0 -69.092,33.9062812 -69.092,112.6832812 0,78.797 33.052,112.696 69.092,112.696" /><path
+             id="path3423"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1130.98,222.258 31.81,0 0,-92.934 0.75,0 49.45,92.934 36.52,0 -58.88,-103.285 63.61,-115.82847 -38.52,0 -52.18,102.95747 -0.75,0 0,-102.95747 -31.81,0 0,219.11347" /><path
+             id="path3425"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1311.41,30.7695 c 20.12,0 36.27,21.6602 36.27,81.9255 0,60.274 -16.15,81.934 -36.27,81.934 -20.14,0 -36.29,-21.66 -36.29,-81.934 0,-60.2653 16.15,-81.9255 36.29,-81.9255 z m 0,194.6215 c 36.02,0 69.08,-33.899 69.08,-112.696 0,-78.777 -33.06,-112.6832812 -69.08,-112.6832812 -36.04,0 -69.09,33.9062812 -69.09,112.6832812 0,78.797 33.05,112.696 69.09,112.696" /><path
+             id="path3427"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1541.78,185.84 -0.49,0 -43.5,-182.69547 -22.61,0 -41.49,182.69547 -0.51,0 0,-182.69547 -28.81,0 0,219.11347 47.46,0 35.79,-163.5471 0.49,0 36.53,163.5471 45.97,0 0,-219.11347 -28.83,0 0,182.69547" /><path
+             id="path3429"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1643.69,119.598 c 19.88,0 28.58,12.246 28.58,36.117 0,23.844 -8.7,35.777 -28.58,35.777 l -11.93,0 0,-71.894 11.93,0 z m -43.73,102.66 49.69,0 c 35.78,0 54.42,-25.121 54.42,-66.543 0,-41.449 -18.64,-66.8752 -54.42,-66.8752 l -17.89,0 0,-85.69527 -31.8,0 0,219.11347" /><path
+             id="path3431"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1724.47,222.258 91.19,0 0,-32.024 -59.39,0 0,-58.39 56.17,0 0,-32.0081 -56.17,0 0,-64.6679 61.87,0 0,-32.02347 -93.67,0 0,219.11347" /><path
+             id="path3433"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1868.61,190.234 -38.77,0 0,32.024 109.11,0 0,-32.024 -38.53,0 0,-187.08947 -31.81,0 0,187.08947" /><path
+             id="path3435"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1956.84,222.258 91.2,0 0,-32.024 -59.39,0 0,-58.39 56.15,0 0,-32.0081 -56.15,0 0,-64.6679 61.88,0 0,-32.02347 -93.69,0 0,219.11347" /><path
+             id="path3437"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 2074.89,222.258 37.78,0 57.64,-172.0236 0.51,0 0,172.0236 28.82,0 0,-219.11347 -38.02,0 -57.4,170.76947 -0.5,0 0,-170.76947 -28.83,0 0,219.11347" /><path
+             id="path3439"
+             style="fill:#bc1922;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 2221.03,38.3008 68.35,151.9332 -66.36,0 0,32.024 103.37,0 0,-33.285 -69.09,-153.805 70.08,0 0,-32.02347 -106.35,0 0,35.15627" /><path
+             id="path3441"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 479.414,375.027 11.27,0 0,-35.254 37.636,0 0,35.254 11.282,0 0,-84.273 -11.282,0 0,38.394 -37.636,0 0,-38.394 -11.27,0 0,84.273" /><path
+             id="path3443"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 620.84,363.68 -15.664,-41.778 31.34,0 -15.676,41.778 z m -5.52,11.347 11.836,0 33.254,-84.273 -12.285,0 -8.008,21.246 -38.535,0 -8.008,-21.246 -11.836,0 33.582,84.273" /><path
+             id="path3445"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 712.578,338.816 9.578,0 c 10.715,0 17.016,5.071 17.016,13.157 0,7.605 -5.402,12.441 -15.774,12.441 l -10.82,0 0,-25.598 z m -11.269,36.211 19.277,0 c 15.547,0 30.535,-2.644 30.535,-22.812 0,-10.262 -7.098,-17.5 -16.238,-19.199 l 0,-0.243 c 3.496,-1.445 5.195,-3.261 7.676,-8.449 l 14.875,-33.57 -12.844,0 -12.07,29.215 c -3.489,8.215 -7.208,8.215 -13.184,8.215 l -6.758,0 0,-37.43 -11.269,0 0,84.273" /><path
+             id="path3447"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 811.523,301.375 11.836,0 c 19.375,0 30.098,10.02 30.098,31.758 0,19.687 -12.519,31.281 -28.75,31.281 l -13.184,0 0,-63.039 z m -11.269,73.652 23.223,0 c 23.32,0 41.914,-15.449 41.914,-41.406 0,-28.262 -15.996,-42.867 -41.914,-42.867 l -23.223,0 0,84.273" /><path
+             id="path3449"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 912.5,290.754 11.2695,0 0,84.2734 -11.2695,0 0,-84.2734 z" /><path
+             id="path3451"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 973.918,375.027 15.32,0 34.712,-67.851 0.23,0 0,67.851 11.27,0 0,-84.273 -14.43,0 -35.61,69.312 -0.222,0 0,-69.312 -11.27,0 0,84.273" /><path
+             id="path3453"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1145.32,360.066 c -5.52,3.868 -11.49,5.793 -21.63,5.793 -18.14,0 -30.2,-14.132 -30.2,-32.961 0,-19.804 13.29,-32.968 29.64,-32.968 7.77,0 9.8,0.84 12.61,1.445 l 0,25.605 -16.56,0 0,9.903 27.83,0 0,-43.836 c -4.28,-1.574 -11.72,-3.742 -24,-3.742 -24.9,0 -41.47,17.148 -41.47,43.945 0,25.969 17.58,43.242 41.59,43.242 11.48,0 16.56,-1.816 23.09,-4.238 l -0.9,-12.188" /><path
+             id="path3455"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1191.41,318.641 28.9609,0 0,9.17969 -28.9609,0 0,-9.17969 z" /><path
+             id="path3457"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1258.35,301.621 40.79,62.793 -39.43,0 0,10.613 52.4,0 0,-10.859 -40.68,-62.793 41.35,0 0,-10.621 -54.43,0 0,10.867" /><path
+             id="path3459"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1358.09,375.027 44.06,0 0,-10.613 -32.79,0 0,-24.641 29.86,0 0,-10.625 -29.86,0 0,-27.773 32.79,0 0,-10.621 -44.06,0 0,84.273" /><path
+             id="path3461"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1450.16,375.027 15.33,0 34.71,-67.851 0.21,0 0,67.851 11.27,0 0,-84.273 -14.41,0 -35.62,69.312 -0.22,0 0,-69.312 -11.27,0 0,84.273" /><path
+             id="path3463"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1577.5,364.414 -24.45,0 0,10.613 60.17,0 0,-10.613 -24.45,0 0,-73.66 -11.27,0 0,73.66" /><path
+             id="path3465"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1665.18,338.816 9.58,0 c 10.71,0 17.02,5.071 17.02,13.157 0,7.605 -5.41,12.441 -15.78,12.441 l -10.82,0 0,-25.598 z m -11.27,36.211 19.27,0 c 15.55,0 30.54,-2.644 30.54,-22.812 0,-10.262 -7.1,-17.5 -16.24,-19.199 l 0,-0.243 c 3.51,-1.445 5.2,-3.261 7.68,-8.449 l 14.87,-33.57 -12.84,0 -12.07,29.215 c -3.49,8.215 -7.21,8.215 -13.18,8.215 l -6.76,0 0,-37.43 -11.27,0 0,84.273" /><path
+             id="path3467"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1814.73,325.652 c 0,-23.672 -11.17,-36.347 -30.55,-36.347 -19.38,0 -30.54,12.675 -30.54,36.347 l 0,49.375 11.26,0 0,-47.812 c 0,-16.172 4.75,-27.285 19.28,-27.285 14.54,0 19.28,11.113 19.28,27.285 l 0,47.812 11.27,0 0,-49.375" /><path
+             id="path3469"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 1865.21,375.027 18.6,0 24.67,-70.027 24.23,70.027 18.6,0 0,-84.273 -11.27,0 0,72.926 -0.23,0 -26.03,-72.926 -11.05,0 -26.03,72.926 -0.23,0 0,-72.926 -11.26,0 0,84.273" /><path
+             id="path3471"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 2062.42,375.027 41.81,0 0,-10.613 -30.54,0 0,-24.641 29.18,0 0,-10.625 -29.18,0 0,-38.394 -11.27,0 0,84.273" /><path
+             id="path3473"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 2184.13,393.656 10.6,0 0,-12.078 -10.6,0 0,12.078 z m -18.49,0 10.6,0 0,-12.078 -10.6,0 0,12.078 z m 45.08,-68.004 c 0,-23.672 -11.15,-36.347 -30.53,-36.347 -19.39,0 -30.54,12.675 -30.54,36.347 l 0,49.375 11.27,0 0,-47.812 c 0,-16.172 4.72,-27.285 19.27,-27.285 14.54,0 19.26,11.113 19.26,27.285 l 0,47.812 11.27,0 0,-49.375" /><path
+             id="path3475"
+             style="fill:#161616;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             d="m 2271.69,338.816 9.58,0 c 10.7,0 17.02,5.071 17.02,13.157 0,7.605 -5.42,12.441 -15.78,12.441 l -10.82,0 0,-25.598 z m -11.27,36.211 19.27,0 c 15.55,0 30.54,-2.644 30.54,-22.812 0,-10.262 -7.1,-17.5 -16.23,-19.199 l 0,-0.243 c 3.5,-1.445 5.19,-3.261 7.67,-8.449 l 14.87,-33.57 -12.85,0 -12.05,29.215 c -3.5,8.215 -7.21,8.215 -13.18,8.215 l -6.77,0 0,-37.43 -11.27,0 0,84.273" /></g></g></g></g></svg>

+ 3 - 0
src/resources/index.js

@@ -0,0 +1,3 @@
+export function configure(config) {
+  //config.globalResources([]);
+}

+ 13 - 0
src/sampler-textual.html

@@ -0,0 +1,13 @@
+<template class="sampler-textual" bindable="sampler, groupSizeId, textual, lang, colours">
+    <div class="current-sample-wrapper">
+        <div class="current-sample" show.bind="sampler.samples.length && !groupSizeId">
+            <div class="current-sample-colour"></div>
+            <p class="current-sample-label">${textual[lang]} ${sampler.samples.length}<br>
+                ${sampler.currentYield >= 0 ? 'gewinnt' : 'verliert'}:
+            </p>
+            <div class="current-sample-number" css="background-color: ${colours[sampler.currentSampleId]}">
+                ${sampler.calculatedYield}
+            </div>
+        </div>
+    </div>
+</template>

+ 3 - 0
src/sampler-visual.html

@@ -0,0 +1,3 @@
+<template>
+    <svg class="icon-array" id="${sampler.svgclass}"></svg>
+</template>

+ 241 - 0
src/sampler-visual.js

@@ -0,0 +1,241 @@
+import { customElement, bindable, inject } from 'aurelia-framework';
+import { EventAggregator } from 'aurelia-event-aggregator';
+
+import * as d3 from './d3custom';
+
+import { VisualConfig } from './config_visual';
+import { UpdateVisualisation } from './messages';
+
+
+@customElement('sampler-visual')
+@inject(VisualConfig, EventAggregator)
+export class SamplerVisual {
+
+    @bindable colours;
+    @bindable lang;
+    @bindable maxSamples;
+    @bindable sampler;
+    @bindable soffsets;
+    @bindable sortMethodId;
+
+    constructor(configuration, ea) {  // injected VisualConfig, EventAggregator
+
+        this.ea = ea;
+        this.svgWidth = 480;
+        this.svgHeight = 340;
+        this.axisWidth = 45;
+        this.axisOffset = 10;
+        this.tickLength = 10;
+        this.labelOffset = 5;
+        this.axisLabel = {de: 'Gewinne', en: 'Profits'};
+
+        for (let key in configuration) {
+            this[key] = configuration[key];
+        }
+
+        this.ea.subscribe(UpdateVisualisation, msg => {
+            this.updateVisualisation();
+        });
+    }
+
+    attached() {  // (aurelia life cycle function) set up d3 view when dom ready
+
+        let columns = (this.blocks.horizontal.amount * this.blocks.horizontal.size);
+        let rows = this.blocks.vertical.amount * this.blocks.vertical.size;
+
+        let vmrgn = (this.svgHeight - rows * (this.radius * (2 + this.dotspacingRatio))) / 2;
+        let hmrgn = (this.svgWidth - columns * (this.radius * (2 + this.dotspacingRatio))) / 2 - this.axisWidth / 2;
+        this.margin = {
+            right: hmrgn,
+            left: hmrgn,
+            top: vmrgn,
+            bottom: vmrgn
+        };
+
+        this.width = this.svgWidth - this.margin.left - this.margin.right;
+        this.height = this.svgHeight - this.margin.top - this.margin.bottom;
+
+        this.svg = d3.select('#' + this.sampler.svgclass)
+            .attr('width', this.width + this.margin.left + this.margin.right)
+            .attr('height', this.height + this.margin.top + this.margin.bottom);
+
+        this.lgroup = this.svg.append('g')
+            .attr('class', 'legend-group')
+            .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');
+
+        this.cgroup = this.svg.append('g')
+            .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')');
+
+        if (this.sampler.samples.length >= 0) {
+            this.drawAxis();
+            this.updateVisualisation();
+        }
+    }
+
+    drawAxis() {
+        let blockspacing = this.radius * 2 * this.blocks.horizontal.spacingRatio;
+        let dotspacing = this.radius * this.dotspacingRatio;
+        let xoffset = this.radius;
+
+        let cgroup = this.lgroup.append('g')
+            .attr('class', 'class-label');
+
+        cgroup.append('text')
+            .text(this.axisLabel[this.lang])
+            .style('font-size', '12px')
+            .style('font-weight', 'bold')
+            .attr('x', xoffset + this.blocks.horizontal.size * (2 * this.radius + dotspacing) + blockspacing / 2 + blockspacing / 2)
+            .attr('y', this.height + this.axisOffset + this.labelOffset);
+
+        // horizontal line
+        cgroup.append('line')
+            .attr('stroke', '#000')
+            .attr('x1', -this.axisOffset)
+            .attr('y1', this.height)
+            .attr('x2', this.width + this.axisOffset)
+            .attr('y2', this.height);
+
+        for (let cidx in this.sampler.classes) {
+            cidx = parseInt(cidx);
+            let bidx = cidx;
+
+            // all labels are offset by one block + half block spacing
+            // for every following block the full block spacing is added
+            let boffset = xoffset + (cidx + 1) * (this.blocks.horizontal.size * (2 * this.radius + dotspacing) + blockspacing / 2) + cidx * blockspacing / 2;
+
+            let lines = this.sampler.classes[bidx].name[this.lang].split('\n');
+            let y = this.height + this.axisOffset + this.labelOffset * 4;
+            if (cidx === 0) {
+                y = this.height + this.axisOffset + this.labelOffset;
+            }
+            let label = cgroup.append('text')
+                .style('font-size', '12px')
+                .style('font-weight', function() { return cidx === 0 ? 'bold' : 'normal'; })
+                .attr('y', y);
+
+            for (let lidx = 0; lidx < lines.length; ++lidx) {
+                label.append('tspan')
+                    .attr('x', boffset - (this.blocks.horizontal.size * (2 * this.radius + dotspacing) + blockspacing / 2))
+                    .attr('dy', function() { return lidx > 0 ? '1.2em' : '0em'; })
+                    .text(lines[lidx]);
+            }
+
+            if (cidx < this.sampler.classes.length - 1) {
+                let y2 = this.height + this.axisOffset;
+                let y2long = this.height + this.axisOffset * 4.5;
+                if (cidx === 0) {
+                    y2 = y2long;
+                }
+
+                cgroup.append('line')
+                    .attr('stroke', '#000')
+                    .attr('stroke-dasharray', '1')
+                    .attr('opacity', '0.2')
+                    .attr('x1', boffset - this.radius - dotspacing / 2)
+                    .attr('y1', -this.axisOffset)
+                    .attr('x2', boffset - this.radius - dotspacing / 2)
+                    .attr('y2', y2long);
+
+                cgroup.append('line')
+                    .attr('stroke', '#000')
+                    .attr('x1', boffset - this.radius - dotspacing / 2)
+                    .attr('y1', this.height)
+                    .attr('x2', boffset - this.radius - dotspacing / 2)
+                    .attr('y2', y2);
+            }
+        }
+    }
+
+    updateVisualisation() {
+
+        let radius = this.radius;
+        let diameter = 2 * radius;
+        let dotspacing = radius * this.dotspacingRatio;
+        let nrblocks = {
+            h: this.blocks.horizontal.amount,
+            v: this.blocks.vertical.amount
+        };
+        let blocksize = {
+            h: this.blocks.horizontal.size,
+            v: this.blocks.vertical.size
+        };
+        let blockspacing = {
+            h: diameter * this.blocks.horizontal.spacingRatio,
+            v: diameter * this.blocks.vertical.spacingRatio
+        };
+        let xoffset = radius;
+        let yoffset = radius;
+
+        let iaheight = this.height;
+        let colours = this.colours;
+
+        // Invert every structure: samples, offsets, colours
+        // FIXME: Is there still a reason to do this instead of inverting the order in the configuration?
+        let spc = this.sampler.samplesPerClass();
+        let samplesPerClass = Array(...spc);
+        samplesPerClass.reverse();
+        let synClassOffsets = Array(...this.soffsets);
+        synClassOffsets.reverse();
+        let samplesConcat = [];
+
+        // for (let i = 0; i < samplesPerClass.length; ++i) {
+        for (let i = samplesPerClass.length - 1; i >= 0; --i) {
+
+            for (let j = 0; j < samplesPerClass[i].length; ++j) {  // fill array with all samples of current class
+                samplesConcat.push(i);
+            }
+
+            for (let k = 0; k < synClassOffsets[i] * this.blocks[this.layout].amount * this.blocks.horizontal.size * this.blocks.vertical.size - samplesPerClass[i].length; ++k) {  // fill up block with complementary class
+                samplesConcat.push(undefined);
+            }
+        }
+
+        let sclength = samplesConcat.length;
+        for (let i = 0; i < this.maxSamples - sclength; ++i) {  // fill up the array with either base class id or undefined (placeholder)
+            samplesConcat.push(undefined);
+        }
+
+        let circles = this.cgroup.selectAll('circle')
+            .data(samplesConcat);
+
+        circles.enter()
+            .append('circle')
+            .attr('r', radius)
+            .merge(circles)                 // merge first!!!
+            .attr('cx', function(d, i) {  // y positioning with block grouping
+                return xoffset +
+                    (dotspacing + diameter) * Math.floor(i / (nrblocks.v * blocksize.v)) +
+                    blockspacing.h * (Math.floor(i / blocksize.h / blocksize.v / nrblocks.h));
+            })
+            .attr('cy', function(d, i) {  // x positioning with block grouping
+                return iaheight - 2 * yoffset - (dotspacing + diameter) * (i % (nrblocks.v * blocksize.v));
+            })
+            .attr('class', function(d) {
+                if (d === undefined) {
+                    return 'placeholder';
+                }
+                return 'sample';
+            })
+            .attr('fill', function(d) {
+                let col = 'none';
+                // let col = '#fff';
+                if (d !== undefined) {
+                    col = colours[colours.length - 1 - d];  // don't forget to invert the colour indices
+                }
+                return col;
+            })
+            .attr('stroke', function(d) {
+                let col = 'none';
+                return col;
+            })
+            .on('mouseover', function(e) {
+                this.setAttribute('r', radius + dotspacing);
+            })
+            .on('mouseout', function(e) {
+                this.setAttribute('r', radius);
+            });
+
+
+        circles.exit().remove();
+    }
+}

+ 108 - 0
src/sampler.js

@@ -0,0 +1,108 @@
+export class Sampler {
+
+    constructor(id, data, classes, depositRatio, maxSamples, voffsets) {
+        this.data = data;
+        this.samples = [];
+        this.voffsets = [];
+        this.classes = classes;
+        this.id = id;
+        this.depositRatio = depositRatio;
+        this.svgclass = 'sampler-' + this.id;
+        this.currentSampleId = undefined;
+        this.currentYield = undefined;
+        this.maxSamples = maxSamples;
+    }
+
+    // actual sampling implemented as importance sampling in app.js
+    drawSample(d) {
+
+        let y = (1 - this.depositRatio) * d.values[0] + this.depositRatio * d.values[1];
+
+        // compare yield to thresholds defined in classes
+        for (let j = 0; j < this.classes.length; ++j) {
+            // if (y >= this.classes[j].min && y < this.classes[j].max) {
+            if (y > this.classes[j].min && y <= this.classes[j].max) {
+                this.currentSampleId = this.classes[j].id;
+                this.currentYield = y;
+                this.samples.push(this.currentSampleId);
+                return;
+            }
+        }
+    }
+
+    updateOffsets(iconBlockSize) {
+
+        for (let cidx = 0; cidx < this.classes.length; ++cidx) {
+            this.voffsets[cidx] = 1;  // calculate number of lines occupied by class
+        }
+        return this.voffsets;
+    }
+
+    get calculatedYield() {
+        let factor = Math.pow(10, 0);
+        let val = Math.round(this.currentYield * 100 * factor) / factor;
+        let sign = '';
+        if (val > 0) {
+            sign = '+';
+        } else if (sign < 0) {
+            sign = '-';
+        }
+
+        let result = (sign + val + '%').replace('.', ',');
+        return result;
+    }
+
+    getStockRatioRepr() {
+        let val = Math.round((1 - this.depositRatio) * 100000) / 1000;
+        return val + '%';
+    }
+
+    get stockRatioRepr() {
+        let val = Math.round((1 - this.depositRatio) * 100000) / 1000;
+        return val + '%';
+    }
+
+    getDepositRatioRepr() {
+        let val = Math.round(this.depositRatio * 100000) / 1000;
+        return val + '%';
+    }
+
+    get depositRatioRepr() {
+        let val = Math.round(this.depositRatio * 100000) / 1000;
+        return val + '%';
+    }
+
+    setPeriod(val) {
+        this.period = val;
+    }
+
+    isSafeToSample(amount) {
+        for (s in this.samplesPerClass()) {
+            s.length < this;
+        }
+    }
+
+    samplesPerClass() {
+        let samplesIsolated = [];
+        let samples = [];
+        for (let s of this.samples) {  // deep copy of samples
+            samples.push(s);
+        }
+
+        for (let cls of this.classes) {
+            let arr = samples.filter(function(c) {
+                return c === cls.id;
+            }, cls);
+
+            samplesIsolated.push(arr);
+        }
+        // console.log('samplesIsolated', this.id, samplesIsolated);
+        return samplesIsolated;
+    }
+
+    reset() {
+        this.samples = [];
+        this.currentSampleId = undefined;
+        this.currentYield = undefined;
+    }
+}

+ 118 - 0
src/sampling-info.html

@@ -0,0 +1,118 @@
+<template>
+  <p>
+    Diese Faktenbox zeigt Ihnen, wie sich Renditen über bestimmte Zeiträume in
+    der Vergangenheit entwickelt hatten. Diese sind bereits um die jeweilige
+    Veränderung der Verbraucherpreise (Inflation) bereinigt. Noch nicht
+    berücksichtigt sind Steuern. Es sind keine Entnahmen/Dividenden vorgesehen.
+  </p>
+  <h3 id="kosten-wurden-wie-folgt-berücksichtigt">
+    Kosten wurden wie folgt berücksichtigt
+  </h3>
+  <ul>
+    <li>Aktienfonds 0,5 % p.a.</li>
+    <li>ETFs 0,5 % p.a.</li>
+    <li>Festgeld 0,05 % p.a.</li>
+    <li>Gold 0,5 % p.a.</li>
+    <li>Unternehmensanleihen 0,5 % p.a.</li>
+  </ul>
+  <h3 id="grundlage-der-daten">Grundlage der Daten</h3>
+  <ul>
+    <li>EFT (MSCI WORLD): Wertentwicklung des MSCI World Index</li>
+    <li>ETF (DAX): Wertentwicklung des DAX</li>
+    <li>ETF (Rentenindex): Entwicklung des Deutschen Rentenindex (REX)</li>
+    <li>ETF (US-Aktien): Wertentwicklung des S&amp;P-500 Index</li>
+    <li>
+      Festgeld: Deutsche Bundesbank: „Sparbriefe mit laufender Zinszahlung,
+      vierjährige Laufzeit, Durchschnittsatz“ (bis 2002), „Banken DE,
+      Neugeschäft, Einlagen privater Haushalte, vereinbarte Laufzeit von über 2
+      Jahren“
+    </li>
+    <li>Gold: Entwicklung des London Market Price</li>
+    <li>Unternehmensanleihen: Bonds-Entwicklung</li>
+  </ul>
+  <h3 id="auswahl-der-daten">Auswahl der Daten</h3>
+  <p>
+    Wenn 10-jährige, 20-jährige oder 30-jährige Zeiträume ausgewählt sind,
+    werden entsprechende Zeiträume aus der verfügbaren Finanzhistorie
+    zugrundegelegt (maximal monatsgenauer Einstiegszeitpunkt zwischen 1. Januar
+    1950 und 31. März 2009). Wenn verschiedene Anlageformen vermischt werden,
+    ist zu berücksichtigen, dass sich diese Mischung durch den unterschiedlichen
+    Wertzuwachs der Anlageformen über die Zeit verändert.
+  </p>
+  <h3 id="begriffe">Begriffe</h3>
+  <h4>Aktien</h4>
+  <ul>
+    <li>
+      Eine Aktie ist ein Wertpapier. Hierdurch wird dem Aktionär ein Anteil an
+      einem Unternehmen gesichert, mit bestimmten Mitwirkungsrechten. Der Wert
+      einer Aktie spiegelt die Entwicklung des Unternehmenswider. Ein
+      Aktienindex spiegelt demgegenüber die Entwicklung vieler Unternehmen in
+      einer Zahl wider.
+    </li>
+    <li>
+      Der DAX-30-Index dokumentiert die Entwicklung der 30 stärksten Unternehmen
+      in Deutschland, die verschiedene Kriterien der Deutschen Börse (2018)
+      erfüllen, z.B. juristischer Sitz oder operatives Hauptquartier in
+      Deutschland.
+    </li>
+    <li>
+      Der S&amp;P-500-Index der international bekannten Kredit-Ratingagentur
+      Standard &amp; Poor’s dokumentiert die Entwicklung der 500 größten
+      börsennotierten US-amerikanischen Unternehmen.
+    </li>
+    <li>
+      Der MSCI World vom US-amerikanischen Finanzdienstleister MSCI dokumentiert
+      die Entwicklung von 1.650 Unternehmen aus 23 Industriestaaten. Sie können
+      alle diese Aktienindizes mit Hilfe von eigenen Indexfonds nachbilden
+      (ETFs).
+    </li>
+  </ul>
+  <h4>Bundesanleihen</h4>
+  <ul>
+    <li>
+      Bundesanleihen gehören zu den Bundeswertpapieren und sind
+      Schuldverschreibungen der Bundesrepublik Deutschland (Deutsche
+      Finanzagentur, 2019).
+    </li>
+  </ul>
+  <h4>Festgeld</h4>
+  <ul>
+    <li>
+      Der Begriff Festgeld umschreibt Geldanlagen in Form von Sparkonten mit
+      festgesetzten Laufzeiten und Zinssätzen, man spricht auch von Termingeld.
+    </li>
+  </ul>
+  <h3 id="quellen-der-datensätze">Quellen der Datensätze:</h3>
+  <ul>
+    <li>
+      Allfinancialmatters (2015).
+      <a
+        href="https://allfinancialmatters.com/2015/12/13/sp-500-10-year-rolling-total-returns/"
+        target="_blank"
+        >A historical look at the S&amp;P 500 Total Return by the Month</a
+      >, letzter Zugriff 01.05.2019.
+    </li>
+    <li>
+      Deutsche Bundesbank (2019).
+      <a
+        href="https://www.bundesbank.de/de/statistiken/geld-und-kapitalmaerkte/zinssaetze-und-renditen/realzinssaetze-auf-bankeinlagen/realzinssaetze-auf-bankeinlagen-772412"
+        target="_blank"
+        >Realzinssätze auf Bankeinlagen: Habenzinsen Banken / Sparbriefe mit
+        laufender Zinszahlung, vierjährige Laufzeit / Durchschnittssatz</a
+      >, letzter Zugriff 11.10.2019.
+    </li>
+    <li>
+      Measuringworth (2019).
+      <a
+        href="https://www.measuringworth.com/datasets/gold/result.php"
+        target="_blank"
+        >The Price of Gold - London market price</a
+      >, letzter Zugriff 01.05.2019.
+    </li>
+    <li>MSCI (2019). Real time index data search. MSCI Gross.</li>
+    <li>
+      Stehle, R. (2015). DAX monthly. Zur Verfügung gestellt von Deutsches
+      Aktieninstitut e.V.
+    </li>
+  </ul>
+</template>

+ 49 - 0
src/sampling-info.json

@@ -0,0 +1,49 @@
+[
+    {
+        "text": "Diese Faktenbox zeigt Ihnen, wie sich Renditen über bestimmte Zeiträume in der Vergangenheit entwickelt hatten. Diese sind bereits um die jeweilige Veränderung der Verbraucherpreise (Inflation) bereinigt. Noch nicht berücksichtigt sind Steuern. Es sind keine Entnahmen/Dividenden vorgesehen.",
+        "type": "paragraph"
+    },
+    { "text": "Kosten wurden wie folgt berücksichtigt", "type": "heading" },
+    [
+        { "text": "Aktienfonds 0,5 % p.a.", "type": "text" },
+        { "text": "ETFs 0,5 % p.a.", "type": "text" },
+        { "text": "Festgeld 0,05 % p.a.", "type": "text" },
+        { "text": "Gold 0,5 % p.a.", "type": "text" },
+        { "text": "Unternehmensanleihen 0,5 % p.a.", "type": "text" }
+    ],
+    { "text": "Grundlage der Daten:", "type": "heading" },
+    [
+        {
+            "text": "EFT (MSCI WORLD): Wertentwicklung des MSCI World Index",
+            "type": "text"
+        },
+        { "text": "ETF (DAX): Wertentwicklung des DAX", "type": "text" },
+        {
+            "text": "ETF (Rentenindex): Entwicklung des Deutschen Rentenindex (REX)",
+            "type": "text"
+        },
+        {
+            "text": "ETF (US-Aktien): Wertentwicklung des S&P-500 Index",
+            "type": "text"
+        },
+        {
+            "text": "Festgeld: Deutsche Bundesbank: „Sparbriefe mit laufender Zinszahlung, vierjährige Laufzeit, Durchschnittsatz“ (bis 2002), „Banken DE, Neugeschäft, Einlagen privater Haushalte, vereinbarte Laufzeit von über 2 Jahren“",
+            "type": "text"
+        },
+        { "text": "Gold: Entwicklung des London Market Price", "type": "text" },
+        { "text": "Unternehmensanleihen: Bonds-Entwicklung", "type": "text" }
+    ],
+    { "text": "Auswahl der Daten:", "type": "heading" },
+    {
+        "text": "Wenn 10-jährige, 20-jährige oder 30-jährige Zeiträume ausgewählt sind, werden entsprechende Zeiträume aus der verfügbaren Finanzhistorie zugrundegelegt (maximal monatsgenauer Einstiegszeitpunkt zwischen 1. Januar 1950 und 31. März 2009).\nWenn verschiedene Anlageformen vermischt werden,  ist zu berücksichtigen, dass sich diese Mischung durch den unterschiedlichen Wertzuwachs der Anlageformen über die Zeit verändert.",
+        "type": "paragraph"
+    },
+    { "text": "Quellen der Datensätze:", "type": "heading" },
+    [
+        { "text": "Allfinancialmatters.com", "type": "text" },
+        { "text": "Deutsches Aktieninstitut e.V.", "type": "text" },
+        { "text": "Deutsche Bundesbank", "type": "text" },
+        { "text": "Measuringworth.com", "type": "text" },
+        { "text": "Prof. Richard Stehle (Humbold Universität)", "type": "text" }
+    ]
+]

+ 116 - 0
src/scss/partials/_colours.scss

@@ -0,0 +1,116 @@
+// Color Palette
+// -------------
+
+$colors: (
+    dark: (
+        #322f2b,
+        #07246d,
+        #07576d,
+        #076d50,
+        #076d1d,
+        #576d07,
+        #6d5007,
+        #6d1d07,
+        #6d0724,
+        #6d0757
+    ),
+    medium: (
+        #5b564e,
+        #0a36a5,
+        #0a83a5,
+        #0aa57a,
+        #0aa52c,
+        #83a50a,
+        #a57a0a,
+        #a52c0a,
+        #a50a36,
+        #a50a83
+  ),
+  light: (
+      #847d71,
+      #0d47dd,
+      #0dafdd,
+      #0ddda3,
+      #0ddd3b,
+      #afdd0d,
+      #dda30d,
+      #dd3b0d,
+      #dd0d47,
+      #dd0daf
+  ),
+  base: (
+    "primary":   #4591aa,
+    "selection": #d6d6d6,
+    "lines":     #e0e0e0
+  ),
+
+  text: (
+    "primary":   #666,
+    "secondary": #aaa,
+    "heading":   #222,
+    "ui":        white
+  ),
+
+  background: (
+    "dark":  #282e31,
+    "light": #f5f5f5,
+    "body":  white
+  ),
+
+  dsst: (
+    "yellow": #f2bf1a,
+    "background": #5b564e,
+    "text": #7c7872,
+    "light": #f7f7f6,
+    "lesslight": #e5e5e1,
+    "evenlesslight": #d2d2cc
+  ),
+
+  state: (
+    "muted":   #aaa,
+    "primary": #4591aa,
+    "success": #45ca69,
+    "warning": #ffb800,
+    "error":   #ca4829
+  ),
+
+  blue: (
+    "darker":  #495b61,
+    "dark":    #447281,
+    "base":    #4591aa,
+    "light":   #5ab0cc,
+    "lighter": #74cbe8
+  ),
+
+  green: (
+    "darker":  #3b6e6e,
+    "dark":    #3b8686,
+    "base":    #37a1a1,
+    "light":   #2dbaba,
+    "lighter": #69d1d1
+  ),
+
+  cream: (
+    "darker":  #c47858,
+    "dark":    #e29372,
+    "base":    #ecac91,
+    "light":   #f9c2ab,
+    "lighter": #fdd5c3
+  ),
+
+  red: (
+    "darker":  #653131,
+    "dark":    #b73333,
+    "base":    #da3c3c,
+    "light":   #f25a5a,
+    "lighter": #fa8181
+  ),
+
+  gray: (
+    "darker":  #333333,
+    "dark":    #4d4d4d,
+    "base":    #666666,
+    "light":   #808080,
+    "lighter": #999999
+  )
+)

+ 154 - 0
src/scss/partials/_form_elements.scss

@@ -0,0 +1,154 @@
+@import 'colours';
+
+$tcol: map-get(map-get($colors, dsst), text);
+$lcol: map-get(map-get($colors, dsst), light);
+$llcol: map-get(map-get($colors, dsst), lesslight);
+$hcol: map-get(map-get($colors, dsst), yellow);
+$text: nth(map-get($colors, dark), 1);
+$itext: nth(map-get($colors, light), 1);
+
+$bs: 1px;
+
+button {
+
+    -webkit-appearance: none;
+    background-color: $lcol;
+
+    a, i {
+        text-decoration: none;
+        color: $text;
+    }
+}
+
+button:hover {
+    background-color: $tcol;
+    border: $bs solid $lcol;
+    cursor: pointer;
+
+    a, i {
+        color: $lcol;
+    }
+}
+
+button:active {
+    background-color: $hcol;
+}
+
+button[disabled],
+button[disabled] a,
+button[disabled] i {
+    cursor: not-allowed;
+    color: $itext;
+}
+
+button[disabled]:hover {
+    background-color: $lcol;
+    border: $bs solid $itext;
+}
+
+input::not([type=range]),
+label,
+textarea,
+button {
+    -webkit-appearance: none;
+    color: $tcol;
+    font-size: 1rem;
+    padding: 0.4em 0.8em;
+}
+
+input[type=number] {
+    -moz-appearance: textfield;
+}
+
+input::-webkit-outer-spin-button,
+input::-webkit-inner-spin-button {
+    -webkit-appearance: none;
+}
+
+.input-radio {
+    height: 0;
+    width: 0;
+    opacity: 0;
+}
+
+.input-radio:hover ~ label {
+    border: $bs solid $tcol;
+    opacity: 1;
+}
+
+.input-radio:active ~ label {
+    border: $bs solid $hcol;
+    color: $hcol;
+    opacity: 1;
+}
+
+.input-radio:checked ~ label {
+    border: $bs solid $tcol;
+    opacity: 1;
+}
+
+.input-file {
+    width: 0.1px;
+    height: 0.1px;
+    opacity: 0;
+    overflow: hidden;
+    position: absolute;
+    z-index: -1;
+}
+
+.input-radio ~ label {
+    border: $bs solid $lcol;
+    box-sizing: border-box;
+    cursor: pointer;
+    display: block;
+    opacity: 0.6;
+}
+
+.input-file + label,
+.input-colour + label {
+    background-color: transparent;
+    font-size: 1em;
+    cursor: pointer;
+    display: inline-block;
+}
+
+.input-file:focus + label,
+.input-file + label:hover {
+    border: $bs solid $lcol;
+    background-color: $tcol;
+    color: $lcol;
+}
+
+.input-file:focus + label {
+    outline: 1px dotted #000;
+    outline: -webkit-focus-ring-color auto 5px;
+}
+
+.input-file + label:active {
+    // border: $bs solid $lcol;
+    background-color: $hcol;
+    // color: $lcol;
+}
+
+.form-inline .form-control {
+    display: inline-block;
+    height: 2.2em;
+    vertical-align: middle;
+    width: auto;
+}
+
+.form-item {
+    border: $bs solid $tcol;
+    // float: left;
+    font-size: 1rem;
+    margin: 0.2rem;
+    padding: 0.4rem 0.8rem;
+}
+
+label {
+    background-color: $llcol;
+}
+
+fieldset {
+    border-color: transparent;
+}

+ 311 - 0
src/scss/styles.scss

@@ -0,0 +1,311 @@
+@import 'partials/colours';
+@import 'partials/form_elements';
+
+@font-face {
+    font-family: 'fontello';
+    src: url('../assets/fonts/fontello.eot?66028575');
+    src: url('../assets/fonts/fontello.eot?66028575#iefix') format('embedded-opentype'),
+    url('../assets/fonts/fontello.woff?66028575') format('woff'),
+    url('../assets/fonts/fontello.ttf?66028575') format('truetype'),
+    url('../assets/fonts/fontello.svg?66028575#fontello') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+
+
+.demo-icon
+{
+    font-family: "fontello";
+    font-style: normal;
+    font-weight: normal;
+    speak: none;
+
+    display: inline-block;
+    text-decoration: inherit;
+    width: 1em;
+    margin-right: 0.2em;
+    text-align: center;
+
+    // For safety - reset parent styles, that can break glyph codes
+    font-variant: normal;
+    text-transform: none;
+
+    // Font smoothing. That was taken from TWBS
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+}
+
+$ibg: map-get(map-get($colors, dsst), light);
+$ybg: map-get(map-get($colors, dsst), 'yellow');
+$dbg: nth(map-get($colors, dark), 1);
+$text: $dbg;
+$bbg: map-get(map-get($colors, background), dark);
+$lbg: nth(map-get($colors, light), 1);
+
+$mbg: $ibg;
+
+$largefr: 1.44rem;
+$mediumfr: 1.2rem;
+$defaultfr: 1rem;
+$smallfr: 0.833rem;
+$tinyfr: 0.694rem;
+
+$grid-gap: 1rem;
+
+body {
+    align-content: center;
+    background-color: $dbg;
+    color: $text;
+    font-family: Helvetica, sans-serif;
+    font-size: 16px;
+    font-weight: normal;
+    display: flex;
+    justify-content: center;
+    height: 100%;
+    overflow: hidden;
+}
+
+// @media (prefers-color-scheme: dark) {
+//   body {
+//     color: #ddd;
+//     background-color: #222;
+//   }
+
+//   main {
+//       background-color: #373736;
+//   }
+//   section {
+//       background-color: #373736;
+//   }
+//   #source-modal {
+//       background-color: #373736;
+//   }
+//   .deposit-stock-ratio {
+//       background-color: #353531;
+//   }
+// }
+
+html, body {
+    height: 100%;
+}
+
+html, body, * {
+    border: 0;
+    margin: 0;
+    padding: 0;
+    box-sizing: border-box;
+}
+
+.iconset {
+    display: none;
+}
+
+main {
+    background-color: $ibg;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+    padding: 1rem;
+    width: 1024px;
+    height: 680px;
+}
+
+input, label {
+    font-size: $smallfr;
+}
+
+input[type=range] {
+    max-width: 10rem;
+}
+
+a {
+    color: $lbg;
+    text-decoration: none;
+}
+
+table {
+    width: 50%;
+}
+
+td:nth-child(2) {
+    font-family: monospace;
+}
+
+aside,
+header,
+section {
+    background-color: #fafafa;
+}
+
+header {
+    .factbox-title {
+
+        font-size: $largefr;
+        font-weight: bold;
+        border: 0;
+    }
+
+    .factbox-description {
+        font-weight: normal;
+    }
+
+    #source-modal {
+        background-color: #f7f7f6;
+        box-shadow: 1px 1px 20px 1px #847d71;
+        height: 42rem;
+        left: 0;
+        margin: 0 auto;
+        right: 0;
+        overflow: auto;
+        padding: 1rem 2.5rem;
+        position: absolute;
+        top: 0.35rem;
+        width: 55rem;
+        z-index: 1000;
+        h3, h4 {
+            margin: 0.5rem 0;
+        }
+
+    }
+}
+
+h1 a {
+    float: right;
+}
+
+.samplers {
+    display: flex;
+    justify-content: space-between;
+
+    .reference-group-title {
+        margin: 0.6rem 0;
+    }
+
+    .reference-group {
+        padding: 0.2rem 0.5rem 0;
+        background-color: #e5e5e1;
+    }
+
+    .icon-array {
+        border: 1px solid $lbg;
+    }
+
+    .investment-options-ratio {
+        display: flex;
+        justify-content: space-between;
+    }
+
+    .investment-option-selector {
+        display: flex;
+        flex-direction: column;
+        font-weight: bold;
+
+        select {
+            font-size: $smallfr;
+        }
+    }
+
+    .investment-option-selector-left {
+        align-content: flex-end;
+    }
+    .investment-option-selector-right {
+
+    }
+
+    .investment-options-range-labels {
+        font-weight: bold;
+        display: flex;
+        justify-content: space-between;
+    }
+}
+
+aside {
+
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    .overview {
+        text-align: right;
+    }
+
+    // custom element
+    sampler-textual {
+        display: flex;
+        justify-content: center;
+        min-height: 9rem;
+        text-align: center;
+    }
+
+    .current-sample > p {
+        margin: 0.5em 0;
+    }
+
+    .current-sample-number {
+        border-radius: 50%;
+        color: $ibg;
+        display: inline-block;
+        font-family: monospace;
+        font-size: $mediumfr;
+        font-weight: bold;
+        height: 5rem;
+        line-height: 5rem;
+        width: 5rem;
+    }
+}
+
+.controls-sample-size-reset {
+    display: flex;
+    justify-content: space-between;
+}
+
+.buttons {
+    display: flex;
+    flex-direction: column;
+    justify-content: space-around;
+
+    input {
+        display: none;
+    }
+
+    .form-item {
+        padding: 1rem;
+        text-align: center;
+    }
+}
+
+button.sample {
+    padding: 1rem;
+}
+
+.groupsize, .period {
+    display: flex;
+    flex-direction: column;
+
+    .input-radio ~ label {
+        font-size: $tinyfr;
+        width: 7.5rem;
+        height: 2rem;
+        line-height: 1.2rem;
+        text-align: center;
+    }
+
+    .input-label {
+        font-size: $smallfr;
+    }
+
+    .size-selectors, {
+        display: flex;
+    }
+}
+
+footer {
+
+    display: flex;
+    justify-content: center;
+    padding-top: 1rem;
+
+    label {
+        font-size: $smallfr;
+    }
+}

+ 75 - 0
test/aurelia-karma.js

@@ -0,0 +1,75 @@
+(function(global) {
+  var karma = global.__karma__;
+  var requirejs = global.requirejs
+  var locationPathname = global.location.pathname;
+
+  if (!karma || !requirejs) {
+    return;
+  }
+
+  function normalizePath(path) {
+    var normalized = []
+    var parts = path
+      .split('?')[0] // cut off GET params, used by noext requirejs plugin
+      .split('/')
+
+    for (var i = 0; i < parts.length; i++) {
+      if (parts[i] === '.') {
+        continue
+      }
+
+      if (parts[i] === '..' && normalized.length && normalized[normalized.length - 1] !== '..') {
+        normalized.pop()
+        continue
+      }
+
+      normalized.push(parts[i])
+    }
+
+    return normalized.join('/')
+  }
+
+  function patchRequireJS(files, originalLoadFn, locationPathname) {
+    var IS_DEBUG = /debug\.html$/.test(locationPathname)
+
+    requirejs.load = function (context, moduleName, url) {
+      url = normalizePath(url)
+
+      if (files.hasOwnProperty(url) && !IS_DEBUG) {
+        url = url + '?' + files[url]
+      }
+
+      if (url.indexOf('/base') !== 0) {
+        url = '/base/' + url;
+      }
+
+      return originalLoadFn.call(this, context, moduleName, url)
+    }
+
+    let originalDefine = global.define;
+    global.define = function(name, deps, m) {
+      if (typeof name === 'string') {
+        originalDefine('/base/src/' + name, [name], function (result) { return result; });
+      }
+
+      return originalDefine(name, deps, m);
+    }
+  }
+
+  function requireTests() {
+    var TEST_REGEXP = /(spec)\.js$/i;
+    var allTestFiles = ['/base/test/unit/setup.js'];
+
+    Object.keys(window.__karma__.files).forEach(function(file) {
+      if (TEST_REGEXP.test(file)) {
+        allTestFiles.push(file);
+      }
+    });
+
+    require(allTestFiles, window.__karma__.start);
+  }
+
+  karma.loaded = function() {}; // make it async
+  patchRequireJS(karma.files, requirejs.load, locationPathname);
+  requireTests();
+})(window);

+ 7 - 0
test/unit/app.spec.js

@@ -0,0 +1,7 @@
+import {App} from '../../src/app';
+
+describe('the app', () => {
+  it('says hello', () => {
+    expect(new App().message).toBe('Hello World!');
+  });
+});

+ 3 - 0
test/unit/setup.js

@@ -0,0 +1,3 @@
+import 'aurelia-polyfills';
+import {initialize} from 'aurelia-pal-browser';
+initialize();

Some files were not shown because too many files changed in this diff