diff --git a/browserslist b/.browserslistrc similarity index 100% rename from browserslist rename to .browserslistrc diff --git a/DEVELOPERS.md b/DEVELOPERS.md index d5d7cb3a7a7d098ea85ca6892957746fe5f048e9..207e7687ef0e0a1db871490ab3023fe1d1f9f812 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -270,7 +270,7 @@ case CalculatorType.MacroRugoCompound: Les listes déroulantes sont toujours associées à des **propriétés** du Nub. -En général les valeurs autorisées sont tirées de l'**enum** correspondant, d'après le tableau `Session.enumFromProperty` de JaLHyd. Pour les autres cas, voir "si la liste n'est pas associée à un enum" ci-dessous. +En général les valeurs autorisées sont tirées de l'**enum** correspondant, d'après le tableau `Session.enumFromProperty` de JaLHyd. Pour les autres cas, voir les paragraphes "si la liste est associée à …" ci-dessous. #### configuration @@ -309,7 +309,7 @@ Dans le fichier de configuration du module, ajouter la définition des listes d Une liste déroulante peut être associée à une **source**, qui détermine quels sont les choix possibles. -Pour ajouter une source, modifier la méthode `parseConfig()` de la classe `SelectField`, dans le fichier `src/app/formulaire/elements/select-field.ts`. +Pour ajouter une source, modifier la méthode `loadEntriesFromSource()` de la classe `SelectField`, dans le fichier `src/app/formulaire/elements/select-field.ts`. Exemple pour la source "remous_target" associée à la propriété "varCalc", dans le module CourbeRemous : diff --git a/angular.json b/angular.json index c422f278e5532cf2ad7445fd94399cc45f61c155..cb5b49b6a3f35dddcc00bd1a7da7d560179484f7 100644 --- a/angular.json +++ b/angular.json @@ -163,7 +163,7 @@ "schematics": { "@schematics/angular:component": { "prefix": "app", - "styleext": "scss" + "style": "scss" }, "@schematics/angular:directive": { "prefix": "app" diff --git a/docs/en/calculators/hsl/courbe_remous.md b/docs/en/calculators/hsl/courbe_remous.md index 774c3bb635e26b5f97bc1774243a6fc5d3cadef4..1c14104f932a052f2ee401e5866722b99362a67f 100644 --- a/docs/en/calculators/hsl/courbe_remous.md +++ b/docs/en/calculators/hsl/courbe_remous.md @@ -20,8 +20,8 @@ The integration of the equation can be done by one of the following methods: [Ru Depending on the flow regime, the calculation can be carried out: - * from downstream to upstream for the river regime with definition of a downstream boundary condition. - * from upstream to downstream for torrential regime with definition of an upstream boundary condition + * from downstream to upstream for subcritical flow with definition of a downstream boundary condition. + * from upstream to downstream for supercritical flow with definition of an upstream boundary condition If we take the example of a rectangular channel, [the proposed scilab code example for solving an ordinary differential equation](../../methodes_numeriques/euler_explicite.md) is amended as follows: diff --git a/docs/en/calculators/hyd_en_charge/lechapt-calmon.md b/docs/en/calculators/hyd_en_charge/lechapt-calmon.md index 4f42f1ab60dd086dfc7244f635ae288c8184f808..9cbdc07a2579973e5492f99bfd3be739e099f46e 100644 --- a/docs/en/calculators/hyd_en_charge/lechapt-calmon.md +++ b/docs/en/calculators/hyd_en_charge/lechapt-calmon.md @@ -1,6 +1,6 @@ # Lechapt and Calmon -Loss of charge in a circular pipe: Lechapt and Calmon abacus +Headloss in a circular pipe: Lechapt and Calmon abacus Lechapt and Calmon formula is based on adjustements of [Cyril Frank Colebrook formula](https://en.wikipedia.org/wiki/Darcy_friction_factor_formulae#Colebrook%E2%80%93White_equation): @@ -8,7 +8,7 @@ $$J=L.Q^M.D^{-N}$$ With: -- \(J\): loss of charge in mm/m or m/km; +- \(J\): headloss in mm/m or m/km; - \(Q\): flow in L/s; - \(D\): pipe diameter in m; - \(L\), \(M\) and \(N\) coefficients depending on roughness {ϵ}. diff --git a/docs/en/calculators/par/baffle_fishway_Fatou_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_Fatou_slope_10_.svg new file mode 100644 index 0000000000000000000000000000000000000000..373eb461367a5bb94869ec62a11fe0c6b8d60a23 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_Fatou_slope_10_.svg @@ -0,0 +1,508 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 1.0625 0 L 1.0625 -10.308594 L 8.128906 -10.308594 L 8.128906 -8.5625 L 3.144531 -8.5625 L 3.144531 -6.125 L 7.445313 -6.125 L 7.445313 -4.378906 L 3.144531 -4.378906 L 3.144531 0 Z M 1.0625 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface16"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 406.925781 C 77.101563 410.523438 71.699219 410.523438 71.699219 406.925781 C 71.699219 403.324219 77.101563 403.324219 77.101563 406.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 87.859375 390.464844 C 87.859375 394.066406 82.460938 394.066406 82.460938 390.464844 C 82.460938 386.863281 87.859375 386.863281 87.859375 390.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.1875 375.652344 C 99.1875 379.25 93.789063 379.25 93.789063 375.652344 C 93.789063 372.050781 99.1875 372.050781 99.1875 375.652344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.816406 362.484375 C 108.816406 366.085938 103.417969 366.085938 103.417969 362.484375 C 103.417969 358.882813 108.816406 358.882813 108.816406 362.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.011719 349.316406 C 119.011719 352.917969 113.613281 352.917969 113.613281 349.316406 C 113.613281 345.714844 119.011719 345.714844 119.011719 349.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.402344 324.628906 C 139.402344 328.226563 134 328.226563 134 324.628906 C 134 321.027344 139.402344 321.027344 139.402344 324.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 148.460938 314.753906 C 148.460938 318.351563 143.0625 318.351563 143.0625 314.753906 C 143.0625 311.152344 148.460938 311.152344 148.460938 314.753906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 163.1875 295 C 163.1875 298.601563 157.789063 298.601563 157.789063 295 C 157.789063 291.402344 163.1875 291.402344 163.1875 295 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 177.914063 280.1875 C 177.914063 283.789063 172.515625 283.789063 172.515625 280.1875 C 172.515625 276.585938 177.914063 276.585938 177.914063 280.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.808594 265.375 C 189.808594 268.972656 184.40625 268.972656 184.40625 265.375 C 184.40625 261.773438 189.808594 261.773438 189.808594 265.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.800781 248.914063 C 206.800781 252.515625 201.398438 252.515625 201.398438 248.914063 C 201.398438 245.316406 206.800781 245.316406 206.800781 248.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.65625 232.457031 C 222.65625 236.054688 217.257813 236.054688 217.257813 232.457031 C 217.257813 228.855469 222.65625 228.855469 222.65625 232.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.550781 220.933594 C 234.550781 224.535156 229.152344 224.535156 229.152344 220.933594 C 229.152344 217.332031 234.550781 217.332031 234.550781 220.933594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 249.277344 206.121094 C 249.277344 209.71875 243.878906 209.71875 243.878906 206.121094 C 243.878906 202.519531 249.277344 202.519531 249.277344 206.121094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.570313 192.953125 C 264.570313 196.554688 259.167969 196.554688 259.167969 192.953125 C 259.167969 189.351563 264.570313 189.351563 264.570313 192.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 282.691406 178.960938 C 282.691406 182.5625 277.292969 182.5625 277.292969 178.960938 C 277.292969 175.363281 282.691406 175.363281 282.691406 178.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.683594 163.328125 C 299.683594 166.925781 294.285156 166.925781 294.285156 163.328125 C 294.285156 159.726563 299.683594 159.726563 299.683594 163.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.375 150.160156 C 318.375 153.757813 312.972656 153.757813 312.972656 150.160156 C 312.972656 146.558594 318.375 146.558594 318.375 150.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.800781 138.636719 C 334.800781 142.238281 329.398438 142.238281 329.398438 138.636719 C 329.398438 135.039063 334.800781 135.039063 334.800781 138.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 348.390625 129.585938 C 348.390625 133.183594 342.992188 133.183594 342.992188 129.585938 C 342.992188 125.984375 348.390625 125.984375 348.390625 129.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.515625 117.238281 C 366.515625 120.839844 361.117188 120.839844 361.117188 117.238281 C 361.117188 113.640625 366.515625 113.640625 366.515625 117.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 382.941406 105.71875 C 382.941406 109.320313 377.539063 109.320313 377.539063 105.71875 C 377.539063 102.117188 382.941406 102.117188 382.941406 105.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 408.992188 94.195313 C 408.992188 97.796875 403.59375 97.796875 403.59375 94.195313 C 403.59375 90.597656 408.992188 90.597656 408.992188 94.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 429.949219 82.675781 C 429.949219 86.277344 424.550781 86.277344 424.550781 82.675781 C 424.550781 79.074219 429.949219 79.074219 429.949219 82.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 445.242188 77.738281 C 445.242188 81.335938 439.839844 81.335938 439.839844 77.738281 C 439.839844 74.136719 445.242188 74.136719 445.242188 77.738281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.039063 430.558594 L 458.398438 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.039063 430.558594 L 67.039063 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.945313 430.558594 L 122.945313 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.855469 430.558594 L 178.855469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.765625 430.558594 L 234.765625 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.671875 430.558594 L 290.671875 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.582031 430.558594 L 346.582031 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.492188 430.558594 L 402.492188 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 430.558594 L 458.398438 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.359375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.033203" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.367188" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.041016" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.265625" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.939453" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.273438" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.947266" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.175781" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.849609" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.183594" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.857422" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.085938" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.759766" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.09375" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.767578" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.992188" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.666016" y="456.480469"/> + <use xlink:href="#glyph0-5" x="289" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.673828" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.902344" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.576172" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.910156" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.583984" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.8125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.486328" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.820313" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.494141" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.71875" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.392578" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.726563" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.400391" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 389.640625 L 59.039063 113.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 389.640625 L 51.839844 389.640625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 334.503906 L 51.839844 334.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 279.363281 L 51.839844 279.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 224.226563 L 51.839844 224.226563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 169.085938 L 51.839844 169.085938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 113.949219 L 51.839844 113.949219 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="397.980469"/> + <use xlink:href="#glyph1-2" x="41.761719" y="391.306641"/> + <use xlink:href="#glyph1-3" x="41.761719" y="387.972656"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="342.84375"/> + <use xlink:href="#glyph1-2" x="41.761719" y="336.169922"/> + <use xlink:href="#glyph1-4" x="41.761719" y="332.835938"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="287.703125"/> + <use xlink:href="#glyph1-2" x="41.761719" y="281.029297"/> + <use xlink:href="#glyph1-5" x="41.761719" y="277.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="232.566406"/> + <use xlink:href="#glyph1-2" x="41.761719" y="225.892578"/> + <use xlink:href="#glyph1-6" x="41.761719" y="222.558594"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="177.425781"/> + <use xlink:href="#glyph1-2" x="41.761719" y="170.751953"/> + <use xlink:href="#glyph1-1" x="41.761719" y="167.417969"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="122.289063"/> + <use xlink:href="#glyph1-2" x="41.761719" y="115.615234"/> + <use xlink:href="#glyph1-3" x="41.761719" y="112.28125"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.175781" y="34.675781"/> + <use xlink:href="#glyph2-2" x="198.971875" y="34.675781"/> + <use xlink:href="#glyph2-3" x="206.980469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.775781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.571875" y="34.675781"/> + <use xlink:href="#glyph2-6" x="229.367969" y="34.675781"/> + <use xlink:href="#glyph2-7" x="233.36875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="242.164844" y="34.675781"/> + <use xlink:href="#glyph2-8" x="250.173438" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.96875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="259.764063" y="34.675781"/> + <use xlink:href="#glyph2-10" x="263.764844" y="34.675781"/> + <use xlink:href="#glyph2-11" x="271.773438" y="34.675781"/> + <use xlink:href="#glyph2-6" x="279.782031" y="34.675781"/> + <use xlink:href="#glyph2-12" x="283.782812" y="34.675781"/> + <use xlink:href="#glyph2-6" x="293.3875" y="34.675781"/> + <use xlink:href="#glyph2-13" x="297.388281" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.797656" y="34.675781"/> + <use xlink:href="#glyph2-14" x="309.798437" y="34.675781"/> + <use xlink:href="#glyph2-15" x="317.807031" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.815625" y="34.675781"/> + <use xlink:href="#glyph2-16" x="329.816406" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 406.925781 C 77.101563 410.523438 71.699219 410.523438 71.699219 406.925781 C 71.699219 403.324219 77.101563 403.324219 77.101563 406.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 87.859375 390.464844 C 87.859375 394.066406 82.460938 394.066406 82.460938 390.464844 C 82.460938 386.863281 87.859375 386.863281 87.859375 390.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.1875 375.652344 C 99.1875 379.25 93.789063 379.25 93.789063 375.652344 C 93.789063 372.050781 99.1875 372.050781 99.1875 375.652344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.816406 362.484375 C 108.816406 366.085938 103.417969 366.085938 103.417969 362.484375 C 103.417969 358.882813 108.816406 358.882813 108.816406 362.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.011719 349.316406 C 119.011719 352.917969 113.613281 352.917969 113.613281 349.316406 C 113.613281 345.714844 119.011719 345.714844 119.011719 349.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.402344 324.628906 C 139.402344 328.226563 134 328.226563 134 324.628906 C 134 321.027344 139.402344 321.027344 139.402344 324.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 148.460938 314.753906 C 148.460938 318.351563 143.0625 318.351563 143.0625 314.753906 C 143.0625 311.152344 148.460938 311.152344 148.460938 314.753906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 163.1875 295 C 163.1875 298.601563 157.789063 298.601563 157.789063 295 C 157.789063 291.402344 163.1875 291.402344 163.1875 295 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 177.914063 280.1875 C 177.914063 283.789063 172.515625 283.789063 172.515625 280.1875 C 172.515625 276.585938 177.914063 276.585938 177.914063 280.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.808594 265.375 C 189.808594 268.972656 184.40625 268.972656 184.40625 265.375 C 184.40625 261.773438 189.808594 261.773438 189.808594 265.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.800781 248.914063 C 206.800781 252.515625 201.398438 252.515625 201.398438 248.914063 C 201.398438 245.316406 206.800781 245.316406 206.800781 248.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.65625 232.457031 C 222.65625 236.054688 217.257813 236.054688 217.257813 232.457031 C 217.257813 228.855469 222.65625 228.855469 222.65625 232.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.550781 220.933594 C 234.550781 224.535156 229.152344 224.535156 229.152344 220.933594 C 229.152344 217.332031 234.550781 217.332031 234.550781 220.933594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 249.277344 206.121094 C 249.277344 209.71875 243.878906 209.71875 243.878906 206.121094 C 243.878906 202.519531 249.277344 202.519531 249.277344 206.121094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.570313 192.953125 C 264.570313 196.554688 259.167969 196.554688 259.167969 192.953125 C 259.167969 189.351563 264.570313 189.351563 264.570313 192.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 282.691406 178.960938 C 282.691406 182.5625 277.292969 182.5625 277.292969 178.960938 C 277.292969 175.363281 282.691406 175.363281 282.691406 178.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.683594 163.328125 C 299.683594 166.925781 294.285156 166.925781 294.285156 163.328125 C 294.285156 159.726563 299.683594 159.726563 299.683594 163.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.375 150.160156 C 318.375 153.757813 312.972656 153.757813 312.972656 150.160156 C 312.972656 146.558594 318.375 146.558594 318.375 150.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.800781 138.636719 C 334.800781 142.238281 329.398438 142.238281 329.398438 138.636719 C 329.398438 135.039063 334.800781 135.039063 334.800781 138.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 348.390625 129.585938 C 348.390625 133.183594 342.992188 133.183594 342.992188 129.585938 C 342.992188 125.984375 348.390625 125.984375 348.390625 129.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.515625 117.238281 C 366.515625 120.839844 361.117188 120.839844 361.117188 117.238281 C 361.117188 113.640625 366.515625 113.640625 366.515625 117.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 382.941406 105.71875 C 382.941406 109.320313 377.539063 109.320313 377.539063 105.71875 C 377.539063 102.117188 382.941406 102.117188 382.941406 105.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 408.992188 94.195313 C 408.992188 97.796875 403.59375 97.796875 403.59375 94.195313 C 403.59375 90.597656 408.992188 90.597656 408.992188 94.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 429.949219 82.675781 C 429.949219 86.277344 424.550781 86.277344 424.550781 82.675781 C 424.550781 79.074219 429.949219 79.074219 429.949219 82.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 445.242188 77.738281 C 445.242188 81.335938 439.839844 81.335938 439.839844 77.738281 C 439.839844 74.136719 445.242188 74.136719 445.242188 77.738281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 405.65625 L 78.238281 400.351563 L 82.078125 395.089844 L 85.921875 389.867188 L 89.761719 384.683594 L 93.601563 379.539063 L 97.441406 374.4375 L 101.28125 369.371094 L 105.121094 364.347656 L 108.960938 359.363281 L 112.800781 354.417969 L 116.640625 349.511719 L 120.480469 344.644531 L 124.320313 339.820313 L 128.160156 335.03125 L 132 330.285156 L 135.839844 325.578125 L 139.679688 320.910156 L 143.519531 316.28125 L 147.359375 311.695313 L 151.199219 307.144531 L 155.039063 302.636719 L 158.878906 298.167969 L 162.71875 293.738281 L 166.558594 289.347656 L 170.398438 285 L 174.238281 280.6875 L 178.078125 276.417969 L 181.921875 272.1875 L 185.761719 267.996094 L 189.601563 263.84375 L 193.441406 259.730469 L 197.28125 255.660156 L 201.121094 251.625 L 204.960938 247.632813 L 208.800781 243.679688 L 212.640625 239.765625 L 216.480469 235.890625 L 220.320313 232.058594 L 224.160156 228.261719 L 228 224.507813 L 231.839844 220.792969 L 235.679688 217.117188 L 239.519531 213.480469 L 243.359375 209.882813 L 247.199219 206.328125 L 251.039063 202.808594 L 254.878906 199.332031 L 258.71875 195.894531 L 262.558594 192.496094 L 266.398438 189.136719 L 270.238281 185.820313 L 274.078125 182.539063 L 277.921875 179.300781 L 281.761719 176.101563 L 285.601563 172.941406 L 289.441406 169.820313 L 293.28125 166.738281 L 297.121094 163.699219 L 300.960938 160.695313 L 304.800781 157.734375 L 308.640625 154.8125 L 312.480469 151.929688 L 316.320313 149.089844 L 320.160156 146.285156 L 324 143.523438 L 327.839844 140.796875 L 331.679688 138.113281 L 335.519531 135.46875 L 339.359375 132.863281 L 343.199219 130.300781 L 347.039063 127.773438 L 350.878906 125.289063 L 354.71875 122.84375 L 358.558594 120.4375 L 362.398438 118.070313 L 366.238281 115.742188 L 370.078125 113.457031 L 373.921875 111.207031 L 377.761719 109 L 381.601563 106.832031 L 385.441406 104.703125 L 389.28125 102.613281 L 393.121094 100.566406 L 396.960938 98.554688 L 400.800781 96.585938 L 404.640625 94.65625 L 408.480469 92.765625 L 412.320313 90.914063 L 416.160156 89.101563 L 420 87.332031 L 423.839844 85.597656 L 427.679688 83.90625 L 431.519531 82.253906 L 435.359375 80.640625 L 439.199219 79.066406 L 443.039063 77.535156 L 446.878906 76.039063 L 450.71875 74.585938 L 454.558594 73.171875 L 458.398438 71.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.148438 416.800781 L 78.785156 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.964844 420.617188 L 74.964844 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 83.042969 398.695313 L 90.679688 398.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 86.859375 402.511719 L 86.859375 394.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.238281 382.234375 L 100.875 382.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.054688 386.054688 L 97.054688 378.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 102.296875 367.421875 L 109.933594 367.421875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.117188 371.242188 L 106.117188 363.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 111.925781 354.253906 L 119.5625 354.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 115.746094 358.074219 L 115.746094 350.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.6875 337.796875 L 130.324219 337.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 126.507813 341.613281 L 126.507813 333.976563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 136.28125 319.691406 L 143.917969 319.691406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 140.097656 323.507813 L 140.097656 315.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 152.140625 299.9375 L 159.777344 299.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 155.957031 303.757813 L 155.957031 296.121094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.332031 285.125 L 169.96875 285.125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.152344 288.945313 L 166.152344 281.308594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.191406 265.375 L 185.828125 265.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 182.011719 269.191406 L 182.011719 261.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 190.085938 250.5625 L 197.722656 250.5625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.90625 254.378906 L 193.90625 246.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 201.980469 237.394531 L 209.617188 237.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 205.796875 241.210938 L 205.796875 233.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.9375 215.996094 L 230.574219 215.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.753906 219.816406 L 226.753906 212.179688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 235.394531 202.828125 L 243.03125 202.828125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.214844 206.648438 L 239.214844 199.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.21875 183.078125 L 262.855469 183.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.039063 186.894531 L 259.039063 179.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 267.113281 173.203125 L 274.75 173.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.929688 177.019531 L 270.929688 169.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.441406 163.328125 L 286.078125 163.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 282.257813 167.144531 L 282.257813 159.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 292.03125 155.097656 L 299.667969 155.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.851563 158.914063 L 295.851563 151.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 305.625 143.574219 L 313.261719 143.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 309.445313 147.394531 L 309.445313 139.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.953125 136.992188 L 324.589844 136.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.773438 140.808594 L 320.773438 133.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.113281 128.761719 L 338.75 128.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.929688 132.582031 L 334.929688 124.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 347.539063 118.886719 L 355.175781 118.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 351.355469 122.703125 L 351.355469 115.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 358.296875 113.949219 L 365.933594 113.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.117188 117.765625 L 362.117188 110.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.359375 109.011719 L 374.996094 109.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 371.179688 112.828125 L 371.179688 105.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.917969 104.074219 L 392.554688 104.074219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.734375 107.890625 L 388.734375 100.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.945313 99.136719 L 405.582031 99.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 401.761719 102.953125 L 401.761719 95.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 419.464844 94.195313 L 427.101563 94.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.285156 98.015625 L 423.285156 90.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.6875 89.257813 L 450.324219 89.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.507813 93.078125 L 446.507813 85.441406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 88.4375 L 462.21875 88.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 92.253906 L 458.398438 84.617188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.964844 417.761719 L 78.800781 411.472656 L 82.636719 405.246094 L 86.46875 399.078125 L 90.304688 392.972656 L 94.136719 386.925781 L 97.972656 380.9375 L 101.808594 375.011719 L 105.640625 369.148438 L 109.476563 363.34375 L 113.308594 357.601563 L 117.144531 351.917969 L 120.976563 346.292969 L 124.8125 340.730469 L 128.648438 335.226563 L 132.480469 329.785156 L 136.316406 324.40625 L 140.148438 319.085938 L 143.984375 313.824219 L 147.820313 308.625 L 151.652344 303.484375 L 155.488281 298.40625 L 159.320313 293.390625 L 163.15625 288.429688 L 166.992188 283.535156 L 170.824219 278.695313 L 174.660156 273.921875 L 178.492188 269.203125 L 182.328125 264.550781 L 186.164063 259.953125 L 189.996094 255.421875 L 193.832031 250.945313 L 197.664063 246.535156 L 201.5 242.179688 L 205.332031 237.886719 L 209.167969 233.65625 L 213.003906 229.484375 L 216.835938 225.375 L 220.671875 221.324219 L 224.503906 217.332031 L 228.339844 213.402344 L 232.175781 209.535156 L 236.007813 205.726563 L 239.84375 201.980469 L 243.675781 198.292969 L 247.511719 194.664063 L 251.347656 191.097656 L 255.179688 187.59375 L 259.015625 184.144531 L 262.847656 180.761719 L 266.683594 177.4375 L 270.515625 174.171875 L 274.351563 170.96875 L 278.1875 167.828125 L 282.019531 164.742188 L 285.855469 161.722656 L 289.6875 158.761719 L 293.523438 155.859375 L 297.359375 153.019531 L 301.191406 150.238281 L 305.027344 147.519531 L 308.859375 144.859375 L 312.695313 142.261719 L 316.53125 139.722656 L 320.363281 137.246094 L 324.199219 134.828125 L 328.03125 132.472656 L 331.867188 130.175781 L 335.703125 127.9375 L 339.535156 125.765625 L 343.371094 123.648438 L 347.203125 121.59375 L 351.039063 119.601563 L 354.871094 117.667969 L 358.707031 115.796875 L 362.542969 113.984375 L 366.375 112.230469 L 370.210938 110.539063 L 374.042969 108.910156 L 377.878906 107.339844 L 381.714844 105.828125 L 385.546875 104.378906 L 389.382813 102.992188 L 393.214844 101.664063 L 397.050781 100.394531 L 400.886719 99.1875 L 404.71875 98.039063 L 408.554688 96.953125 L 412.386719 95.925781 L 416.222656 94.960938 L 420.054688 94.058594 L 423.890625 93.210938 L 427.726563 92.429688 L 431.558594 91.707031 L 435.394531 91.042969 L 439.226563 90.441406 L 443.0625 89.898438 L 446.898438 89.417969 L 450.730469 88.996094 L 454.566406 88.632813 L 458.398438 88.335938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-16" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-3" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-19" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-1" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-3" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-20" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-6" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-6" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-16" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-21" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-5" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-18" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-1" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-3" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-1" x="439.058594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="445.732422" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_Fatou_slope_15_.svg b/docs/en/calculators/par/baffle_fishway_Fatou_slope_15_.svg new file mode 100644 index 0000000000000000000000000000000000000000..48a1d0ae6ba8afabec531f3fc4308174a416e014 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_Fatou_slope_15_.svg @@ -0,0 +1,511 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 1.0625 0 L 1.0625 -10.308594 L 8.128906 -10.308594 L 8.128906 -8.5625 L 3.144531 -8.5625 L 3.144531 -6.125 L 7.445313 -6.125 L 7.445313 -4.378906 L 3.144531 -4.378906 L 3.144531 0 Z M 1.0625 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 0.640625 -2.652344 L 2.609375 -2.855469 C 2.660156 -2.40625 2.828125 -2.054688 3.105469 -1.796875 C 3.382813 -1.535156 3.699219 -1.40625 4.0625 -1.40625 C 4.472656 -1.40625 4.824219 -1.570313 5.109375 -1.90625 C 5.394531 -2.238281 5.535156 -2.746094 5.539063 -3.425781 C 5.535156 -4.054688 5.394531 -4.527344 5.113281 -4.847656 C 4.828125 -5.160156 4.460938 -5.320313 4.007813 -5.324219 C 3.4375 -5.320313 2.925781 -5.070313 2.480469 -4.570313 L 0.878906 -4.800781 L 1.890625 -10.167969 L 7.117188 -10.167969 L 7.117188 -8.316406 L 3.390625 -8.316406 L 3.078125 -6.566406 C 3.515625 -6.785156 3.96875 -6.894531 4.429688 -6.898438 C 5.304688 -6.894531 6.046875 -6.578125 6.660156 -5.941406 C 7.265625 -5.300781 7.570313 -4.472656 7.574219 -3.460938 C 7.570313 -2.609375 7.324219 -1.851563 6.835938 -1.1875 C 6.160156 -0.277344 5.230469 0.175781 4.042969 0.175781 C 3.089844 0.175781 2.3125 -0.078125 1.714844 -0.589844 C 1.113281 -1.097656 0.753906 -1.785156 0.640625 -2.652344 Z M 0.640625 -2.652344 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface21"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.398438 404.699219 C 89.398438 408.300781 83.996094 408.300781 83.996094 404.699219 C 83.996094 401.097656 89.398438 401.097656 89.398438 404.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.695313 390.871094 C 101.695313 394.46875 96.292969 394.46875 96.292969 390.871094 C 96.292969 387.269531 101.695313 387.269531 101.695313 390.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.34375 374.449219 C 117.34375 378.046875 111.945313 378.046875 111.945313 374.449219 C 111.945313 370.847656 117.34375 370.847656 117.34375 374.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.082031 361.484375 C 129.082031 365.082031 123.683594 365.082031 123.683594 361.484375 C 123.683594 357.882813 129.082031 357.882813 129.082031 361.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.617188 345.925781 C 143.617188 349.527344 138.214844 349.527344 138.214844 345.925781 C 138.214844 342.324219 143.617188 342.324219 143.617188 345.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 158.148438 333.824219 C 158.148438 337.425781 152.746094 337.425781 152.746094 333.824219 C 152.746094 330.226563 158.148438 330.226563 158.148438 333.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 173.796875 316.539063 C 173.796875 320.140625 168.398438 320.140625 168.398438 316.539063 C 168.398438 312.9375 173.796875 312.9375 173.796875 316.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 188.890625 304.4375 C 188.890625 308.039063 183.492188 308.039063 183.492188 304.4375 C 183.492188 300.839844 188.890625 300.839844 188.890625 304.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.863281 288.878906 C 202.863281 292.480469 197.464844 292.480469 197.464844 288.878906 C 197.464844 285.28125 202.863281 285.28125 202.863281 288.878906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.515625 275.050781 C 218.515625 278.652344 213.113281 278.652344 213.113281 275.050781 C 213.113281 271.453125 218.515625 271.453125 218.515625 275.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.929688 262.949219 C 231.929688 266.550781 226.53125 266.550781 226.53125 262.949219 C 226.53125 259.351563 231.929688 259.351563 231.929688 262.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.992188 252.578125 C 241.992188 256.179688 236.589844 256.179688 236.589844 252.578125 C 236.589844 248.980469 241.992188 248.980469 241.992188 252.578125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.050781 243.9375 C 252.050781 247.535156 246.652344 247.535156 246.652344 243.9375 C 246.652344 240.335938 252.050781 240.335938 252.050781 243.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 263.789063 235.292969 C 263.789063 238.890625 258.390625 238.890625 258.390625 235.292969 C 258.390625 231.691406 263.789063 231.691406 263.789063 235.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.765625 222.328125 C 277.765625 225.925781 272.363281 225.925781 272.363281 222.328125 C 272.363281 218.726563 277.765625 218.726563 277.765625 222.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.089844 206.769531 C 295.089844 210.371094 289.691406 210.371094 289.691406 206.769531 C 289.691406 203.167969 295.089844 203.167969 295.089844 206.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.945313 197.261719 C 307.945313 200.863281 302.546875 200.863281 302.546875 197.261719 C 302.546875 193.664063 307.945313 193.664063 307.945313 197.261719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.242188 186.890625 C 320.242188 190.492188 314.84375 190.492188 314.84375 186.890625 C 314.84375 183.289063 320.242188 183.289063 320.242188 186.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.421875 176.519531 C 331.421875 180.117188 326.023438 180.117188 326.023438 176.519531 C 326.023438 172.917969 331.421875 172.917969 331.421875 176.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.484375 167.875 C 341.484375 171.476563 336.085938 171.476563 336.085938 167.875 C 336.085938 164.273438 341.484375 164.273438 341.484375 167.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.105469 160.960938 C 352.105469 164.5625 346.703125 164.5625 346.703125 160.960938 C 346.703125 157.359375 352.105469 157.359375 352.105469 160.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 364.402344 152.316406 C 364.402344 155.917969 359 155.917969 359 152.316406 C 359 148.71875 364.402344 148.71875 364.402344 152.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 380.050781 139.351563 C 380.050781 142.953125 374.652344 142.953125 374.652344 139.351563 C 374.652344 135.753906 380.050781 135.753906 380.050781 139.351563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.378906 126.386719 C 397.378906 129.988281 391.980469 129.988281 391.980469 126.386719 C 391.980469 122.789063 397.378906 122.789063 397.378906 126.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 417.5 112.558594 C 417.5 116.160156 412.101563 116.160156 412.101563 112.558594 C 412.101563 108.957031 417.5 108.957031 417.5 112.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 433.710938 100.457031 C 433.710938 104.058594 428.3125 104.058594 428.3125 100.457031 C 428.3125 96.859375 433.710938 96.859375 433.710938 100.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.890625 95.273438 C 444.890625 98.871094 439.492188 98.871094 439.492188 95.273438 C 439.492188 91.671875 444.890625 91.671875 444.890625 95.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 83.171875 C 461.101563 86.773438 455.699219 86.773438 455.699219 83.171875 C 455.699219 79.570313 461.101563 79.570313 461.101563 83.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.132813 430.558594 L 457.839844 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.132813 430.558594 L 67.132813 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.949219 430.558594 L 122.949219 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.765625 430.558594 L 178.765625 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.578125 430.558594 L 234.578125 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.394531 430.558594 L 290.394531 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.210938 430.558594 L 346.210938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.027344 430.558594 L 402.027344 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 457.839844 430.558594 L 457.839844 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.453125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.126953" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.460938" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.134766" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.269531" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.943359" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.277344" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.951172" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.085938" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.759766" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.09375" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.767578" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="222.898438" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.572266" y="456.480469"/> + <use xlink:href="#glyph0-4" x="232.90625" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.580078" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.714844" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.388672" y="456.480469"/> + <use xlink:href="#glyph0-5" x="288.722656" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.396484" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.53125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.205078" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.539063" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.212891" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.347656" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.021484" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.355469" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.029297" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.160156" y="456.480469"/> + <use xlink:href="#glyph0-2" x="452.833984" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.167969" y="456.480469"/> + <use xlink:href="#glyph0-3" x="462.841797" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 379.015625 L 59.039063 86.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 379.015625 L 51.839844 379.015625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 320.488281 L 51.839844 320.488281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 261.964844 L 51.839844 261.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 203.4375 L 51.839844 203.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 144.910156 L 51.839844 144.910156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 86.382813 L 51.839844 86.382813 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="387.355469"/> + <use xlink:href="#glyph1-2" x="41.761719" y="380.681641"/> + <use xlink:href="#glyph1-3" x="41.761719" y="377.347656"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="328.828125"/> + <use xlink:href="#glyph1-2" x="41.761719" y="322.154297"/> + <use xlink:href="#glyph1-4" x="41.761719" y="318.820313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="270.304688"/> + <use xlink:href="#glyph1-2" x="41.761719" y="263.630859"/> + <use xlink:href="#glyph1-5" x="41.761719" y="260.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="211.777344"/> + <use xlink:href="#glyph1-2" x="41.761719" y="205.103516"/> + <use xlink:href="#glyph1-6" x="41.761719" y="201.769531"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="153.25"/> + <use xlink:href="#glyph1-2" x="41.761719" y="146.576172"/> + <use xlink:href="#glyph1-1" x="41.761719" y="143.242188"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="94.722656"/> + <use xlink:href="#glyph1-2" x="41.761719" y="88.048828"/> + <use xlink:href="#glyph1-3" x="41.761719" y="84.714844"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.175781" y="34.675781"/> + <use xlink:href="#glyph2-2" x="198.971875" y="34.675781"/> + <use xlink:href="#glyph2-3" x="206.980469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.775781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.571875" y="34.675781"/> + <use xlink:href="#glyph2-6" x="229.367969" y="34.675781"/> + <use xlink:href="#glyph2-7" x="233.36875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="242.164844" y="34.675781"/> + <use xlink:href="#glyph2-8" x="250.173438" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.96875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="259.764063" y="34.675781"/> + <use xlink:href="#glyph2-10" x="263.764844" y="34.675781"/> + <use xlink:href="#glyph2-11" x="271.773438" y="34.675781"/> + <use xlink:href="#glyph2-6" x="279.782031" y="34.675781"/> + <use xlink:href="#glyph2-12" x="283.782812" y="34.675781"/> + <use xlink:href="#glyph2-6" x="293.3875" y="34.675781"/> + <use xlink:href="#glyph2-13" x="297.388281" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.797656" y="34.675781"/> + <use xlink:href="#glyph2-14" x="309.798437" y="34.675781"/> + <use xlink:href="#glyph2-15" x="317.807031" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.815625" y="34.675781"/> + <use xlink:href="#glyph2-16" x="329.816406" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.398438 404.699219 C 89.398438 408.300781 83.996094 408.300781 83.996094 404.699219 C 83.996094 401.097656 89.398438 401.097656 89.398438 404.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.695313 390.871094 C 101.695313 394.46875 96.292969 394.46875 96.292969 390.871094 C 96.292969 387.269531 101.695313 387.269531 101.695313 390.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.34375 374.449219 C 117.34375 378.046875 111.945313 378.046875 111.945313 374.449219 C 111.945313 370.847656 117.34375 370.847656 117.34375 374.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.082031 361.484375 C 129.082031 365.082031 123.683594 365.082031 123.683594 361.484375 C 123.683594 357.882813 129.082031 357.882813 129.082031 361.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.617188 345.925781 C 143.617188 349.527344 138.214844 349.527344 138.214844 345.925781 C 138.214844 342.324219 143.617188 342.324219 143.617188 345.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 158.148438 333.824219 C 158.148438 337.425781 152.746094 337.425781 152.746094 333.824219 C 152.746094 330.226563 158.148438 330.226563 158.148438 333.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 173.796875 316.539063 C 173.796875 320.140625 168.398438 320.140625 168.398438 316.539063 C 168.398438 312.9375 173.796875 312.9375 173.796875 316.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 188.890625 304.4375 C 188.890625 308.039063 183.492188 308.039063 183.492188 304.4375 C 183.492188 300.839844 188.890625 300.839844 188.890625 304.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.863281 288.878906 C 202.863281 292.480469 197.464844 292.480469 197.464844 288.878906 C 197.464844 285.28125 202.863281 285.28125 202.863281 288.878906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.515625 275.050781 C 218.515625 278.652344 213.113281 278.652344 213.113281 275.050781 C 213.113281 271.453125 218.515625 271.453125 218.515625 275.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.929688 262.949219 C 231.929688 266.550781 226.53125 266.550781 226.53125 262.949219 C 226.53125 259.351563 231.929688 259.351563 231.929688 262.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.992188 252.578125 C 241.992188 256.179688 236.589844 256.179688 236.589844 252.578125 C 236.589844 248.980469 241.992188 248.980469 241.992188 252.578125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.050781 243.9375 C 252.050781 247.535156 246.652344 247.535156 246.652344 243.9375 C 246.652344 240.335938 252.050781 240.335938 252.050781 243.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 263.789063 235.292969 C 263.789063 238.890625 258.390625 238.890625 258.390625 235.292969 C 258.390625 231.691406 263.789063 231.691406 263.789063 235.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.765625 222.328125 C 277.765625 225.925781 272.363281 225.925781 272.363281 222.328125 C 272.363281 218.726563 277.765625 218.726563 277.765625 222.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.089844 206.769531 C 295.089844 210.371094 289.691406 210.371094 289.691406 206.769531 C 289.691406 203.167969 295.089844 203.167969 295.089844 206.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.945313 197.261719 C 307.945313 200.863281 302.546875 200.863281 302.546875 197.261719 C 302.546875 193.664063 307.945313 193.664063 307.945313 197.261719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.242188 186.890625 C 320.242188 190.492188 314.84375 190.492188 314.84375 186.890625 C 314.84375 183.289063 320.242188 183.289063 320.242188 186.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.421875 176.519531 C 331.421875 180.117188 326.023438 180.117188 326.023438 176.519531 C 326.023438 172.917969 331.421875 172.917969 331.421875 176.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.484375 167.875 C 341.484375 171.476563 336.085938 171.476563 336.085938 167.875 C 336.085938 164.273438 341.484375 164.273438 341.484375 167.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.105469 160.960938 C 352.105469 164.5625 346.703125 164.5625 346.703125 160.960938 C 346.703125 157.359375 352.105469 157.359375 352.105469 160.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 364.402344 152.316406 C 364.402344 155.917969 359 155.917969 359 152.316406 C 359 148.71875 364.402344 148.71875 364.402344 152.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 380.050781 139.351563 C 380.050781 142.953125 374.652344 142.953125 374.652344 139.351563 C 374.652344 135.753906 380.050781 135.753906 380.050781 139.351563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.378906 126.386719 C 397.378906 129.988281 391.980469 129.988281 391.980469 126.386719 C 391.980469 122.789063 397.378906 122.789063 397.378906 126.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 417.5 112.558594 C 417.5 116.160156 412.101563 116.160156 412.101563 112.558594 C 412.101563 108.957031 417.5 108.957031 417.5 112.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 433.710938 100.457031 C 433.710938 104.058594 428.3125 104.058594 428.3125 100.457031 C 428.3125 96.859375 433.710938 96.859375 433.710938 100.457031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.890625 95.273438 C 444.890625 98.871094 439.492188 98.871094 439.492188 95.273438 C 439.492188 91.671875 444.890625 91.671875 444.890625 95.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 83.171875 C 461.101563 86.773438 455.699219 86.773438 455.699219 83.171875 C 455.699219 79.570313 461.101563 79.570313 461.101563 83.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 417.148438 L 78.238281 412.988281 L 82.078125 408.84375 L 85.921875 404.710938 L 89.761719 400.601563 L 93.601563 396.503906 L 97.441406 392.425781 L 101.28125 388.363281 L 105.121094 384.316406 L 108.960938 380.285156 L 112.800781 376.273438 L 116.640625 372.277344 L 120.480469 368.296875 L 124.320313 364.335938 L 128.160156 360.386719 L 132 356.457031 L 135.839844 352.542969 L 139.679688 348.648438 L 143.519531 344.765625 L 147.359375 340.902344 L 151.199219 337.054688 L 155.039063 333.226563 L 158.878906 329.414063 L 162.71875 325.613281 L 166.558594 321.835938 L 170.398438 318.070313 L 174.238281 314.324219 L 178.078125 310.59375 L 181.921875 306.878906 L 185.761719 303.179688 L 189.601563 299.5 L 193.441406 295.835938 L 197.28125 292.1875 L 201.121094 288.554688 L 204.960938 284.941406 L 208.800781 281.34375 L 212.640625 277.761719 L 216.480469 274.195313 L 220.320313 270.648438 L 224.160156 267.117188 L 228 263.601563 L 231.839844 260.101563 L 235.679688 256.621094 L 239.519531 253.15625 L 243.359375 249.707031 L 247.199219 246.273438 L 251.039063 242.859375 L 254.878906 239.460938 L 258.71875 236.078125 L 262.558594 232.710938 L 266.398438 229.363281 L 270.238281 226.027344 L 274.078125 222.710938 L 277.921875 219.414063 L 281.761719 216.128906 L 285.601563 212.863281 L 289.441406 209.613281 L 293.28125 206.382813 L 297.121094 203.164063 L 300.960938 199.964844 L 304.800781 196.78125 L 308.640625 193.613281 L 312.480469 190.464844 L 316.320313 187.332031 L 320.160156 184.214844 L 324 181.113281 L 327.839844 178.03125 L 331.679688 174.964844 L 335.519531 171.914063 L 339.359375 168.878906 L 343.199219 165.863281 L 347.039063 162.859375 L 350.878906 159.875 L 354.71875 156.910156 L 358.558594 153.957031 L 362.398438 151.023438 L 366.238281 148.105469 L 370.078125 145.203125 L 373.921875 142.320313 L 377.761719 139.453125 L 381.601563 136.601563 L 385.441406 133.765625 L 389.28125 130.949219 L 393.121094 128.144531 L 396.960938 125.359375 L 400.800781 122.59375 L 404.640625 119.839844 L 408.480469 117.105469 L 412.320313 114.386719 L 416.160156 111.683594 L 420 109 L 423.839844 106.328125 L 427.679688 103.675781 L 431.519531 101.042969 L 435.359375 98.421875 L 439.199219 95.820313 L 443.039063 93.234375 L 446.878906 90.664063 L 450.71875 88.113281 L 454.558594 85.574219 L 458.398438 83.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 80.644531 402.972656 L 88.28125 402.972656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.460938 406.789063 L 84.460938 399.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.617188 380.5 L 102.253906 380.5 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.433594 384.316406 L 98.433594 376.679688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.914063 363.210938 L 114.550781 363.210938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110.730469 367.03125 L 110.730469 359.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.769531 344.195313 L 127.40625 344.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.585938 348.015625 L 123.585938 340.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 133.183594 326.910156 L 140.820313 326.910156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 137.003906 330.730469 L 137.003906 323.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 147.71875 304.4375 L 155.355469 304.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 151.535156 308.257813 L 151.535156 300.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.808594 287.152344 L 170.445313 287.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.628906 290.96875 L 166.628906 283.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.664063 271.59375 L 183.300781 271.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 179.484375 275.414063 L 179.484375 267.777344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 187.960938 256.035156 L 195.597656 256.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.78125 259.855469 L 191.78125 252.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 204.730469 238.75 L 212.367188 238.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.546875 242.566406 L 208.546875 234.929688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 225.96875 216.277344 L 233.605469 216.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 229.789063 220.097656 L 229.789063 212.460938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 241.0625 198.992188 L 248.699219 198.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.878906 202.808594 L 244.878906 195.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 256.710938 185.160156 L 264.347656 185.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 260.53125 188.980469 L 260.53125 181.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 272.363281 171.332031 L 280 171.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.183594 175.152344 L 276.183594 167.515625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.691406 155.773438 L 297.328125 155.773438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 293.507813 159.59375 L 293.507813 151.957031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.136719 143.675781 L 315.773438 143.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 311.953125 147.492188 L 311.953125 139.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 326.582031 129.84375 L 334.21875 129.84375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 330.398438 133.664063 L 330.398438 126.027344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 338.878906 121.203125 L 346.515625 121.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 342.695313 125.019531 L 342.695313 117.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 353.96875 110.832031 L 361.605469 110.832031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.789063 114.648438 L 357.789063 107.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.265625 103.914063 L 373.902344 103.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.085938 107.734375 L 370.085938 100.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.5625 98.730469 L 386.199219 98.730469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 382.382813 102.546875 L 382.382813 94.910156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 390.859375 91.816406 L 398.496094 91.816406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 394.679688 95.632813 L 394.679688 87.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 409.304688 84.902344 L 416.941406 84.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 413.125 88.71875 L 413.125 81.082031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.28125 81.441406 L 430.917969 81.441406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.097656 85.261719 L 427.097656 77.625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 435.019531 76.257813 L 442.65625 76.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 438.835938 80.074219 L 438.835938 72.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.023438 72.800781 L 461.660156 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 457.839844 76.617188 L 457.839844 68.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 417.757813 L 78.234375 411.726563 L 82.070313 405.75 L 85.902344 399.824219 L 89.738281 393.953125 L 93.570313 388.132813 L 97.40625 382.363281 L 101.242188 376.644531 L 105.074219 370.976563 L 108.910156 365.363281 L 112.742188 359.800781 L 116.578125 354.292969 L 120.414063 348.835938 L 124.246094 343.429688 L 128.082031 338.074219 L 131.917969 332.769531 L 135.75 327.519531 L 139.585938 322.320313 L 143.417969 317.175781 L 147.253906 312.078125 L 151.089844 307.035156 L 154.921875 302.046875 L 158.757813 297.105469 L 162.589844 292.21875 L 166.425781 287.382813 L 170.261719 282.601563 L 174.09375 277.867188 L 177.929688 273.1875 L 181.761719 268.5625 L 185.597656 263.984375 L 189.433594 259.460938 L 193.265625 254.988281 L 197.101563 250.566406 L 200.933594 246.199219 L 204.769531 241.882813 L 208.605469 237.617188 L 212.4375 233.40625 L 216.273438 229.246094 L 220.109375 225.136719 L 223.941406 221.078125 L 227.777344 217.074219 L 231.609375 213.121094 L 235.445313 209.21875 L 239.28125 205.367188 L 243.113281 201.570313 L 246.949219 197.824219 L 250.78125 194.132813 L 254.617188 190.488281 L 258.453125 186.898438 L 262.285156 183.359375 L 266.121094 179.875 L 269.953125 176.441406 L 273.789063 173.058594 L 277.625 169.726563 L 281.457031 166.449219 L 285.292969 163.222656 L 289.128906 160.046875 L 292.960938 156.921875 L 296.796875 153.851563 L 300.628906 150.832031 L 304.464844 147.863281 L 308.300781 144.949219 L 312.132813 142.085938 L 315.96875 139.273438 L 319.800781 136.515625 L 323.636719 133.804688 L 327.472656 131.148438 L 331.304688 128.546875 L 335.140625 125.992188 L 338.972656 123.492188 L 342.808594 121.042969 L 346.644531 118.648438 L 350.476563 116.304688 L 354.3125 114.011719 L 358.144531 111.769531 L 361.980469 109.582031 L 365.816406 107.441406 L 369.648438 105.359375 L 373.484375 103.324219 L 377.320313 101.34375 L 381.152344 99.414063 L 384.988281 97.535156 L 388.820313 95.710938 L 392.65625 93.933594 L 396.492188 92.214844 L 400.324219 90.542969 L 404.160156 88.925781 L 407.992188 87.359375 L 411.828125 85.84375 L 415.664063 84.382813 L 419.496094 82.972656 L 423.332031 81.613281 L 427.164063 80.304688 L 431 79.050781 L 434.835938 77.847656 L 438.667969 76.695313 L 442.503906 75.597656 L 446.335938 74.546875 L 450.171875 73.554688 L 454.007813 72.609375 L 457.839844 71.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-5" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-16" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-16" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-4" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-19" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-1" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-16" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-5" x="445.732422" y="346.695313"/> + <use xlink:href="#glyph0-20" x="452.40625" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-19" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-3" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-4" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-20" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-4" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-5" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-18" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-1" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-21" x="439.058594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="445.732422" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_Fatou_slope_20_.svg b/docs/en/calculators/par/baffle_fishway_Fatou_slope_20_.svg new file mode 100644 index 0000000000000000000000000000000000000000..f51e6fb7eea9bbfd24a0718577ab5086028d77b8 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_Fatou_slope_20_.svg @@ -0,0 +1,512 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-22"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 1.0625 0 L 1.0625 -10.308594 L 8.128906 -10.308594 L 8.128906 -8.5625 L 3.144531 -8.5625 L 3.144531 -6.125 L 7.445313 -6.125 L 7.445313 -4.378906 L 3.144531 -4.378906 L 3.144531 0 Z M 1.0625 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 7.285156 -1.835938 L 7.285156 0 L 0.359375 0 C 0.429688 -0.691406 0.65625 -1.347656 1.035156 -1.96875 C 1.40625 -2.589844 2.144531 -3.414063 3.253906 -4.445313 C 4.140625 -5.269531 4.6875 -5.832031 4.894531 -6.132813 C 5.160156 -6.535156 5.296875 -6.9375 5.300781 -7.339844 C 5.296875 -7.777344 5.179688 -8.117188 4.945313 -8.355469 C 4.707031 -8.589844 4.378906 -8.707031 3.964844 -8.710938 C 3.550781 -8.707031 3.222656 -8.582031 2.980469 -8.335938 C 2.734375 -8.085938 2.59375 -7.675781 2.558594 -7.101563 L 0.589844 -7.296875 C 0.703125 -8.382813 1.070313 -9.164063 1.691406 -9.640625 C 2.308594 -10.109375 3.082031 -10.347656 4.015625 -10.351563 C 5.027344 -10.347656 5.828125 -10.074219 6.410156 -9.527344 C 6.992188 -8.976563 7.28125 -8.292969 7.285156 -7.480469 C 7.28125 -7.015625 7.199219 -6.574219 7.035156 -6.15625 C 6.867188 -5.734375 6.601563 -5.292969 6.242188 -4.835938 C 6 -4.527344 5.570313 -4.089844 4.949219 -3.519531 C 4.324219 -2.945313 3.929688 -2.566406 3.765625 -2.382813 C 3.597656 -2.191406 3.460938 -2.007813 3.359375 -1.835938 Z M 7.285156 -1.835938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface26"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.660156 397.363281 C 77.660156 400.964844 72.257813 400.964844 72.257813 397.363281 C 72.257813 393.765625 77.660156 393.765625 77.660156 397.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.339844 377.929688 C 98.339844 381.53125 92.941406 381.53125 92.941406 377.929688 C 92.941406 374.328125 98.339844 374.328125 98.339844 377.929688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.433594 360.4375 C 113.433594 364.039063 108.03125 364.039063 108.03125 360.4375 C 108.03125 356.839844 113.433594 356.839844 113.433594 360.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.933594 350.722656 C 122.933594 354.320313 117.535156 354.320313 117.535156 350.722656 C 117.535156 347.121094 122.933594 347.121094 122.933594 350.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.671875 339.058594 C 134.671875 342.660156 129.273438 342.660156 129.273438 339.058594 C 129.273438 335.460938 134.671875 335.460938 134.671875 339.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.203125 323.511719 C 149.203125 327.113281 143.804688 327.113281 143.804688 323.511719 C 143.804688 319.910156 149.203125 319.910156 149.203125 323.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.359375 302.132813 C 174.359375 305.734375 168.957031 305.734375 168.957031 302.132813 C 168.957031 298.535156 174.359375 298.535156 174.359375 302.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.363281 282.699219 C 193.363281 286.296875 187.960938 286.296875 187.960938 282.699219 C 187.960938 279.097656 193.363281 279.097656 193.363281 282.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.453125 269.09375 C 208.453125 272.695313 203.054688 272.695313 203.054688 269.09375 C 203.054688 265.492188 208.453125 265.492188 208.453125 269.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.722656 247.714844 C 234.722656 251.316406 229.324219 251.316406 229.324219 247.714844 C 229.324219 244.117188 234.722656 244.117188 234.722656 247.714844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 250.375 230.222656 C 250.375 233.824219 244.976563 233.824219 244.976563 230.222656 C 244.976563 226.625 250.375 226.625 250.375 230.222656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 269.378906 216.621094 C 269.378906 220.21875 263.980469 220.21875 263.980469 216.621094 C 263.980469 213.019531 269.378906 213.019531 269.378906 216.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279.441406 206.902344 C 279.441406 210.5 274.039063 210.5 274.039063 206.902344 C 274.039063 203.300781 279.441406 203.300781 279.441406 206.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 296.210938 195.242188 C 296.210938 198.839844 290.808594 198.839844 290.808594 195.242188 C 290.808594 191.640625 296.210938 191.640625 296.210938 195.242188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.890625 177.75 C 316.890625 181.347656 311.492188 181.347656 311.492188 177.75 C 311.492188 174.148438 316.890625 174.148438 316.890625 177.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.777344 164.144531 C 334.777344 167.746094 329.375 167.746094 329.375 164.144531 C 329.375 160.542969 334.777344 160.542969 334.777344 164.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.664063 152.484375 C 352.664063 156.082031 347.261719 156.082031 347.261719 152.484375 C 347.261719 148.882813 352.664063 148.882813 352.664063 152.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.078125 142.765625 C 366.078125 146.367188 360.679688 146.367188 360.679688 142.765625 C 360.679688 139.167969 366.078125 139.167969 366.078125 142.765625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.933594 133.046875 C 378.933594 136.648438 373.535156 136.648438 373.535156 133.046875 C 373.535156 129.449219 378.933594 129.449219 378.933594 133.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 391.230469 125.273438 C 391.230469 128.875 385.832031 128.875 385.832031 125.273438 C 385.832031 121.675781 391.230469 121.675781 391.230469 125.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.765625 114.585938 C 405.765625 118.183594 400.363281 118.183594 400.363281 114.585938 C 400.363281 110.984375 405.765625 110.984375 405.765625 114.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 425.328125 101.953125 C 425.328125 105.550781 419.925781 105.550781 419.925781 101.953125 C 419.925781 98.351563 425.328125 98.351563 425.328125 101.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.332031 88.347656 C 444.332031 91.949219 438.929688 91.949219 438.929688 88.347656 C 438.929688 84.746094 444.332031 84.746094 444.332031 88.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 78.628906 C 461.101563 82.230469 455.699219 82.230469 455.699219 78.628906 C 455.699219 75.03125 461.101563 75.03125 461.101563 78.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.855469 430.558594 L 458.398438 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.855469 430.558594 L 66.855469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.789063 430.558594 L 122.789063 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.722656 430.558594 L 178.722656 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.660156 430.558594 L 234.660156 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.59375 430.558594 L 290.59375 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.53125 430.558594 L 346.53125 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.464844 430.558594 L 402.464844 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 430.558594 L 458.398438 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.175781" y="456.480469"/> + <use xlink:href="#glyph0-2" x="61.849609" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.183594" y="456.480469"/> + <use xlink:href="#glyph0-1" x="71.857422" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.109375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.783203" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.117188" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.791016" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.042969" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.716797" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.050781" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.724609" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="222.980469" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.654297" y="456.480469"/> + <use xlink:href="#glyph0-4" x="232.988281" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.662109" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.914063" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.587891" y="456.480469"/> + <use xlink:href="#glyph0-5" x="288.921875" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.595703" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.851563" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.525391" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.859375" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.533203" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.785156" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.458984" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.792969" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.466797" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.71875" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.392578" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.726563" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.400391" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 423.601563 L 59.039063 78.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 423.601563 L 51.839844 423.601563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 366.027344 L 51.839844 366.027344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 308.449219 L 51.839844 308.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 250.875 L 51.839844 250.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 193.296875 L 51.839844 193.296875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 135.722656 L 51.839844 135.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 78.144531 L 51.839844 78.144531 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="431.941406"/> + <use xlink:href="#glyph1-2" x="41.761719" y="425.267578"/> + <use xlink:href="#glyph1-1" x="41.761719" y="421.933594"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="374.367188"/> + <use xlink:href="#glyph1-2" x="41.761719" y="367.693359"/> + <use xlink:href="#glyph1-3" x="41.761719" y="364.359375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="316.789063"/> + <use xlink:href="#glyph1-2" x="41.761719" y="310.115234"/> + <use xlink:href="#glyph1-4" x="41.761719" y="306.78125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="259.214844"/> + <use xlink:href="#glyph1-2" x="41.761719" y="252.541016"/> + <use xlink:href="#glyph1-5" x="41.761719" y="249.207031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="201.636719"/> + <use xlink:href="#glyph1-2" x="41.761719" y="194.962891"/> + <use xlink:href="#glyph1-6" x="41.761719" y="191.628906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="144.0625"/> + <use xlink:href="#glyph1-2" x="41.761719" y="137.388672"/> + <use xlink:href="#glyph1-1" x="41.761719" y="134.054688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="86.484375"/> + <use xlink:href="#glyph1-2" x="41.761719" y="79.810547"/> + <use xlink:href="#glyph1-3" x="41.761719" y="76.476563"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.175781" y="34.675781"/> + <use xlink:href="#glyph2-2" x="198.971875" y="34.675781"/> + <use xlink:href="#glyph2-3" x="206.980469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.775781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.571875" y="34.675781"/> + <use xlink:href="#glyph2-6" x="229.367969" y="34.675781"/> + <use xlink:href="#glyph2-7" x="233.36875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="242.164844" y="34.675781"/> + <use xlink:href="#glyph2-8" x="250.173438" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.96875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="259.764063" y="34.675781"/> + <use xlink:href="#glyph2-10" x="263.764844" y="34.675781"/> + <use xlink:href="#glyph2-11" x="271.773438" y="34.675781"/> + <use xlink:href="#glyph2-6" x="279.782031" y="34.675781"/> + <use xlink:href="#glyph2-12" x="283.782812" y="34.675781"/> + <use xlink:href="#glyph2-6" x="293.3875" y="34.675781"/> + <use xlink:href="#glyph2-13" x="297.388281" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.797656" y="34.675781"/> + <use xlink:href="#glyph2-14" x="309.798437" y="34.675781"/> + <use xlink:href="#glyph2-15" x="317.807031" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.815625" y="34.675781"/> + <use xlink:href="#glyph2-16" x="329.816406" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.660156 397.363281 C 77.660156 400.964844 72.257813 400.964844 72.257813 397.363281 C 72.257813 393.765625 77.660156 393.765625 77.660156 397.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.339844 377.929688 C 98.339844 381.53125 92.941406 381.53125 92.941406 377.929688 C 92.941406 374.328125 98.339844 374.328125 98.339844 377.929688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.433594 360.4375 C 113.433594 364.039063 108.03125 364.039063 108.03125 360.4375 C 108.03125 356.839844 113.433594 356.839844 113.433594 360.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.933594 350.722656 C 122.933594 354.320313 117.535156 354.320313 117.535156 350.722656 C 117.535156 347.121094 122.933594 347.121094 122.933594 350.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.671875 339.058594 C 134.671875 342.660156 129.273438 342.660156 129.273438 339.058594 C 129.273438 335.460938 134.671875 335.460938 134.671875 339.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.203125 323.511719 C 149.203125 327.113281 143.804688 327.113281 143.804688 323.511719 C 143.804688 319.910156 149.203125 319.910156 149.203125 323.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.359375 302.132813 C 174.359375 305.734375 168.957031 305.734375 168.957031 302.132813 C 168.957031 298.535156 174.359375 298.535156 174.359375 302.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.363281 282.699219 C 193.363281 286.296875 187.960938 286.296875 187.960938 282.699219 C 187.960938 279.097656 193.363281 279.097656 193.363281 282.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.453125 269.09375 C 208.453125 272.695313 203.054688 272.695313 203.054688 269.09375 C 203.054688 265.492188 208.453125 265.492188 208.453125 269.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.722656 247.714844 C 234.722656 251.316406 229.324219 251.316406 229.324219 247.714844 C 229.324219 244.117188 234.722656 244.117188 234.722656 247.714844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 250.375 230.222656 C 250.375 233.824219 244.976563 233.824219 244.976563 230.222656 C 244.976563 226.625 250.375 226.625 250.375 230.222656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 269.378906 216.621094 C 269.378906 220.21875 263.980469 220.21875 263.980469 216.621094 C 263.980469 213.019531 269.378906 213.019531 269.378906 216.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 279.441406 206.902344 C 279.441406 210.5 274.039063 210.5 274.039063 206.902344 C 274.039063 203.300781 279.441406 203.300781 279.441406 206.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 296.210938 195.242188 C 296.210938 198.839844 290.808594 198.839844 290.808594 195.242188 C 290.808594 191.640625 296.210938 191.640625 296.210938 195.242188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 316.890625 177.75 C 316.890625 181.347656 311.492188 181.347656 311.492188 177.75 C 311.492188 174.148438 316.890625 174.148438 316.890625 177.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 334.777344 164.144531 C 334.777344 167.746094 329.375 167.746094 329.375 164.144531 C 329.375 160.542969 334.777344 160.542969 334.777344 164.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.664063 152.484375 C 352.664063 156.082031 347.261719 156.082031 347.261719 152.484375 C 347.261719 148.882813 352.664063 148.882813 352.664063 152.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 366.078125 142.765625 C 366.078125 146.367188 360.679688 146.367188 360.679688 142.765625 C 360.679688 139.167969 366.078125 139.167969 366.078125 142.765625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.933594 133.046875 C 378.933594 136.648438 373.535156 136.648438 373.535156 133.046875 C 373.535156 129.449219 378.933594 129.449219 378.933594 133.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 391.230469 125.273438 C 391.230469 128.875 385.832031 128.875 385.832031 125.273438 C 385.832031 121.675781 391.230469 121.675781 391.230469 125.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.765625 114.585938 C 405.765625 118.183594 400.363281 118.183594 400.363281 114.585938 C 400.363281 110.984375 405.765625 110.984375 405.765625 114.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 425.328125 101.953125 C 425.328125 105.550781 419.925781 105.550781 419.925781 101.953125 C 419.925781 98.351563 425.328125 98.351563 425.328125 101.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.332031 88.347656 C 444.332031 91.949219 438.929688 91.949219 438.929688 88.347656 C 438.929688 84.746094 444.332031 84.746094 444.332031 88.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 78.628906 C 461.101563 82.230469 455.699219 82.230469 455.699219 78.628906 C 455.699219 75.03125 461.101563 75.03125 461.101563 78.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.957031 397.792969 L 78.792969 393.734375 L 82.628906 389.695313 L 86.460938 385.671875 L 90.296875 381.664063 L 94.132813 377.675781 L 97.964844 373.707031 L 101.800781 369.753906 L 105.632813 365.820313 L 109.46875 361.902344 L 113.304688 358 L 117.136719 354.117188 L 120.972656 350.253906 L 124.804688 346.40625 L 128.640625 342.578125 L 132.476563 338.765625 L 136.308594 334.972656 L 140.144531 331.195313 L 143.976563 327.4375 L 147.8125 323.695313 L 151.648438 319.972656 L 155.480469 316.265625 L 159.316406 312.578125 L 163.152344 308.910156 L 166.984375 305.257813 L 170.820313 301.621094 L 174.652344 298.003906 L 178.488281 294.402344 L 182.324219 290.820313 L 186.15625 287.257813 L 189.992188 283.710938 L 193.824219 280.179688 L 197.660156 276.667969 L 201.496094 273.175781 L 205.328125 269.699219 L 209.164063 266.242188 L 212.996094 262.800781 L 216.832031 259.375 L 220.667969 255.96875 L 224.5 252.582031 L 228.335938 249.210938 L 232.167969 245.859375 L 236.003906 242.523438 L 239.839844 239.207031 L 243.671875 235.90625 L 247.507813 232.625 L 251.34375 229.359375 L 255.175781 226.113281 L 259.011719 222.882813 L 262.84375 219.671875 L 266.679688 216.480469 L 270.515625 213.304688 L 274.347656 210.144531 L 278.183594 207.003906 L 282.015625 203.878906 L 285.851563 200.773438 L 289.6875 197.6875 L 293.519531 194.617188 L 297.355469 191.5625 L 301.1875 188.527344 L 305.023438 185.511719 L 308.859375 182.511719 L 312.691406 179.53125 L 316.527344 176.566406 L 320.359375 173.617188 L 324.195313 170.6875 L 328.03125 167.777344 L 331.863281 164.882813 L 335.699219 162.007813 L 339.535156 159.148438 L 343.367188 156.308594 L 347.203125 153.484375 L 351.035156 150.679688 L 354.871094 147.890625 L 358.707031 145.121094 L 362.539063 142.367188 L 366.375 139.632813 L 370.207031 136.917969 L 374.042969 134.214844 L 377.878906 131.535156 L 381.710938 128.871094 L 385.546875 126.222656 L 389.378906 123.59375 L 393.214844 120.984375 L 397.050781 118.390625 L 400.882813 115.8125 L 404.71875 113.253906 L 408.550781 110.714844 L 412.386719 108.191406 L 416.222656 105.683594 L 420.054688 103.195313 L 423.890625 100.726563 L 427.726563 98.273438 L 431.558594 95.839844 L 435.394531 93.421875 L 439.226563 91.023438 L 443.0625 88.640625 L 446.898438 86.277344 L 450.730469 83.929688 L 454.566406 81.601563 L 458.398438 79.289063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.203125 401.253906 L 88.839844 401.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.019531 405.070313 L 85.019531 397.433594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.058594 381.816406 L 101.695313 381.816406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.875 385.636719 L 97.875 378 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110.824219 360.4375 L 118.464844 360.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.644531 364.257813 L 114.644531 356.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.804688 319.625 L 151.441406 319.625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 147.621094 323.441406 L 147.621094 315.804688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 158.894531 302.132813 L 166.53125 302.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.714844 305.953125 L 162.714844 298.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.546875 282.699219 L 182.183594 282.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.363281 286.515625 L 178.363281 278.878906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.078125 265.207031 L 196.714844 265.207031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 192.898438 269.023438 L 192.898438 261.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 204.171875 251.601563 L 211.808594 251.601563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 207.988281 255.421875 L 207.988281 247.785156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.144531 234.109375 L 225.78125 234.109375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 221.964844 237.929688 L 221.964844 230.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 230.441406 222.449219 L 238.078125 222.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.261719 226.269531 L 234.261719 218.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.976563 208.84375 L 252.613281 208.84375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.792969 212.664063 L 248.792969 205.027344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 257.273438 197.183594 L 264.910156 197.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261.089844 201.003906 L 261.089844 193.367188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.214844 189.410156 L 273.851563 189.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.03125 193.230469 L 270.03125 185.589844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.953125 179.691406 L 285.589844 179.691406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.769531 183.511719 L 281.769531 175.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 293.042969 168.03125 L 300.679688 168.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 296.863281 171.851563 L 296.863281 164.214844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.136719 156.371094 L 315.773438 156.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 311.953125 160.1875 L 311.953125 152.550781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 327.140625 140.824219 L 334.777344 140.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 330.957031 144.640625 L 330.957031 137.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.671875 131.105469 L 349.308594 131.105469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 345.492188 134.921875 L 345.492188 127.285156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 353.96875 123.332031 L 361.605469 123.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.789063 127.148438 L 357.789063 119.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 368.503906 113.613281 L 376.140625 113.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 372.320313 117.433594 L 372.320313 109.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 381.917969 105.839844 L 389.554688 105.839844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 385.734375 109.65625 L 385.734375 102.019531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.007813 98.066406 L 404.644531 98.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 400.828125 101.882813 L 400.828125 94.246094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.660156 88.347656 L 420.296875 88.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 416.480469 92.167969 L 416.480469 84.53125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.28125 86.40625 L 430.917969 86.40625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.097656 90.222656 L 427.097656 82.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 435.019531 80.574219 L 442.65625 80.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 438.835938 84.390625 L 438.835938 76.753906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 449.550781 74.742188 L 457.1875 74.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.371094 78.5625 L 453.371094 70.925781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 72.800781 L 462.21875 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 76.617188 L 458.398438 68.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 416.125 L 78.238281 410.652344 L 82.078125 405.222656 L 85.921875 399.835938 L 89.761719 394.488281 L 93.601563 389.183594 L 97.441406 383.917969 L 101.28125 378.691406 L 105.121094 373.511719 L 108.960938 368.367188 L 112.800781 363.269531 L 116.640625 358.207031 L 120.480469 353.191406 L 124.320313 348.214844 L 128.160156 343.277344 L 132 338.382813 L 135.839844 333.53125 L 139.679688 328.71875 L 143.519531 323.945313 L 147.359375 319.214844 L 151.199219 314.527344 L 155.039063 309.878906 L 158.878906 305.273438 L 162.71875 300.707031 L 166.558594 296.183594 L 170.398438 291.699219 L 174.238281 287.257813 L 178.078125 282.855469 L 181.921875 278.496094 L 185.761719 274.179688 L 189.601563 269.902344 L 193.441406 265.664063 L 197.28125 261.46875 L 201.121094 257.316406 L 204.960938 253.203125 L 208.800781 249.132813 L 212.640625 245.101563 L 216.480469 241.113281 L 220.320313 237.164063 L 224.160156 233.257813 L 228 229.390625 L 231.839844 225.566406 L 235.679688 221.78125 L 239.519531 218.039063 L 243.359375 214.339844 L 247.199219 210.679688 L 251.039063 207.0625 L 254.878906 203.484375 L 258.71875 199.945313 L 262.558594 196.449219 L 266.398438 192.996094 L 270.238281 189.582031 L 274.078125 186.210938 L 277.921875 182.882813 L 281.761719 179.589844 L 285.601563 176.34375 L 289.441406 173.136719 L 293.28125 169.96875 L 297.121094 166.84375 L 300.960938 163.761719 L 304.800781 160.71875 L 308.640625 157.714844 L 312.480469 154.757813 L 316.320313 151.835938 L 320.160156 148.957031 L 324 146.121094 L 327.839844 143.328125 L 331.679688 140.570313 L 335.519531 137.859375 L 339.359375 135.1875 L 343.199219 132.554688 L 347.039063 129.964844 L 350.878906 127.417969 L 354.71875 124.910156 L 358.558594 122.441406 L 362.398438 120.015625 L 366.238281 117.632813 L 370.078125 115.289063 L 373.921875 112.988281 L 377.761719 110.726563 L 381.601563 108.507813 L 385.441406 106.328125 L 389.28125 104.191406 L 393.121094 102.09375 L 396.960938 100.039063 L 400.800781 98.027344 L 404.640625 96.054688 L 408.480469 94.121094 L 412.320313 92.234375 L 416.160156 90.382813 L 420 88.574219 L 423.839844 86.808594 L 427.679688 85.082031 L 431.519531 83.398438 L 435.359375 81.753906 L 439.199219 80.152344 L 443.039063 78.59375 L 446.878906 77.070313 L 450.71875 75.59375 L 454.558594 74.15625 L 458.398438 72.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-5" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-16" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-4" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-19" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-4" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-16" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-1" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-3" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-20" x="445.732422" y="346.695313"/> + <use xlink:href="#glyph0-16" x="452.40625" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-16" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-1" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-21" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-3" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-16" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-19" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-15" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="409.357422" y="375.496094"/> + <use xlink:href="#glyph0-1" x="412.691406" y="375.496094"/> + <use xlink:href="#glyph0-2" x="419.365234" y="375.496094"/> + <use xlink:href="#glyph0-1" x="422.699219" y="375.496094"/> + <use xlink:href="#glyph0-4" x="429.373047" y="375.496094"/> + <use xlink:href="#glyph0-4" x="436.046875" y="375.496094"/> + <use xlink:href="#glyph0-22" x="442.720703" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_mixte_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_mixte_slope_10_.svg new file mode 100644 index 0000000000000000000000000000000000000000..75af2bf58159f9a310a4d114d11babfaff78e119 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_mixte_slope_10_.svg @@ -0,0 +1,459 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -7.464844 -0.570313 L -8.476563 -0.570313 L -8.476563 -6.128906 L -7.65625 -6.128906 C -7.074219 -5.582031 -6.300781 -5.039063 -5.335938 -4.503906 C -4.371094 -3.964844 -3.378906 -3.550781 -2.359375 -3.257813 C -1.636719 -3.046875 -0.851563 -2.910156 0 -2.851563 L 0 -1.769531 C -0.675781 -1.78125 -1.492188 -1.914063 -2.449219 -2.167969 C -3.402344 -2.421875 -4.324219 -2.785156 -5.214844 -3.261719 C -6.105469 -3.734375 -6.855469 -4.238281 -7.464844 -4.777344 Z M -7.464844 -0.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 7.644531 -3.789063 L 9.660156 -3.148438 C 9.347656 -2.019531 8.832031 -1.183594 8.117188 -0.640625 C 7.394531 -0.09375 6.484375 0.175781 5.378906 0.175781 C 4.007813 0.175781 2.882813 -0.289063 2.003906 -1.226563 C 1.121094 -2.15625 0.679688 -3.4375 0.683594 -5.0625 C 0.679688 -6.777344 1.121094 -8.109375 2.011719 -9.058594 C 2.894531 -10.007813 4.058594 -10.480469 5.503906 -10.484375 C 6.761719 -10.480469 7.789063 -10.109375 8.578125 -9.367188 C 9.046875 -8.921875 9.398438 -8.289063 9.632813 -7.46875 L 7.574219 -6.976563 C 7.449219 -7.507813 7.195313 -7.929688 6.808594 -8.238281 C 6.421875 -8.546875 5.949219 -8.699219 5.398438 -8.703125 C 4.632813 -8.699219 4.015625 -8.425781 3.539063 -7.878906 C 3.0625 -7.328125 2.824219 -6.441406 2.828125 -5.21875 C 2.824219 -3.910156 3.058594 -2.980469 3.53125 -2.429688 C 3.996094 -1.875 4.605469 -1.597656 5.359375 -1.601563 C 5.910156 -1.597656 6.386719 -1.773438 6.785156 -2.128906 C 7.183594 -2.476563 7.46875 -3.03125 7.644531 -3.789063 Z M 7.644531 -3.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 3.003906 -10.308594 L 3.003906 -6.519531 C 3.636719 -7.261719 4.398438 -7.632813 5.289063 -7.636719 C 5.738281 -7.632813 6.148438 -7.550781 6.515625 -7.382813 C 6.882813 -7.210938 7.15625 -6.992188 7.34375 -6.734375 C 7.523438 -6.46875 7.652344 -6.179688 7.722656 -5.863281 C 7.789063 -5.542969 7.820313 -5.046875 7.824219 -4.378906 L 7.824219 0 L 5.851563 0 L 5.851563 -3.945313 C 5.847656 -4.722656 5.808594 -5.21875 5.738281 -5.433594 C 5.660156 -5.640625 5.527344 -5.808594 5.339844 -5.9375 C 5.144531 -6.058594 4.90625 -6.121094 4.625 -6.125 C 4.292969 -6.121094 4 -6.042969 3.746094 -5.882813 C 3.484375 -5.722656 3.296875 -5.480469 3.179688 -5.164063 C 3.058594 -4.839844 3 -4.367188 3.003906 -3.742188 L 3.003906 0 L 1.027344 0 L 1.027344 -10.308594 Z M 3.003906 -10.308594 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface41"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 383.480469 C 77.101563 387.082031 71.699219 387.082031 71.699219 383.480469 C 71.699219 379.878906 77.101563 379.878906 77.101563 383.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.566406 367.761719 C 93.566406 371.359375 88.167969 371.359375 88.167969 367.761719 C 88.167969 364.160156 93.566406 364.160156 93.566406 367.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.082031 355.535156 C 106.082031 359.132813 100.679688 359.132813 100.679688 355.535156 C 100.679688 351.933594 106.082031 351.933594 106.082031 355.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 127.816406 335.449219 C 127.816406 339.050781 122.417969 339.050781 122.417969 335.449219 C 122.417969 331.851563 127.816406 331.851563 127.816406 335.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.625 320.605469 C 143.625 324.203125 138.226563 324.203125 138.226563 320.605469 C 138.226563 317.003906 143.625 317.003906 143.625 320.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.089844 304.886719 C 160.089844 308.484375 154.691406 308.484375 154.691406 304.886719 C 154.691406 301.285156 160.089844 301.285156 160.089844 304.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.582031 292.664063 C 174.582031 296.265625 169.183594 296.265625 169.183594 292.664063 C 169.183594 289.066406 174.582031 289.066406 174.582031 292.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.121094 282.183594 C 185.121094 285.785156 179.71875 285.785156 179.71875 282.183594 C 179.71875 278.582031 185.121094 278.582031 185.121094 282.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 198.292969 269.957031 C 198.292969 273.558594 192.894531 273.558594 192.894531 269.957031 C 192.894531 266.359375 198.292969 266.359375 198.292969 269.957031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.148438 261.234375 C 210.148438 264.835938 204.75 264.835938 204.75 261.234375 C 204.75 257.636719 210.148438 257.636719 210.148438 261.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.003906 249.003906 C 222.003906 252.605469 216.605469 252.605469 216.605469 249.003906 C 216.605469 245.40625 222.003906 245.40625 222.003906 249.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.496094 238.539063 C 236.496094 242.140625 231.097656 242.140625 231.097656 238.539063 C 231.097656 234.9375 236.496094 234.9375 236.496094 238.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.304688 224.570313 C 252.304688 228.171875 246.902344 228.171875 246.902344 224.570313 C 246.902344 220.96875 252.304688 220.96875 252.304688 224.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 268.769531 212.359375 C 268.769531 215.957031 263.371094 215.957031 263.371094 212.359375 C 263.371094 208.757813 268.769531 208.757813 268.769531 212.359375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 283.917969 200.140625 C 283.917969 203.738281 278.519531 203.738281 278.519531 200.140625 C 278.519531 196.539063 283.917969 196.539063 283.917969 200.140625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 303.019531 184.429688 C 303.019531 188.03125 297.621094 188.03125 297.621094 184.429688 C 297.621094 180.832031 303.019531 180.832031 303.019531 184.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 317.511719 173.964844 C 317.511719 177.5625 312.113281 177.5625 312.113281 173.964844 C 312.113281 170.363281 317.511719 170.363281 317.511719 173.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 342.539063 154.769531 C 342.539063 158.371094 337.140625 158.371094 337.140625 154.769531 C 337.140625 151.167969 342.539063 151.167969 342.539063 154.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.691406 143.429688 C 357.691406 147.027344 352.289063 147.027344 352.289063 143.429688 C 352.289063 139.828125 357.691406 139.828125 357.691406 143.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 375.472656 130.34375 C 375.472656 133.945313 370.074219 133.945313 370.074219 130.34375 C 370.074219 126.742188 375.472656 126.742188 375.472656 130.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.257813 118.136719 C 393.257813 121.734375 387.859375 121.734375 387.859375 118.136719 C 387.859375 114.535156 393.257813 114.535156 393.257813 118.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.992188 104.191406 C 414.992188 107.789063 409.59375 107.789063 409.59375 104.191406 C 409.59375 100.589844 414.992188 100.589844 414.992188 104.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.753906 90.234375 C 434.753906 93.835938 429.355469 93.835938 429.355469 90.234375 C 429.355469 86.636719 434.753906 86.636719 434.753906 90.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 447.269531 83.269531 C 447.269531 86.867188 441.867188 86.867188 441.867188 83.269531 C 441.867188 79.667969 447.269531 79.667969 447.269531 83.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.460938 430.558594 L 453.351563 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.460938 430.558594 L 142.460938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 246.089844 430.558594 L 246.089844 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 349.722656 430.558594 L 349.722656 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.351563 430.558594 L 453.351563 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="139.125" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="242.753906" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="346.386719" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="450.015625" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 378.035156 L 59.039063 62.402344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 378.035156 L 51.839844 378.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 325.429688 L 51.839844 325.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 272.824219 L 51.839844 272.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 220.21875 L 51.839844 220.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 167.613281 L 51.839844 167.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 115.007813 L 51.839844 115.007813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 62.402344 L 51.839844 62.402344 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="381.371094"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="328.765625"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="276.160156"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="223.554688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="170.949219"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="118.34375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="65.738281"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="176.5625" y="34.675781"/> + <use xlink:href="#glyph2-2" x="186.961719" y="34.675781"/> + <use xlink:href="#glyph2-3" x="195.757813" y="34.675781"/> + <use xlink:href="#glyph2-4" x="203.766406" y="34.675781"/> + <use xlink:href="#glyph2-5" x="211.775" y="34.675781"/> + <use xlink:href="#glyph2-6" x="217.378906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="226.175" y="34.675781"/> + <use xlink:href="#glyph2-8" x="234.971094" y="34.675781"/> + <use xlink:href="#glyph2-9" x="242.979687" y="34.675781"/> + <use xlink:href="#glyph2-10" x="246.980469" y="34.675781"/> + <use xlink:href="#glyph2-11" x="255.776562" y="34.675781"/> + <use xlink:href="#glyph2-12" x="263.785156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="268.580469" y="34.675781"/> + <use xlink:href="#glyph2-13" x="273.375781" y="34.675781"/> + <use xlink:href="#glyph2-3" x="277.376563" y="34.675781"/> + <use xlink:href="#glyph2-8" x="285.385156" y="34.675781"/> + <use xlink:href="#glyph2-9" x="293.39375" y="34.675781"/> + <use xlink:href="#glyph2-14" x="297.394531" y="34.675781"/> + <use xlink:href="#glyph2-9" x="306.999219" y="34.675781"/> + <use xlink:href="#glyph2-15" x="311" y="34.675781"/> + <use xlink:href="#glyph2-9" x="319.409375" y="34.675781"/> + <use xlink:href="#glyph2-16" x="323.410156" y="34.675781"/> + <use xlink:href="#glyph2-17" x="331.41875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="339.427344" y="34.675781"/> + <use xlink:href="#glyph2-18" x="343.428125" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-6" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-9" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-11" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-12" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-13" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-11" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-9" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 383.480469 C 77.101563 387.082031 71.699219 387.082031 71.699219 383.480469 C 71.699219 379.878906 77.101563 379.878906 77.101563 383.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.566406 367.761719 C 93.566406 371.359375 88.167969 371.359375 88.167969 367.761719 C 88.167969 364.160156 93.566406 364.160156 93.566406 367.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.082031 355.535156 C 106.082031 359.132813 100.679688 359.132813 100.679688 355.535156 C 100.679688 351.933594 106.082031 351.933594 106.082031 355.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 127.816406 335.449219 C 127.816406 339.050781 122.417969 339.050781 122.417969 335.449219 C 122.417969 331.851563 127.816406 331.851563 127.816406 335.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.625 320.605469 C 143.625 324.203125 138.226563 324.203125 138.226563 320.605469 C 138.226563 317.003906 143.625 317.003906 143.625 320.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.089844 304.886719 C 160.089844 308.484375 154.691406 308.484375 154.691406 304.886719 C 154.691406 301.285156 160.089844 301.285156 160.089844 304.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.582031 292.664063 C 174.582031 296.265625 169.183594 296.265625 169.183594 292.664063 C 169.183594 289.066406 174.582031 289.066406 174.582031 292.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 185.121094 282.183594 C 185.121094 285.785156 179.71875 285.785156 179.71875 282.183594 C 179.71875 278.582031 185.121094 278.582031 185.121094 282.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 198.292969 269.957031 C 198.292969 273.558594 192.894531 273.558594 192.894531 269.957031 C 192.894531 266.359375 198.292969 266.359375 198.292969 269.957031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.148438 261.234375 C 210.148438 264.835938 204.75 264.835938 204.75 261.234375 C 204.75 257.636719 210.148438 257.636719 210.148438 261.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 222.003906 249.003906 C 222.003906 252.605469 216.605469 252.605469 216.605469 249.003906 C 216.605469 245.40625 222.003906 245.40625 222.003906 249.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.496094 238.539063 C 236.496094 242.140625 231.097656 242.140625 231.097656 238.539063 C 231.097656 234.9375 236.496094 234.9375 236.496094 238.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.304688 224.570313 C 252.304688 228.171875 246.902344 228.171875 246.902344 224.570313 C 246.902344 220.96875 252.304688 220.96875 252.304688 224.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 268.769531 212.359375 C 268.769531 215.957031 263.371094 215.957031 263.371094 212.359375 C 263.371094 208.757813 268.769531 208.757813 268.769531 212.359375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 283.917969 200.140625 C 283.917969 203.738281 278.519531 203.738281 278.519531 200.140625 C 278.519531 196.539063 283.917969 196.539063 283.917969 200.140625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 303.019531 184.429688 C 303.019531 188.03125 297.621094 188.03125 297.621094 184.429688 C 297.621094 180.832031 303.019531 180.832031 303.019531 184.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 317.511719 173.964844 C 317.511719 177.5625 312.113281 177.5625 312.113281 173.964844 C 312.113281 170.363281 317.511719 170.363281 317.511719 173.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 342.539063 154.769531 C 342.539063 158.371094 337.140625 158.371094 337.140625 154.769531 C 337.140625 151.167969 342.539063 151.167969 342.539063 154.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.691406 143.429688 C 357.691406 147.027344 352.289063 147.027344 352.289063 143.429688 C 352.289063 139.828125 357.691406 139.828125 357.691406 143.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 375.472656 130.34375 C 375.472656 133.945313 370.074219 133.945313 370.074219 130.34375 C 370.074219 126.742188 375.472656 126.742188 375.472656 130.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.257813 118.136719 C 393.257813 121.734375 387.859375 121.734375 387.859375 118.136719 C 387.859375 114.535156 393.257813 114.535156 393.257813 118.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.992188 104.191406 C 414.992188 107.789063 409.59375 107.789063 409.59375 104.191406 C 409.59375 100.589844 414.992188 100.589844 414.992188 104.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.753906 90.234375 C 434.753906 93.835938 429.355469 93.835938 429.355469 90.234375 C 429.355469 86.636719 434.753906 86.636719 434.753906 90.234375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 447.269531 83.269531 C 447.269531 86.867188 441.867188 86.867188 441.867188 83.269531 C 441.867188 79.667969 447.269531 79.667969 447.269531 83.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 383.789063 L 78.238281 380.003906 L 82.078125 376.230469 L 85.921875 372.472656 L 89.761719 368.730469 L 93.601563 365 L 97.441406 361.28125 L 101.28125 357.578125 L 105.121094 353.890625 L 108.960938 350.214844 L 112.800781 346.554688 L 116.640625 342.90625 L 120.480469 339.273438 L 124.320313 335.652344 L 128.160156 332.046875 L 132 328.453125 L 135.839844 324.875 L 139.679688 321.3125 L 143.519531 317.761719 L 147.359375 314.222656 L 151.199219 310.699219 L 155.039063 307.191406 L 158.878906 303.695313 L 162.71875 300.214844 L 166.558594 296.746094 L 170.398438 293.292969 L 174.238281 289.851563 L 178.078125 286.425781 L 181.921875 283.015625 L 185.761719 279.613281 L 189.601563 276.230469 L 193.441406 272.859375 L 197.28125 269.5 L 201.121094 266.15625 L 204.960938 262.828125 L 208.800781 259.511719 L 212.640625 256.210938 L 216.480469 252.921875 L 220.320313 249.648438 L 224.160156 246.386719 L 228 243.140625 L 231.839844 239.90625 L 235.679688 236.6875 L 239.519531 233.484375 L 243.359375 230.292969 L 247.199219 227.113281 L 251.039063 223.949219 L 254.878906 220.800781 L 258.71875 217.664063 L 262.558594 214.542969 L 266.398438 211.433594 L 270.238281 208.339844 L 274.078125 205.257813 L 277.921875 202.191406 L 281.761719 199.136719 L 285.601563 196.097656 L 289.441406 193.074219 L 293.28125 190.058594 L 297.121094 187.0625 L 300.960938 184.078125 L 304.800781 181.109375 L 308.640625 178.152344 L 312.480469 175.207031 L 316.320313 172.28125 L 320.160156 169.363281 L 324 166.464844 L 327.839844 163.574219 L 331.679688 160.703125 L 335.519531 157.84375 L 339.359375 154.996094 L 343.199219 152.164063 L 347.039063 149.347656 L 350.878906 146.542969 L 354.71875 143.75 L 358.558594 140.972656 L 362.398438 138.210938 L 366.238281 135.460938 L 370.078125 132.726563 L 373.921875 130.003906 L 377.761719 127.296875 L 381.601563 124.601563 L 385.441406 121.921875 L 389.28125 119.257813 L 393.121094 116.601563 L 396.960938 113.964844 L 400.800781 111.339844 L 404.640625 108.730469 L 408.480469 106.132813 L 412.320313 103.546875 L 416.160156 100.976563 L 420 98.421875 L 423.839844 95.878906 L 427.679688 93.351563 L 431.519531 90.839844 L 435.359375 88.335938 L 439.199219 85.851563 L 443.039063 83.378906 L 446.878906 80.917969 L 450.71875 78.472656 L 454.558594 76.042969 L 458.398438 73.625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.242188 416.800781 L 78.878906 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.058594 420.617188 L 75.058594 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 91.660156 402.847656 L 99.296875 402.847656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 95.476563 406.667969 L 95.476563 399.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 110.761719 388.890625 L 118.398438 388.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.578125 392.710938 L 114.578125 385.074219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.957031 383.675781 L 129.59375 383.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 125.777344 387.492188 L 125.777344 379.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.742188 371.464844 L 147.378906 371.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.558594 375.285156 L 143.558594 367.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.574219 362.75 L 161.210938 362.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 157.390625 366.570313 L 157.390625 358.933594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 167.40625 355.789063 L 175.042969 355.789063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.222656 359.605469 L 171.222656 351.96875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.800781 340.089844 L 197.4375 340.089844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 193.617188 343.910156 L 193.617188 336.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.21875 329.648438 L 217.855469 329.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 214.035156 333.464844 L 214.035156 325.828125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 229.976563 319.199219 L 237.613281 319.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 233.796875 323.019531 L 233.796875 315.382813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 243.152344 310.480469 L 250.789063 310.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 246.96875 314.300781 L 246.96875 306.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 260.277344 301.777344 L 267.914063 301.777344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 264.09375 305.597656 L 264.09375 297.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 285.964844 287.847656 L 293.601563 287.847656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.78125 291.667969 L 289.78125 284.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.453125 279.132813 L 308.089844 279.132813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 304.273438 282.953125 L 304.273438 275.316406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 314.945313 272.175781 L 322.582031 272.175781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.761719 275.992188 L 318.761719 268.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 330.09375 263.464844 L 337.730469 263.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 333.914063 267.28125 L 333.914063 259.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 345.902344 254.757813 L 353.539063 254.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 349.722656 258.574219 L 349.722656 250.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.757813 251.292969 L 365.394531 251.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 361.578125 255.113281 L 361.578125 247.476563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.929688 244.328125 L 378.566406 244.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.75 248.148438 L 374.75 240.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.761719 235.613281 L 392.398438 235.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.582031 239.433594 L 388.582031 231.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 400.570313 230.414063 L 408.207031 230.414063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 404.390625 234.230469 L 404.390625 226.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 410.453125 225.1875 L 418.089844 225.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.269531 229.007813 L 414.269531 221.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 424.28125 218.226563 L 431.917969 218.226563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 428.101563 222.046875 L 428.101563 214.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 439.433594 213.023438 L 447.070313 213.023438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.25 216.84375 L 443.25 209.207031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 206.066406 L 462.21875 206.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 209.886719 L 458.398438 202.25 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.058594 416.171875 L 78.890625 413.621094 L 82.726563 411.074219 L 86.558594 408.539063 L 90.390625 406.011719 L 94.226563 403.496094 L 98.058594 400.988281 L 101.890625 398.488281 L 105.726563 396 L 109.558594 393.519531 L 113.394531 391.046875 L 117.226563 388.582031 L 121.058594 386.128906 L 124.894531 383.683594 L 128.726563 381.25 L 132.558594 378.820313 L 136.394531 376.40625 L 140.226563 373.996094 L 144.058594 371.597656 L 147.894531 369.207031 L 151.726563 366.824219 L 155.558594 364.453125 L 159.394531 362.089844 L 163.226563 359.734375 L 167.0625 357.390625 L 170.894531 355.054688 L 174.726563 352.726563 L 178.5625 350.410156 L 182.394531 348.101563 L 186.226563 345.800781 L 190.0625 343.507813 L 193.894531 341.226563 L 197.726563 338.957031 L 201.5625 336.691406 L 205.394531 334.4375 L 209.226563 332.191406 L 213.0625 329.957031 L 216.894531 327.726563 L 220.726563 325.511719 L 224.5625 323.300781 L 228.394531 321.101563 L 232.230469 318.910156 L 236.0625 316.726563 L 239.894531 314.554688 L 243.730469 312.390625 L 247.5625 310.238281 L 251.394531 308.089844 L 255.230469 305.953125 L 259.0625 303.828125 L 262.894531 301.707031 L 266.730469 299.597656 L 270.5625 297.5 L 274.394531 295.40625 L 278.230469 293.324219 L 282.0625 291.25 L 285.894531 289.1875 L 289.730469 287.132813 L 293.5625 285.085938 L 297.398438 283.050781 L 301.230469 281.019531 L 305.0625 279.003906 L 308.898438 276.992188 L 312.730469 274.992188 L 316.5625 273 L 320.398438 271.019531 L 324.230469 269.042969 L 328.0625 267.078125 L 331.898438 265.125 L 335.730469 263.179688 L 339.5625 261.242188 L 343.398438 259.3125 L 347.230469 257.394531 L 351.0625 255.484375 L 354.898438 253.582031 L 358.730469 251.691406 L 362.566406 249.808594 L 366.398438 247.933594 L 370.230469 246.070313 L 374.066406 244.214844 L 377.898438 242.367188 L 381.730469 240.527344 L 385.566406 238.699219 L 389.398438 236.878906 L 393.230469 235.070313 L 397.066406 233.269531 L 400.898438 231.476563 L 404.730469 229.695313 L 408.566406 227.917969 L 412.398438 226.152344 L 416.234375 224.398438 L 420.066406 222.652344 L 423.898438 220.914063 L 427.734375 219.183594 L 431.566406 217.464844 L 435.398438 215.753906 L 439.234375 214.050781 L 443.066406 212.359375 L 446.898438 210.675781 L 450.734375 209 L 454.566406 207.335938 L 458.398438 205.679688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-8" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-9" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-8" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-8" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-9" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-8" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-10" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-11" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-10" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-12" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-13" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-14" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-13" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-1" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-15" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-16" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-5" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-6" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-17" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-1" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-10" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-19" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-14" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-19" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-5" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-6" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-10" x="416.728516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="420.0625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="427.070313" y="346.695313"/> + <use xlink:href="#glyph0-19" x="430.404297" y="346.695313"/> + <use xlink:href="#glyph0-14" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-1" x="440.412109" y="346.695313"/> + <use xlink:href="#glyph0-19" x="447.085938" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-9" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-8" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-9" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-8" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-10" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-11" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-12" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-10" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-13" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-14" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-13" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-19" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-20" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-21" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-5" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-6" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-17" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-1" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-10" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-18" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-10" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-13" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-14" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-3" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-21" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-16" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-6" x="412.058594" y="375.496094"/> + <use xlink:href="#glyph0-10" x="416.728516" y="375.496094"/> + <use xlink:href="#glyph0-18" x="420.0625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="427.070313" y="375.496094"/> + <use xlink:href="#glyph0-13" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-14" x="437.078125" y="375.496094"/> + <use xlink:href="#glyph0-4" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-13" x="447.085938" y="375.496094"/> + <use xlink:href="#glyph0-4" x="453.759766" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_mixte_slope_16_.svg b/docs/en/calculators/par/baffle_fishway_mixte_slope_16_.svg new file mode 100644 index 0000000000000000000000000000000000000000..f4a0453f43364f6ac774db2e97e7dd87260b6ba6 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_mixte_slope_16_.svg @@ -0,0 +1,445 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -7.464844 -0.570313 L -8.476563 -0.570313 L -8.476563 -6.128906 L -7.65625 -6.128906 C -7.074219 -5.582031 -6.300781 -5.039063 -5.335938 -4.503906 C -4.371094 -3.964844 -3.378906 -3.550781 -2.359375 -3.257813 C -1.636719 -3.046875 -0.851563 -2.910156 0 -2.851563 L 0 -1.769531 C -0.675781 -1.78125 -1.492188 -1.914063 -2.449219 -2.167969 C -3.402344 -2.421875 -4.324219 -2.785156 -5.214844 -3.261719 C -6.105469 -3.734375 -6.855469 -4.238281 -7.464844 -4.777344 Z M -7.464844 -0.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 7.644531 -3.789063 L 9.660156 -3.148438 C 9.347656 -2.019531 8.832031 -1.183594 8.117188 -0.640625 C 7.394531 -0.09375 6.484375 0.175781 5.378906 0.175781 C 4.007813 0.175781 2.882813 -0.289063 2.003906 -1.226563 C 1.121094 -2.15625 0.679688 -3.4375 0.683594 -5.0625 C 0.679688 -6.777344 1.121094 -8.109375 2.011719 -9.058594 C 2.894531 -10.007813 4.058594 -10.480469 5.503906 -10.484375 C 6.761719 -10.480469 7.789063 -10.109375 8.578125 -9.367188 C 9.046875 -8.921875 9.398438 -8.289063 9.632813 -7.46875 L 7.574219 -6.976563 C 7.449219 -7.507813 7.195313 -7.929688 6.808594 -8.238281 C 6.421875 -8.546875 5.949219 -8.699219 5.398438 -8.703125 C 4.632813 -8.699219 4.015625 -8.425781 3.539063 -7.878906 C 3.0625 -7.328125 2.824219 -6.441406 2.828125 -5.21875 C 2.824219 -3.910156 3.058594 -2.980469 3.53125 -2.429688 C 3.996094 -1.875 4.605469 -1.597656 5.359375 -1.601563 C 5.910156 -1.597656 6.386719 -1.773438 6.785156 -2.128906 C 7.183594 -2.476563 7.46875 -3.03125 7.644531 -3.789063 Z M 7.644531 -3.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 3.003906 -10.308594 L 3.003906 -6.519531 C 3.636719 -7.261719 4.398438 -7.632813 5.289063 -7.636719 C 5.738281 -7.632813 6.148438 -7.550781 6.515625 -7.382813 C 6.882813 -7.210938 7.15625 -6.992188 7.34375 -6.734375 C 7.523438 -6.46875 7.652344 -6.179688 7.722656 -5.863281 C 7.789063 -5.542969 7.820313 -5.046875 7.824219 -4.378906 L 7.824219 0 L 5.851563 0 L 5.851563 -3.945313 C 5.847656 -4.722656 5.808594 -5.21875 5.738281 -5.433594 C 5.660156 -5.640625 5.527344 -5.808594 5.339844 -5.9375 C 5.144531 -6.058594 4.90625 -6.121094 4.625 -6.125 C 4.292969 -6.121094 4 -6.042969 3.746094 -5.882813 C 3.484375 -5.722656 3.296875 -5.480469 3.179688 -5.164063 C 3.058594 -4.839844 3 -4.367188 3.003906 -3.742188 L 3.003906 0 L 1.027344 0 L 1.027344 -10.308594 Z M 3.003906 -10.308594 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.578125 -3.839844 C 0.574219 -4.492188 0.734375 -5.128906 1.0625 -5.742188 C 1.382813 -6.355469 1.839844 -6.824219 2.433594 -7.148438 C 3.023438 -7.472656 3.6875 -7.632813 4.421875 -7.636719 C 5.550781 -7.632813 6.476563 -7.265625 7.199219 -6.535156 C 7.917969 -5.796875 8.277344 -4.871094 8.28125 -3.753906 C 8.277344 -2.621094 7.914063 -1.683594 7.1875 -0.945313 C 6.457031 -0.203125 5.539063 0.164063 4.4375 0.167969 C 3.75 0.164063 3.097656 0.0117188 2.476563 -0.292969 C 1.855469 -0.601563 1.382813 -1.054688 1.0625 -1.652344 C 0.734375 -2.25 0.574219 -2.976563 0.578125 -3.839844 Z M 2.601563 -3.734375 C 2.601563 -2.988281 2.777344 -2.421875 3.128906 -2.03125 C 3.480469 -1.636719 3.914063 -1.441406 4.429688 -1.441406 C 4.945313 -1.441406 5.375 -1.636719 5.726563 -2.03125 C 6.070313 -2.421875 6.246094 -2.992188 6.25 -3.746094 C 6.246094 -4.472656 6.070313 -5.035156 5.726563 -5.433594 C 5.375 -5.824219 4.945313 -6.023438 4.429688 -6.027344 C 3.914063 -6.023438 3.480469 -5.824219 3.128906 -5.433594 C 2.777344 -5.035156 2.601563 -4.46875 2.601563 -3.734375 Z M 2.601563 -3.734375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 7.304688 -7.785156 L 5.394531 -7.574219 C 5.34375 -7.964844 5.222656 -8.253906 5.027344 -8.445313 C 4.828125 -8.628906 4.570313 -8.722656 4.261719 -8.726563 C 3.839844 -8.722656 3.488281 -8.535156 3.203125 -8.164063 C 2.910156 -7.785156 2.726563 -7.003906 2.65625 -5.820313 C 3.144531 -6.398438 3.757813 -6.691406 4.492188 -6.695313 C 5.316406 -6.691406 6.023438 -6.375 6.613281 -5.75 C 7.199219 -5.117188 7.492188 -4.308594 7.496094 -3.320313 C 7.492188 -2.261719 7.183594 -1.414063 6.566406 -0.78125 C 5.945313 -0.140625 5.152344 0.175781 4.183594 0.175781 C 3.140625 0.175781 2.285156 -0.226563 1.617188 -1.035156 C 0.945313 -1.84375 0.609375 -3.167969 0.613281 -5.011719 C 0.609375 -6.898438 0.957031 -8.261719 1.660156 -9.097656 C 2.355469 -9.929688 3.261719 -10.347656 4.378906 -10.351563 C 5.160156 -10.347656 5.808594 -10.128906 6.324219 -9.691406 C 6.832031 -9.253906 7.160156 -8.617188 7.304688 -7.785156 Z M 2.828125 -3.472656 C 2.824219 -2.828125 2.972656 -2.332031 3.269531 -1.984375 C 3.5625 -1.632813 3.898438 -1.457031 4.28125 -1.460938 C 4.644531 -1.457031 4.949219 -1.601563 5.195313 -1.890625 C 5.4375 -2.175781 5.558594 -2.644531 5.5625 -3.296875 C 5.558594 -3.964844 5.429688 -4.457031 5.167969 -4.769531 C 4.902344 -5.082031 4.574219 -5.238281 4.183594 -5.238281 C 3.800781 -5.238281 3.476563 -5.085938 3.21875 -4.789063 C 2.953125 -4.488281 2.824219 -4.050781 2.828125 -3.472656 Z M 2.828125 -3.472656 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface46"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 356.820313 C 77.101563 360.421875 71.699219 360.421875 71.699219 356.820313 C 71.699219 353.21875 77.101563 353.21875 77.101563 356.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.605469 328.59375 C 113.605469 332.195313 108.207031 332.195313 108.207031 328.59375 C 108.207031 324.996094 113.605469 324.996094 113.605469 328.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.566406 310.953125 C 134.566406 314.554688 129.164063 314.554688 129.164063 310.953125 C 129.164063 307.355469 134.566406 307.355469 134.566406 310.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.875 293.3125 C 156.875 296.914063 151.476563 296.914063 151.476563 293.3125 C 151.476563 289.710938 156.875 289.710938 156.875 293.3125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.761719 261.558594 C 196.761719 265.160156 191.363281 265.160156 191.363281 261.558594 C 191.363281 257.957031 196.761719 257.957031 196.761719 261.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.070313 243.917969 C 219.070313 247.519531 213.671875 247.519531 213.671875 243.917969 C 213.671875 240.316406 219.070313 240.316406 219.070313 243.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 243.410156 224.511719 C 243.410156 228.113281 238.011719 228.113281 238.011719 224.511719 C 238.011719 220.914063 243.410156 220.914063 243.410156 224.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.394531 208.636719 C 266.394531 212.234375 260.996094 212.234375 260.996094 208.636719 C 260.996094 205.035156 266.394531 205.035156 266.394531 208.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.269531 198.050781 C 281.269531 201.652344 275.867188 201.652344 275.867188 198.050781 C 275.867188 194.453125 281.269531 194.453125 281.269531 198.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.636719 178.644531 C 307.636719 182.246094 302.234375 182.246094 302.234375 178.644531 C 302.234375 175.046875 307.636719 175.046875 307.636719 178.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 329.269531 162.769531 C 329.269531 166.371094 323.867188 166.371094 323.867188 162.769531 C 323.867188 159.167969 329.269531 159.167969 329.269531 162.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 350.226563 146.890625 C 350.226563 150.492188 344.828125 150.492188 344.828125 146.890625 C 344.828125 143.292969 350.226563 143.292969 350.226563 146.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.101563 136.308594 C 365.101563 139.90625 359.699219 139.90625 359.699219 136.308594 C 359.699219 132.707031 365.101563 132.707031 365.101563 136.308594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 389.4375 120.429688 C 389.4375 124.03125 384.039063 124.03125 384.039063 120.429688 C 384.039063 116.832031 389.4375 116.832031 389.4375 120.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.425781 104.554688 C 412.425781 108.152344 407.023438 108.152344 407.023438 104.554688 C 407.023438 100.953125 412.425781 100.953125 412.425781 104.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 440.816406 86.914063 C 440.816406 90.511719 435.417969 90.511719 435.417969 86.914063 C 435.417969 83.3125 440.816406 83.3125 440.816406 86.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.230469 430.558594 L 453.21875 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 142.230469 430.558594 L 142.230469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 245.894531 430.558594 L 245.894531 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 349.554688 430.558594 L 349.554688 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.21875 430.558594 L 453.21875 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="138.894531" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="242.558594" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="346.21875" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="449.882813" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 414.59375 L 59.039063 104.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 414.59375 L 51.839844 414.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 362.996094 L 51.839844 362.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 311.394531 L 51.839844 311.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 259.792969 L 51.839844 259.792969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 208.195313 L 51.839844 208.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 156.59375 L 51.839844 156.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 104.996094 L 51.839844 104.996094 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="417.929688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="366.332031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="314.730469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="263.128906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="211.53125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="159.929688"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="108.332031"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="176.5625" y="34.675781"/> + <use xlink:href="#glyph2-2" x="186.961719" y="34.675781"/> + <use xlink:href="#glyph2-3" x="195.757813" y="34.675781"/> + <use xlink:href="#glyph2-4" x="203.766406" y="34.675781"/> + <use xlink:href="#glyph2-5" x="211.775" y="34.675781"/> + <use xlink:href="#glyph2-6" x="217.378906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="226.175" y="34.675781"/> + <use xlink:href="#glyph2-8" x="234.971094" y="34.675781"/> + <use xlink:href="#glyph2-9" x="242.979687" y="34.675781"/> + <use xlink:href="#glyph2-10" x="246.980469" y="34.675781"/> + <use xlink:href="#glyph2-11" x="255.776562" y="34.675781"/> + <use xlink:href="#glyph2-12" x="263.785156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="268.580469" y="34.675781"/> + <use xlink:href="#glyph2-13" x="273.375781" y="34.675781"/> + <use xlink:href="#glyph2-3" x="277.376563" y="34.675781"/> + <use xlink:href="#glyph2-8" x="285.385156" y="34.675781"/> + <use xlink:href="#glyph2-9" x="293.39375" y="34.675781"/> + <use xlink:href="#glyph2-14" x="297.394531" y="34.675781"/> + <use xlink:href="#glyph2-9" x="306.999219" y="34.675781"/> + <use xlink:href="#glyph2-15" x="311" y="34.675781"/> + <use xlink:href="#glyph2-9" x="319.409375" y="34.675781"/> + <use xlink:href="#glyph2-16" x="323.410156" y="34.675781"/> + <use xlink:href="#glyph2-17" x="331.41875" y="34.675781"/> + <use xlink:href="#glyph2-9" x="339.427344" y="34.675781"/> + <use xlink:href="#glyph2-18" x="343.428125" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-6" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-9" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-11" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-12" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-13" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-11" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-9" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 356.820313 C 77.101563 360.421875 71.699219 360.421875 71.699219 356.820313 C 71.699219 353.21875 77.101563 353.21875 77.101563 356.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 97.382813 340.945313 C 97.382813 344.542969 91.980469 344.542969 91.980469 340.945313 C 91.980469 337.34375 97.382813 337.34375 97.382813 340.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.605469 328.59375 C 113.605469 332.195313 108.207031 332.195313 108.207031 328.59375 C 108.207031 324.996094 113.605469 324.996094 113.605469 328.59375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.566406 310.953125 C 134.566406 314.554688 129.164063 314.554688 129.164063 310.953125 C 129.164063 307.355469 134.566406 307.355469 134.566406 310.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.875 293.3125 C 156.875 296.914063 151.476563 296.914063 151.476563 293.3125 C 151.476563 289.710938 156.875 289.710938 156.875 293.3125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.507813 275.671875 C 178.507813 279.273438 173.109375 279.273438 173.109375 275.671875 C 173.109375 272.070313 178.507813 272.070313 178.507813 275.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.761719 261.558594 C 196.761719 265.160156 191.363281 265.160156 191.363281 261.558594 C 191.363281 257.957031 196.761719 257.957031 196.761719 261.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.070313 243.917969 C 219.070313 247.519531 213.671875 247.519531 213.671875 243.917969 C 213.671875 240.316406 219.070313 240.316406 219.070313 243.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 243.410156 224.511719 C 243.410156 228.113281 238.011719 228.113281 238.011719 224.511719 C 238.011719 220.914063 243.410156 220.914063 243.410156 224.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.394531 208.636719 C 266.394531 212.234375 260.996094 212.234375 260.996094 208.636719 C 260.996094 205.035156 266.394531 205.035156 266.394531 208.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.269531 198.050781 C 281.269531 201.652344 275.867188 201.652344 275.867188 198.050781 C 275.867188 194.453125 281.269531 194.453125 281.269531 198.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 307.636719 178.644531 C 307.636719 182.246094 302.234375 182.246094 302.234375 178.644531 C 302.234375 175.046875 307.636719 175.046875 307.636719 178.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 329.269531 162.769531 C 329.269531 166.371094 323.867188 166.371094 323.867188 162.769531 C 323.867188 159.167969 329.269531 159.167969 329.269531 162.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 350.226563 146.890625 C 350.226563 150.492188 344.828125 150.492188 344.828125 146.890625 C 344.828125 143.292969 350.226563 143.292969 350.226563 146.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.101563 136.308594 C 365.101563 139.90625 359.699219 139.90625 359.699219 136.308594 C 359.699219 132.707031 365.101563 132.707031 365.101563 136.308594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 389.4375 120.429688 C 389.4375 124.03125 384.039063 124.03125 384.039063 120.429688 C 384.039063 116.832031 389.4375 116.832031 389.4375 120.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.425781 104.554688 C 412.425781 108.152344 407.023438 108.152344 407.023438 104.554688 C 407.023438 100.953125 412.425781 100.953125 412.425781 104.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 440.816406 86.914063 C 440.816406 90.511719 435.417969 90.511719 435.417969 86.914063 C 435.417969 83.3125 440.816406 83.3125 440.816406 86.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 357.878906 L 78.238281 354.671875 L 82.078125 351.472656 L 85.921875 348.285156 L 89.761719 345.097656 L 93.601563 341.921875 L 97.441406 338.753906 L 101.28125 335.589844 L 105.121094 332.433594 L 112.800781 326.144531 L 116.640625 323.011719 L 120.480469 319.886719 L 124.320313 316.765625 L 128.160156 313.652344 L 132 310.546875 L 135.839844 307.449219 L 139.679688 304.359375 L 143.519531 301.273438 L 147.359375 298.199219 L 151.199219 295.128906 L 155.039063 292.066406 L 158.878906 289.011719 L 162.71875 285.960938 L 166.558594 282.921875 L 170.398438 279.886719 L 174.238281 276.859375 L 178.078125 273.839844 L 181.921875 270.828125 L 185.761719 267.824219 L 189.601563 264.824219 L 193.441406 261.835938 L 197.28125 258.851563 L 201.121094 255.875 L 204.960938 252.90625 L 208.800781 249.941406 L 212.640625 246.988281 L 216.480469 244.039063 L 220.320313 241.097656 L 224.160156 238.164063 L 228 235.238281 L 231.839844 232.316406 L 235.679688 229.40625 L 239.519531 226.5 L 243.359375 223.601563 L 247.199219 220.710938 L 251.039063 217.828125 L 254.878906 214.949219 L 258.71875 212.082031 L 262.558594 209.21875 L 266.398438 206.363281 L 270.238281 203.515625 L 274.078125 200.675781 L 277.921875 197.839844 L 281.761719 195.015625 L 285.601563 192.195313 L 289.441406 189.382813 L 293.28125 186.578125 L 297.121094 183.777344 L 300.960938 180.988281 L 304.800781 178.203125 L 308.640625 175.429688 L 312.480469 172.660156 L 316.320313 169.894531 L 320.160156 167.140625 L 324 164.394531 L 327.839844 161.652344 L 331.679688 158.917969 L 335.519531 156.191406 L 339.359375 153.472656 L 343.199219 150.757813 L 347.039063 148.054688 L 350.878906 145.355469 L 354.71875 142.664063 L 358.558594 139.980469 L 362.398438 137.304688 L 366.238281 134.636719 L 370.078125 131.972656 L 373.921875 129.316406 L 377.761719 126.671875 L 381.601563 124.03125 L 385.441406 121.394531 L 389.28125 118.769531 L 393.121094 116.148438 L 396.960938 113.539063 L 400.800781 110.933594 L 404.640625 108.335938 L 408.480469 105.742188 L 412.320313 103.160156 L 416.160156 100.582031 L 420 98.015625 L 423.839844 95.453125 L 427.679688 92.894531 L 431.519531 90.347656 L 435.359375 87.808594 L 439.199219 85.273438 L 443.039063 82.746094 L 446.878906 80.226563 L 450.71875 77.714844 L 454.558594 75.210938 L 458.398438 72.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.511719 402.6875 L 97.148438 402.6875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 93.328125 406.503906 L 93.328125 398.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 102.355469 395.628906 L 109.992188 395.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 106.175781 399.449219 L 106.175781 391.8125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 117.90625 385.046875 L 125.542969 385.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.722656 388.863281 L 121.722656 381.226563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 135.484375 374.460938 L 143.121094 374.460938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.300781 378.28125 L 139.300781 370.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.679688 365.640625 L 157.316406 365.640625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.5 369.460938 L 153.5 361.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 163.878906 356.820313 L 171.515625 356.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 167.695313 360.640625 L 167.695313 353.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 177.398438 349.765625 L 185.035156 349.765625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 181.21875 353.582031 L 181.21875 345.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.597656 342.707031 L 199.234375 342.707031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.414063 346.527344 L 195.414063 338.890625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.46875 333.886719 L 214.105469 333.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 210.289063 337.707031 L 210.289063 330.070313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 228.777344 321.539063 L 236.414063 321.539063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 232.597656 325.355469 L 232.597656 317.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 248.382813 310.953125 L 256.019531 310.953125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 252.203125 314.773438 L 252.203125 307.136719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 262.582031 303.898438 L 270.21875 303.898438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.398438 307.714844 L 266.398438 300.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.511719 293.3125 L 289.148438 293.3125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 285.328125 297.132813 L 285.328125 289.496094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 301.792969 284.492188 L 309.429688 284.492188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 305.609375 288.3125 L 305.609375 280.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 323.425781 272.144531 L 331.0625 272.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 327.246094 275.960938 L 327.246094 268.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.003906 266.851563 L 348.640625 266.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.824219 270.667969 L 344.824219 263.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 358.582031 258.03125 L 366.21875 258.03125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.398438 261.847656 L 362.398438 254.210938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 375.484375 250.972656 L 383.121094 250.972656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 379.300781 254.792969 L 379.300781 247.15625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.792969 242.152344 L 405.429688 242.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 401.609375 245.972656 L 401.609375 238.335938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 422.808594 231.570313 L 430.445313 231.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 426.625 235.386719 L 426.625 227.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.414063 224.511719 L 450.050781 224.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.230469 228.332031 L 446.230469 220.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 219.21875 L 462.21875 219.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 223.039063 L 458.398438 215.402344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.8125 L 78.238281 413.285156 L 82.078125 410.773438 L 85.921875 408.269531 L 89.761719 405.777344 L 93.601563 403.300781 L 97.441406 400.832031 L 101.28125 398.375 L 105.121094 395.929688 L 108.960938 393.496094 L 112.800781 391.074219 L 116.640625 388.664063 L 120.480469 386.261719 L 124.320313 383.875 L 128.160156 381.496094 L 132 379.132813 L 135.839844 376.777344 L 139.679688 374.4375 L 143.519531 372.105469 L 147.359375 369.785156 L 151.199219 367.476563 L 155.039063 365.179688 L 158.878906 362.894531 L 162.71875 360.621094 L 166.558594 358.355469 L 170.398438 356.105469 L 174.238281 353.867188 L 178.078125 351.636719 L 181.921875 349.421875 L 185.761719 347.214844 L 189.601563 345.019531 L 193.441406 342.835938 L 197.28125 340.667969 L 201.121094 338.507813 L 204.960938 336.359375 L 208.800781 334.21875 L 212.640625 332.09375 L 216.480469 329.980469 L 220.320313 327.878906 L 224.160156 325.785156 L 228 323.707031 L 231.839844 321.636719 L 235.679688 319.578125 L 239.519531 317.535156 L 243.359375 315.5 L 247.199219 313.476563 L 251.039063 311.464844 L 254.878906 309.464844 L 258.71875 307.476563 L 262.558594 305.496094 L 266.398438 303.53125 L 270.238281 301.578125 L 274.078125 299.632813 L 277.921875 297.703125 L 281.761719 295.78125 L 285.601563 293.871094 L 289.441406 291.972656 L 293.28125 290.089844 L 297.121094 288.214844 L 300.960938 286.351563 L 304.800781 284.496094 L 308.640625 282.65625 L 312.480469 280.828125 L 316.320313 279.011719 L 320.160156 277.203125 L 324 275.410156 L 327.839844 273.625 L 331.679688 271.851563 L 335.519531 270.09375 L 339.359375 268.34375 L 343.199219 266.605469 L 347.039063 264.878906 L 350.878906 263.164063 L 354.71875 261.460938 L 358.558594 259.769531 L 362.398438 258.085938 L 366.238281 256.417969 L 370.078125 254.757813 L 373.921875 253.113281 L 377.761719 251.476563 L 381.601563 249.855469 L 385.441406 248.242188 L 389.28125 246.640625 L 393.121094 245.050781 L 396.960938 243.472656 L 400.800781 241.90625 L 404.640625 240.351563 L 408.480469 238.804688 L 412.320313 237.273438 L 416.160156 235.753906 L 420 234.242188 L 423.839844 232.746094 L 427.679688 231.257813 L 431.519531 229.78125 L 435.359375 228.316406 L 439.199219 226.863281 L 443.039063 225.425781 L 446.878906 223.992188 L 450.71875 222.574219 L 454.558594 221.167969 L 458.398438 219.773438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-8" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-9" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-8" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-8" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-9" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-8" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-10" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-11" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-10" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-12" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-13" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-14" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-13" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-15" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-1" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-3" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-5" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-6" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-16" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-1" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-10" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-17" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-10" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-13" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-14" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-4" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-18" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-19" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-5" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-6" x="418.732422" y="346.695313"/> + <use xlink:href="#glyph0-10" x="423.402344" y="346.695313"/> + <use xlink:href="#glyph0-17" x="426.736328" y="346.695313"/> + <use xlink:href="#glyph0-10" x="433.744141" y="346.695313"/> + <use xlink:href="#glyph0-15" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-14" x="443.751953" y="346.695313"/> + <use xlink:href="#glyph0-18" x="447.085938" y="346.695313"/> + <use xlink:href="#glyph0-15" x="453.759766" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-9" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-8" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-9" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-8" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-10" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-11" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-12" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-10" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-13" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-14" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-13" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-1" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-13" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-15" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-5" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-6" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-16" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-1" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-10" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-17" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-10" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-13" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-14" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-3" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-20" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-13" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-6" x="412.058594" y="375.496094"/> + <use xlink:href="#glyph0-10" x="416.728516" y="375.496094"/> + <use xlink:href="#glyph0-17" x="420.0625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="427.070313" y="375.496094"/> + <use xlink:href="#glyph0-13" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-14" x="437.078125" y="375.496094"/> + <use xlink:href="#glyph0-18" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-13" x="447.085938" y="375.496094"/> + <use xlink:href="#glyph0-20" x="453.759766" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_plans_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_plans_slope_10_.svg new file mode 100644 index 0000000000000000000000000000000000000000..7138f949ad3bd589d7a5a51745d44fccd4092e9e --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_plans_slope_10_.svg @@ -0,0 +1,459 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface1"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.644531 402.128906 C 89.644531 405.730469 84.242188 405.730469 84.242188 402.128906 C 84.242188 398.53125 89.644531 398.53125 89.644531 402.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 104.539063 388.683594 C 104.539063 392.285156 99.140625 392.285156 99.140625 388.683594 C 99.140625 385.082031 104.539063 385.082031 104.539063 388.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.042969 375.238281 C 119.042969 378.835938 113.644531 378.835938 113.644531 375.238281 C 113.644531 371.636719 119.042969 371.636719 119.042969 375.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.347656 352.007813 C 143.347656 355.609375 137.949219 355.609375 137.949219 352.007813 C 137.949219 348.410156 143.347656 348.410156 143.347656 352.007813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.59375 336.117188 C 160.59375 339.71875 155.195313 339.71875 155.195313 336.117188 C 155.195313 332.519531 160.59375 332.519531 160.59375 336.117188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.492188 321.449219 C 175.492188 325.046875 170.089844 325.046875 170.089844 321.449219 C 170.089844 317.847656 175.492188 317.847656 175.492188 321.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.601563 308 C 189.601563 311.601563 184.203125 311.601563 184.203125 308 C 184.203125 304.402344 189.601563 304.402344 189.601563 308 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.457031 292.109375 C 206.457031 295.710938 201.058594 295.710938 201.058594 292.109375 C 201.058594 288.507813 206.457031 288.507813 206.457031 292.109375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.609375 282.328125 C 218.609375 285.929688 213.210938 285.929688 213.210938 282.328125 C 213.210938 278.730469 218.609375 278.730469 218.609375 282.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 233.507813 268.882813 C 233.507813 272.484375 228.105469 272.484375 228.105469 268.882813 C 228.105469 265.28125 233.507813 265.28125 233.507813 268.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.875 259.101563 C 244.875 262.703125 239.472656 262.703125 239.472656 259.101563 C 239.472656 255.503906 244.875 255.503906 244.875 259.101563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.675781 249.324219 C 254.675781 252.921875 249.273438 252.921875 249.273438 249.324219 C 249.273438 245.722656 254.675781 245.722656 254.675781 249.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.347656 219.984375 C 290.347656 223.585938 284.945313 223.585938 284.945313 219.984375 C 284.945313 216.382813 290.347656 216.382813 290.347656 219.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 312.296875 204.09375 C 312.296875 207.691406 306.898438 207.691406 306.898438 204.09375 C 306.898438 200.492188 312.296875 200.492188 312.296875 204.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.378906 166.195313 C 357.378906 169.796875 351.976563 169.796875 351.976563 166.195313 C 351.976563 162.597656 357.378906 162.597656 357.378906 166.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.203125 130.746094 C 405.203125 134.34375 399.800781 134.34375 399.800781 130.746094 C 399.800781 127.144531 405.203125 127.144531 405.203125 130.746094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.164063 100.671875 C 444.164063 104.273438 438.765625 104.273438 438.765625 100.671875 C 438.765625 97.070313 444.164063 97.070313 444.164063 100.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 87.46875 C 461.101563 91.070313 455.699219 91.070313 455.699219 87.46875 C 455.699219 83.871094 461.101563 83.871094 461.101563 87.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.410156 430.558594 L 457.96875 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.410156 430.558594 L 67.410156 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.203125 430.558594 L 123.203125 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.996094 430.558594 L 178.996094 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.792969 430.558594 L 234.792969 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.585938 430.558594 L 290.585938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.378906 430.558594 L 346.378906 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.175781 430.558594 L 402.175781 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 457.96875 430.558594 L 457.96875 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.730469" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.404297" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.738281" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.412109" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.523438" y="456.480469"/> + <use xlink:href="#glyph0-2" x="118.197266" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.53125" y="456.480469"/> + <use xlink:href="#glyph0-3" x="128.205078" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.316406" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.990234" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.324219" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.998047" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.113281" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.787109" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.121094" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.794922" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="278.90625" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.580078" y="456.480469"/> + <use xlink:href="#glyph0-5" x="288.914063" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.587891" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="334.699219" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.373047" y="456.480469"/> + <use xlink:href="#glyph0-5" x="344.707031" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.380859" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="390.496094" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.169922" y="456.480469"/> + <use xlink:href="#glyph0-6" x="400.503906" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.177734" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="446.289063" y="456.480469"/> + <use xlink:href="#glyph0-2" x="452.962891" y="456.480469"/> + <use xlink:href="#glyph0-6" x="456.296875" y="456.480469"/> + <use xlink:href="#glyph0-3" x="462.970703" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 380.328125 L 59.039063 69.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 380.328125 L 51.839844 380.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 318.1875 L 51.839844 318.1875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 256.046875 L 51.839844 256.046875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 193.90625 L 51.839844 193.90625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 131.761719 L 51.839844 131.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 69.621094 L 51.839844 69.621094 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="388.667969"/> + <use xlink:href="#glyph1-2" x="41.761719" y="381.994141"/> + <use xlink:href="#glyph1-3" x="41.761719" y="378.660156"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="326.527344"/> + <use xlink:href="#glyph1-2" x="41.761719" y="319.853516"/> + <use xlink:href="#glyph1-4" x="41.761719" y="316.519531"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="264.386719"/> + <use xlink:href="#glyph1-2" x="41.761719" y="257.712891"/> + <use xlink:href="#glyph1-5" x="41.761719" y="254.378906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="202.246094"/> + <use xlink:href="#glyph1-2" x="41.761719" y="195.572266"/> + <use xlink:href="#glyph1-1" x="41.761719" y="192.238281"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="140.101563"/> + <use xlink:href="#glyph1-2" x="41.761719" y="133.427734"/> + <use xlink:href="#glyph1-7" x="41.761719" y="130.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="77.960938"/> + <use xlink:href="#glyph1-2" x="41.761719" y="71.287109"/> + <use xlink:href="#glyph1-3" x="41.761719" y="67.953125"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.96875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="199.764844" y="34.675781"/> + <use xlink:href="#glyph2-3" x="203.765625" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.774219" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.570313" y="34.675781"/> + <use xlink:href="#glyph2-6" x="228.578906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="232.579687" y="34.675781"/> + <use xlink:href="#glyph2-3" x="241.375781" y="34.675781"/> + <use xlink:href="#glyph2-8" x="249.384375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.179687" y="34.675781"/> + <use xlink:href="#glyph2-2" x="258.975" y="34.675781"/> + <use xlink:href="#glyph2-9" x="262.975781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="270.984375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="278.992969" y="34.675781"/> + <use xlink:href="#glyph2-10" x="282.99375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="292.598437" y="34.675781"/> + <use xlink:href="#glyph2-11" x="296.599219" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.008594" y="34.675781"/> + <use xlink:href="#glyph2-12" x="309.009375" y="34.675781"/> + <use xlink:href="#glyph2-13" x="317.017969" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.026562" y="34.675781"/> + <use xlink:href="#glyph2-14" x="329.027344" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.644531 402.128906 C 89.644531 405.730469 84.242188 405.730469 84.242188 402.128906 C 84.242188 398.53125 89.644531 398.53125 89.644531 402.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 104.539063 388.683594 C 104.539063 392.285156 99.140625 392.285156 99.140625 388.683594 C 99.140625 385.082031 104.539063 385.082031 104.539063 388.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.042969 375.238281 C 119.042969 378.835938 113.644531 378.835938 113.644531 375.238281 C 113.644531 371.636719 119.042969 371.636719 119.042969 375.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.347656 352.007813 C 143.347656 355.609375 137.949219 355.609375 137.949219 352.007813 C 137.949219 348.410156 143.347656 348.410156 143.347656 352.007813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.59375 336.117188 C 160.59375 339.71875 155.195313 339.71875 155.195313 336.117188 C 155.195313 332.519531 160.59375 332.519531 160.59375 336.117188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.492188 321.449219 C 175.492188 325.046875 170.089844 325.046875 170.089844 321.449219 C 170.089844 317.847656 175.492188 317.847656 175.492188 321.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.601563 308 C 189.601563 311.601563 184.203125 311.601563 184.203125 308 C 184.203125 304.402344 189.601563 304.402344 189.601563 308 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 206.457031 292.109375 C 206.457031 295.710938 201.058594 295.710938 201.058594 292.109375 C 201.058594 288.507813 206.457031 288.507813 206.457031 292.109375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 218.609375 282.328125 C 218.609375 285.929688 213.210938 285.929688 213.210938 282.328125 C 213.210938 278.730469 218.609375 278.730469 218.609375 282.328125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 233.507813 268.882813 C 233.507813 272.484375 228.105469 272.484375 228.105469 268.882813 C 228.105469 265.28125 233.507813 265.28125 233.507813 268.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.875 259.101563 C 244.875 262.703125 239.472656 262.703125 239.472656 259.101563 C 239.472656 255.503906 244.875 255.503906 244.875 259.101563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.675781 249.324219 C 254.675781 252.921875 249.273438 252.921875 249.273438 249.324219 C 249.273438 245.722656 254.675781 245.722656 254.675781 249.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.347656 219.984375 C 290.347656 223.585938 284.945313 223.585938 284.945313 219.984375 C 284.945313 216.382813 290.347656 216.382813 290.347656 219.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 312.296875 204.09375 C 312.296875 207.691406 306.898438 207.691406 306.898438 204.09375 C 306.898438 200.492188 312.296875 200.492188 312.296875 204.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.378906 166.195313 C 357.378906 169.796875 351.976563 169.796875 351.976563 166.195313 C 351.976563 162.597656 357.378906 162.597656 357.378906 166.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.203125 130.746094 C 405.203125 134.34375 399.800781 134.34375 399.800781 130.746094 C 399.800781 127.144531 405.203125 127.144531 405.203125 130.746094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.164063 100.671875 C 444.164063 104.273438 438.765625 104.273438 438.765625 100.671875 C 438.765625 97.070313 444.164063 97.070313 444.164063 100.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 87.46875 C 461.101563 91.070313 455.699219 91.070313 455.699219 87.46875 C 455.699219 83.871094 461.101563 83.871094 461.101563 87.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.859375 L 78.238281 412.035156 L 82.078125 408.222656 L 85.921875 404.421875 L 89.761719 400.632813 L 93.601563 396.855469 L 97.441406 393.089844 L 101.28125 389.332031 L 105.121094 385.585938 L 108.960938 381.851563 L 112.800781 378.128906 L 116.640625 374.417969 L 120.480469 370.71875 L 124.320313 367.027344 L 128.160156 363.351563 L 132 359.683594 L 135.839844 356.027344 L 139.679688 352.382813 L 143.519531 348.75 L 147.359375 345.125 L 151.199219 341.515625 L 155.039063 337.914063 L 158.878906 334.324219 L 162.71875 330.746094 L 166.558594 327.179688 L 170.398438 323.625 L 174.238281 320.078125 L 178.078125 316.542969 L 181.921875 313.023438 L 185.761719 309.511719 L 189.601563 306.011719 L 193.441406 302.519531 L 197.28125 299.042969 L 201.121094 295.578125 L 204.960938 292.121094 L 208.800781 288.675781 L 212.640625 285.242188 L 216.480469 281.820313 L 220.320313 278.410156 L 224.160156 275.007813 L 228 271.621094 L 231.839844 268.242188 L 235.679688 264.875 L 239.519531 261.519531 L 243.359375 258.175781 L 247.199219 254.839844 L 251.039063 251.519531 L 254.878906 248.207031 L 258.71875 244.90625 L 262.558594 241.617188 L 266.398438 238.339844 L 270.238281 235.074219 L 274.078125 231.816406 L 277.921875 228.574219 L 281.761719 225.339844 L 285.601563 222.117188 L 289.441406 218.90625 L 293.28125 215.707031 L 297.121094 212.519531 L 300.960938 209.339844 L 304.800781 206.171875 L 308.640625 203.019531 L 312.480469 199.875 L 316.320313 196.742188 L 320.160156 193.617188 L 324 190.507813 L 327.839844 187.40625 L 331.679688 184.320313 L 335.519531 181.242188 L 339.359375 178.175781 L 343.199219 175.121094 L 347.039063 172.074219 L 350.878906 169.042969 L 354.71875 166.019531 L 358.558594 163.007813 L 362.398438 160.007813 L 366.238281 157.019531 L 370.078125 154.042969 L 373.921875 151.078125 L 377.761719 148.121094 L 381.601563 145.179688 L 385.441406 142.246094 L 389.28125 139.324219 L 393.121094 136.414063 L 396.960938 133.511719 L 400.800781 130.625 L 404.640625 127.746094 L 408.480469 124.878906 L 412.320313 122.023438 L 416.160156 119.179688 L 420 116.347656 L 423.839844 113.527344 L 427.679688 110.714844 L 431.519531 107.917969 L 435.359375 105.128906 L 439.199219 102.351563 L 443.039063 99.585938 L 446.878906 96.828125 L 450.71875 94.085938 L 454.558594 91.351563 L 458.398438 88.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 71.207031 374.992188 L 78.84375 374.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.027344 378.808594 L 75.027344 371.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 89.082031 358.855469 L 96.71875 358.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.902344 362.671875 L 92.902344 355.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.820313 342.230469 L 115.457031 342.230469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 111.640625 346.046875 L 111.640625 338.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 135.261719 317.78125 L 142.898438 317.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.078125 321.597656 L 139.078125 313.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.683594 300.667969 L 161.320313 300.667969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 157.503906 304.484375 L 157.503906 296.847656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.957031 252.992188 L 216.59375 252.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 212.773438 256.808594 L 212.773438 249.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 227.378906 238.320313 L 235.015625 238.320313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.199219 242.140625 L 231.199219 234.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.820313 215.09375 L 262.457031 215.09375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 258.636719 218.914063 L 258.636719 211.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 273.242188 200.425781 L 280.878906 200.425781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 277.0625 204.242188 L 277.0625 196.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 319.890625 166.195313 L 327.527344 166.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 323.710938 170.015625 L 323.710938 162.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 347.722656 144.191406 L 355.359375 144.191406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 351.542969 148.011719 L 351.542969 140.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.570313 117.296875 L 392.207031 117.296875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.390625 121.117188 L 388.390625 113.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.714844 99.207031 L 420.351563 99.207031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 416.535156 103.023438 L 416.535156 95.386719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 431.0625 84.535156 L 438.699219 84.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.878906 88.355469 L 434.878906 80.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 449.878906 72.800781 L 457.515625 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 453.695313 76.617188 L 453.695313 68.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 75.027344 375.523438 L 78.8125 371.980469 L 82.601563 368.453125 L 86.386719 364.933594 L 90.175781 361.421875 L 93.960938 357.921875 L 97.746094 354.433594 L 101.535156 350.957031 L 105.320313 347.488281 L 109.105469 344.03125 L 112.894531 340.582031 L 116.679688 337.148438 L 120.46875 333.71875 L 124.253906 330.304688 L 128.039063 326.898438 L 131.828125 323.503906 L 135.613281 320.117188 L 139.402344 316.742188 L 143.1875 313.378906 L 146.972656 310.027344 L 150.761719 306.683594 L 154.546875 303.347656 L 158.335938 300.027344 L 162.121094 296.714844 L 165.90625 293.414063 L 169.695313 290.121094 L 173.480469 286.839844 L 177.269531 283.570313 L 181.054688 280.308594 L 184.839844 277.058594 L 188.628906 273.820313 L 192.414063 270.589844 L 196.203125 267.371094 L 199.988281 264.164063 L 203.773438 260.964844 L 207.5625 257.777344 L 211.347656 254.601563 L 215.132813 251.433594 L 218.921875 248.277344 L 222.707031 245.132813 L 226.496094 241.996094 L 230.28125 238.871094 L 234.066406 235.753906 L 237.855469 232.648438 L 241.640625 229.554688 L 245.429688 226.472656 L 249.214844 223.398438 L 253 220.335938 L 256.789063 217.28125 L 260.574219 214.242188 L 264.363281 211.207031 L 268.148438 208.1875 L 271.933594 205.175781 L 275.722656 202.175781 L 279.507813 199.183594 L 283.296875 196.203125 L 287.082031 193.234375 L 290.867188 190.277344 L 294.65625 187.328125 L 298.441406 184.390625 L 302.226563 181.460938 L 306.015625 178.542969 L 309.800781 175.636719 L 313.589844 172.738281 L 317.375 169.851563 L 321.160156 166.976563 L 324.949219 164.109375 L 328.734375 161.253906 L 332.523438 158.410156 L 336.308594 155.574219 L 340.09375 152.75 L 343.882813 149.9375 L 347.667969 147.132813 L 351.457031 144.339844 L 355.242188 141.558594 L 359.027344 138.785156 L 362.816406 136.023438 L 366.601563 133.273438 L 370.390625 130.53125 L 374.175781 127.800781 L 377.960938 125.078125 L 381.75 122.371094 L 385.535156 119.667969 L 389.324219 116.980469 L 393.109375 114.300781 L 396.894531 111.632813 L 400.683594 108.976563 L 404.46875 106.328125 L 408.253906 103.691406 L 412.042969 101.0625 L 415.828125 98.445313 L 419.617188 95.839844 L 423.402344 93.246094 L 427.1875 90.660156 L 430.976563 88.082031 L 434.761719 85.519531 L 438.550781 82.964844 L 442.335938 80.421875 L 446.121094 77.886719 L 449.910156 75.363281 L 453.695313 72.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-4" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-3" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-4" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-16" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-17" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-6" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-18" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-1" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-17" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-5" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-18" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-6" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-4" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-19" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-3" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-16" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-17" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-6" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-6" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-20" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-17" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-6" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-21" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-5" x="439.058594" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_plans_slope_15_.svg b/docs/en/calculators/par/baffle_fishway_plans_slope_15_.svg new file mode 100644 index 0000000000000000000000000000000000000000..9b3ea6ead6bd421ead20d9b6ecbb26a6aa433960 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_plans_slope_15_.svg @@ -0,0 +1,464 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-22"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.640625 -2.652344 L 2.609375 -2.855469 C 2.660156 -2.40625 2.828125 -2.054688 3.105469 -1.796875 C 3.382813 -1.535156 3.699219 -1.40625 4.0625 -1.40625 C 4.472656 -1.40625 4.824219 -1.570313 5.109375 -1.90625 C 5.394531 -2.238281 5.535156 -2.746094 5.539063 -3.425781 C 5.535156 -4.054688 5.394531 -4.527344 5.113281 -4.847656 C 4.828125 -5.160156 4.460938 -5.320313 4.007813 -5.324219 C 3.4375 -5.320313 2.925781 -5.070313 2.480469 -4.570313 L 0.878906 -4.800781 L 1.890625 -10.167969 L 7.117188 -10.167969 L 7.117188 -8.316406 L 3.390625 -8.316406 L 3.078125 -6.566406 C 3.515625 -6.785156 3.96875 -6.894531 4.429688 -6.898438 C 5.304688 -6.894531 6.046875 -6.578125 6.660156 -5.941406 C 7.265625 -5.300781 7.570313 -4.472656 7.574219 -3.460938 C 7.570313 -2.609375 7.324219 -1.851563 6.835938 -1.1875 C 6.160156 -0.277344 5.230469 0.175781 4.042969 0.175781 C 3.089844 0.175781 2.3125 -0.078125 1.714844 -0.589844 C 1.113281 -1.097656 0.753906 -1.785156 0.640625 -2.652344 Z M 0.640625 -2.652344 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface6"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 112.714844 373.152344 C 112.714844 376.75 107.316406 376.75 107.316406 373.152344 C 107.316406 369.550781 112.714844 369.550781 112.714844 373.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 146.710938 334.699219 C 146.710938 338.296875 141.3125 338.296875 141.3125 334.699219 C 141.3125 331.097656 146.710938 331.097656 146.710938 334.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 176.175781 303.519531 C 176.175781 307.117188 170.777344 307.117188 170.777344 303.519531 C 170.777344 299.917969 176.175781 299.917969 176.175781 303.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 197.546875 281.695313 C 197.546875 285.292969 192.144531 285.292969 192.144531 281.695313 C 192.144531 278.09375 197.546875 278.09375 197.546875 281.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.039063 253.632813 C 226.039063 257.234375 220.636719 257.234375 220.636719 253.632813 C 220.636719 250.035156 226.039063 250.035156 226.039063 253.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.710938 221.417969 C 259.710938 225.015625 254.308594 225.015625 254.308594 221.417969 C 254.308594 217.816406 259.710938 217.816406 259.710938 221.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.648438 190.238281 C 295.648438 193.839844 290.25 193.839844 290.25 190.238281 C 290.25 186.636719 295.648438 186.636719 295.648438 190.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.585938 136.195313 C 365.585938 139.796875 360.1875 139.796875 360.1875 136.195313 C 360.1875 132.597656 365.585938 132.597656 365.585938 136.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.496094 110.214844 C 402.496094 113.8125 397.097656 113.8125 397.097656 110.214844 C 397.097656 106.613281 402.496094 106.613281 402.496094 110.214844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 432.929688 91.507813 C 432.929688 95.105469 427.53125 95.105469 427.53125 91.507813 C 427.53125 87.90625 432.929688 87.90625 432.929688 91.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.277344 430.558594 L 458.722656 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 67.277344 430.558594 L 67.277344 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.199219 430.558594 L 123.199219 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 179.117188 430.558594 L 179.117188 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 235.039063 430.558594 L 235.039063 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.960938 430.558594 L 290.960938 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.882813 430.558594 L 346.882813 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.804688 430.558594 L 402.804688 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.722656 430.558594 L 458.722656 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="55.597656" y="456.480469"/> + <use xlink:href="#glyph0-2" x="62.271484" y="456.480469"/> + <use xlink:href="#glyph0-1" x="65.605469" y="456.480469"/> + <use xlink:href="#glyph0-1" x="72.279297" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="111.519531" y="456.480469"/> + <use xlink:href="#glyph0-2" x="118.193359" y="456.480469"/> + <use xlink:href="#glyph0-1" x="121.527344" y="456.480469"/> + <use xlink:href="#glyph0-3" x="128.201172" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.4375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="174.111328" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.445313" y="456.480469"/> + <use xlink:href="#glyph0-1" x="184.119141" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.359375" y="456.480469"/> + <use xlink:href="#glyph0-2" x="230.033203" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.367188" y="456.480469"/> + <use xlink:href="#glyph0-3" x="240.041016" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="279.28125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.955078" y="456.480469"/> + <use xlink:href="#glyph0-5" x="289.289063" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.962891" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="335.203125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.876953" y="456.480469"/> + <use xlink:href="#glyph0-5" x="345.210938" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.884766" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="391.125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.798828" y="456.480469"/> + <use xlink:href="#glyph0-6" x="401.132813" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.806641" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="447.042969" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.716797" y="456.480469"/> + <use xlink:href="#glyph0-6" x="457.050781" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.724609" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 422.144531 L 59.039063 100.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 422.144531 L 51.839844 422.144531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 357.859375 L 51.839844 357.859375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 293.570313 L 51.839844 293.570313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 229.285156 L 51.839844 229.285156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 165 L 51.839844 165 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 100.710938 L 51.839844 100.710938 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="430.484375"/> + <use xlink:href="#glyph1-2" x="41.761719" y="423.810547"/> + <use xlink:href="#glyph1-3" x="41.761719" y="420.476563"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="366.199219"/> + <use xlink:href="#glyph1-2" x="41.761719" y="359.525391"/> + <use xlink:href="#glyph1-4" x="41.761719" y="356.191406"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="301.910156"/> + <use xlink:href="#glyph1-2" x="41.761719" y="295.236328"/> + <use xlink:href="#glyph1-5" x="41.761719" y="291.902344"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="237.625"/> + <use xlink:href="#glyph1-2" x="41.761719" y="230.951172"/> + <use xlink:href="#glyph1-6" x="41.761719" y="227.617188"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="173.339844"/> + <use xlink:href="#glyph1-2" x="41.761719" y="166.666016"/> + <use xlink:href="#glyph1-1" x="41.761719" y="163.332031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="109.050781"/> + <use xlink:href="#glyph1-2" x="41.761719" y="102.376953"/> + <use xlink:href="#glyph1-3" x="41.761719" y="99.042969"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.96875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="199.764844" y="34.675781"/> + <use xlink:href="#glyph2-3" x="203.765625" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.774219" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.570313" y="34.675781"/> + <use xlink:href="#glyph2-6" x="228.578906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="232.579687" y="34.675781"/> + <use xlink:href="#glyph2-3" x="241.375781" y="34.675781"/> + <use xlink:href="#glyph2-8" x="249.384375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.179687" y="34.675781"/> + <use xlink:href="#glyph2-2" x="258.975" y="34.675781"/> + <use xlink:href="#glyph2-9" x="262.975781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="270.984375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="278.992969" y="34.675781"/> + <use xlink:href="#glyph2-10" x="282.99375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="292.598437" y="34.675781"/> + <use xlink:href="#glyph2-11" x="296.599219" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.008594" y="34.675781"/> + <use xlink:href="#glyph2-12" x="309.009375" y="34.675781"/> + <use xlink:href="#glyph2-13" x="317.017969" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.026562" y="34.675781"/> + <use xlink:href="#glyph2-14" x="329.027344" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 112.714844 373.152344 C 112.714844 376.75 107.316406 376.75 107.316406 373.152344 C 107.316406 369.550781 112.714844 369.550781 112.714844 373.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 146.710938 334.699219 C 146.710938 338.296875 141.3125 338.296875 141.3125 334.699219 C 141.3125 331.097656 146.710938 331.097656 146.710938 334.699219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 176.175781 303.519531 C 176.175781 307.117188 170.777344 307.117188 170.777344 303.519531 C 170.777344 299.917969 176.175781 299.917969 176.175781 303.519531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 197.546875 281.695313 C 197.546875 285.292969 192.144531 285.292969 192.144531 281.695313 C 192.144531 278.09375 197.546875 278.09375 197.546875 281.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.039063 253.632813 C 226.039063 257.234375 220.636719 257.234375 220.636719 253.632813 C 220.636719 250.035156 226.039063 250.035156 226.039063 253.632813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.710938 221.417969 C 259.710938 225.015625 254.308594 225.015625 254.308594 221.417969 C 254.308594 217.816406 259.710938 217.816406 259.710938 221.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.648438 190.238281 C 295.648438 193.839844 290.25 193.839844 290.25 190.238281 C 290.25 186.636719 295.648438 186.636719 295.648438 190.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 365.585938 136.195313 C 365.585938 139.796875 360.1875 139.796875 360.1875 136.195313 C 360.1875 132.597656 365.585938 132.597656 365.585938 136.195313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.496094 110.214844 C 402.496094 113.8125 397.097656 113.8125 397.097656 110.214844 C 397.097656 106.613281 402.496094 106.613281 402.496094 110.214844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 432.929688 91.507813 C 432.929688 95.105469 427.53125 95.105469 427.53125 91.507813 C 427.53125 87.90625 432.929688 87.90625 432.929688 91.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.988281 L 78.238281 411.320313 L 82.078125 406.675781 L 85.921875 402.058594 L 89.761719 397.464844 L 93.601563 392.894531 L 97.441406 388.351563 L 101.28125 383.835938 L 105.121094 379.34375 L 108.960938 374.878906 L 112.800781 370.433594 L 116.640625 366.019531 L 120.480469 361.628906 L 124.320313 357.261719 L 128.160156 352.921875 L 132 348.605469 L 135.839844 344.316406 L 139.679688 340.050781 L 143.519531 335.8125 L 147.359375 331.597656 L 151.199219 327.40625 L 155.039063 323.242188 L 158.878906 319.105469 L 162.71875 314.992188 L 166.558594 310.902344 L 170.398438 306.839844 L 174.238281 302.800781 L 178.078125 298.789063 L 181.921875 294.800781 L 185.761719 290.839844 L 189.601563 286.902344 L 193.441406 282.992188 L 197.28125 279.105469 L 201.121094 275.242188 L 204.960938 271.410156 L 208.800781 267.597656 L 212.640625 263.8125 L 216.480469 260.050781 L 220.320313 256.316406 L 224.160156 252.609375 L 228 248.921875 L 231.839844 245.265625 L 235.679688 241.628906 L 239.519531 238.023438 L 243.359375 234.4375 L 247.199219 230.878906 L 251.039063 227.347656 L 254.878906 223.839844 L 258.71875 220.355469 L 262.558594 216.898438 L 266.398438 213.46875 L 270.238281 210.0625 L 274.078125 206.679688 L 277.921875 203.324219 L 281.761719 199.992188 L 285.601563 196.6875 L 289.441406 193.40625 L 293.28125 190.152344 L 297.121094 186.921875 L 300.960938 183.714844 L 304.800781 180.535156 L 308.640625 177.382813 L 312.480469 174.253906 L 316.320313 171.148438 L 320.160156 168.070313 L 324 165.019531 L 327.839844 161.988281 L 331.679688 158.988281 L 335.519531 156.007813 L 339.359375 153.058594 L 343.199219 150.128906 L 347.039063 147.226563 L 350.878906 144.351563 L 354.71875 141.5 L 358.558594 138.675781 L 362.398438 135.875 L 366.238281 133.097656 L 370.078125 130.347656 L 373.921875 127.621094 L 377.761719 124.921875 L 381.601563 122.246094 L 385.441406 119.597656 L 389.28125 116.972656 L 393.121094 114.375 L 396.960938 111.800781 L 400.800781 109.253906 L 404.640625 106.730469 L 408.480469 104.230469 L 412.320313 101.757813 L 416.160156 99.3125 L 420 96.890625 L 423.839844 94.492188 L 427.679688 92.121094 L 431.519531 89.773438 L 435.359375 87.453125 L 439.199219 85.15625 L 443.039063 82.886719 L 446.878906 80.640625 L 450.71875 78.421875 L 454.558594 76.226563 L 458.398438 74.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.886719 382.074219 L 78.523438 382.074219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.707031 385.890625 L 74.707031 378.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.171875 371.050781 L 88.808594 371.050781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.992188 374.867188 L 84.992188 367.230469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.890625 352.675781 L 106.527344 352.675781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 102.707031 356.492188 L 102.707031 348.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 116.605469 332.46875 L 124.242188 332.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 120.421875 336.289063 L 120.421875 328.652344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 134.320313 312.265625 L 141.957031 312.265625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 138.136719 316.082031 L 138.136719 308.445313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.175781 295.710938 L 160.8125 295.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.996094 299.53125 L 156.996094 291.894531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.890625 279.164063 L 178.527344 279.164063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 174.710938 282.984375 L 174.710938 275.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.179688 262.617188 L 196.816406 262.617188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 192.996094 266.433594 L 192.996094 258.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 207.464844 246.066406 L 215.101563 246.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 211.285156 249.886719 L 211.285156 242.25 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.324219 227.6875 L 233.960938 227.6875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 230.140625 231.503906 L 230.140625 223.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.039063 212.96875 L 251.675781 212.96875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 247.855469 216.789063 L 247.855469 209.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 262.894531 198.246094 L 270.53125 198.246094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 266.714844 202.066406 L 266.714844 194.429688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 281.753906 185.355469 L 289.390625 185.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 285.574219 189.171875 L 285.574219 181.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.898438 176.164063 L 298.535156 176.164063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 294.714844 179.984375 L 294.714844 172.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.039063 172.464844 L 307.679688 172.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 303.859375 176.28125 L 303.859375 168.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.042969 152.210938 L 335.679688 152.210938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.859375 156.027344 L 331.859375 148.390625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 337.1875 146.679688 L 344.824219 146.679688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.003906 150.496094 L 341.003906 142.859375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.042969 135.617188 L 363.679688 135.617188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 359.863281 139.433594 L 359.863281 131.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.902344 122.722656 L 382.539063 122.722656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 378.71875 126.539063 L 378.71875 118.902344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 393.757813 113.488281 L 401.394531 113.488281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 397.578125 117.304688 L 397.578125 109.667969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.617188 104.253906 L 420.253906 104.253906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 416.4375 108.070313 L 416.4375 100.433594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 431.476563 95.019531 L 439.113281 95.019531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 435.292969 98.835938 L 435.292969 91.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 450.332031 85.785156 L 457.96875 85.785156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.152344 89.601563 L 454.152344 81.964844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.707031 382.585938 L 78.5 378.289063 L 82.292969 374.015625 L 86.089844 369.773438 L 89.882813 365.558594 L 93.679688 361.367188 L 97.472656 357.203125 L 101.265625 353.070313 L 105.0625 348.960938 L 108.855469 344.878906 L 112.652344 340.824219 L 116.445313 336.796875 L 120.238281 332.796875 L 124.035156 328.820313 L 127.828125 324.875 L 131.621094 320.953125 L 135.417969 317.0625 L 139.210938 313.195313 L 143.007813 309.355469 L 146.800781 305.542969 L 150.59375 301.757813 L 154.390625 298 L 158.183594 294.269531 L 161.976563 290.566406 L 165.773438 286.886719 L 169.566406 283.238281 L 173.363281 279.613281 L 177.15625 276.019531 L 180.949219 272.449219 L 184.746094 268.90625 L 188.539063 265.390625 L 192.335938 261.902344 L 196.128906 258.441406 L 199.921875 255.003906 L 203.71875 251.597656 L 207.511719 248.21875 L 211.304688 244.863281 L 215.101563 241.535156 L 218.894531 238.238281 L 222.691406 234.964844 L 226.484375 231.71875 L 230.277344 228.5 L 234.074219 225.308594 L 237.867188 222.140625 L 241.664063 219.003906 L 245.457031 215.894531 L 249.25 212.808594 L 253.046875 209.75 L 256.839844 206.722656 L 260.632813 203.71875 L 264.429688 200.742188 L 268.222656 197.792969 L 272.019531 194.871094 L 275.8125 191.972656 L 279.605469 189.105469 L 283.402344 186.265625 L 287.195313 183.449219 L 290.988281 180.664063 L 294.785156 177.902344 L 298.578125 175.167969 L 302.375 172.460938 L 306.167969 169.78125 L 309.960938 167.128906 L 313.757813 164.503906 L 317.550781 161.90625 L 321.347656 159.332031 L 325.140625 156.789063 L 328.933594 154.269531 L 332.730469 151.777344 L 336.523438 149.316406 L 340.316406 146.878906 L 344.113281 144.46875 L 347.90625 142.085938 L 351.703125 139.730469 L 355.496094 137.398438 L 359.289063 135.097656 L 363.085938 132.820313 L 366.878906 130.574219 L 370.675781 128.351563 L 374.46875 126.15625 L 378.261719 123.992188 L 382.058594 121.851563 L 385.851563 119.738281 L 389.644531 117.648438 L 393.441406 115.589844 L 397.234375 113.558594 L 401.03125 111.550781 L 404.824219 109.574219 L 408.617188 107.621094 L 412.414063 105.695313 L 416.207031 103.800781 L 420.003906 101.929688 L 423.796875 100.085938 L 427.589844 98.269531 L 431.386719 96.476563 L 435.179688 94.714844 L 438.972656 92.980469 L 442.769531 91.269531 L 446.5625 89.585938 L 450.359375 87.933594 L 454.152344 86.304688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-6" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-6" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-6" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-16" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-17" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-18" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-5" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-19" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-17" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-20" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-5" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-6" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-21" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-18" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-16" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-17" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-18" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-1" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-1" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-17" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-5" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-20" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-22" x="439.058594" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_plans_slope_20_.svg b/docs/en/calculators/par/baffle_fishway_plans_slope_20_.svg new file mode 100644 index 0000000000000000000000000000000000000000..0ae4eea08541e182ac313c2f7b78aeebfd691e46 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_plans_slope_20_.svg @@ -0,0 +1,495 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 7.4375 -0.921875 C 7.960938 -0.554688 8.449219 -0.289063 8.894531 -0.125 L 8.5625 0.667969 C 7.9375 0.445313 7.324219 0.09375 6.714844 -0.386719 C 6.074219 -0.03125 5.371094 0.144531 4.605469 0.148438 C 3.824219 0.144531 3.117188 -0.0390625 2.488281 -0.414063 C 1.851563 -0.785156 1.363281 -1.3125 1.027344 -1.996094 C 0.683594 -2.671875 0.515625 -3.4375 0.515625 -4.296875 C 0.515625 -5.140625 0.6875 -5.914063 1.03125 -6.609375 C 1.375 -7.304688 1.863281 -7.832031 2.5 -8.195313 C 3.132813 -8.558594 3.84375 -8.742188 4.628906 -8.742188 C 5.421875 -8.742188 6.136719 -8.550781 6.773438 -8.175781 C 7.40625 -7.792969 7.890625 -7.265625 8.226563 -6.59375 C 8.5625 -5.914063 8.730469 -5.152344 8.730469 -4.300781 C 8.730469 -3.59375 8.621094 -2.957031 8.40625 -2.394531 C 8.191406 -1.828125 7.867188 -1.335938 7.4375 -0.921875 Z M 4.933594 -2.375 C 5.589844 -2.1875 6.128906 -1.914063 6.554688 -1.554688 C 7.222656 -2.160156 7.558594 -3.078125 7.558594 -4.300781 C 7.558594 -4.996094 7.4375 -5.601563 7.203125 -6.121094 C 6.964844 -6.640625 6.621094 -7.042969 6.167969 -7.332031 C 5.710938 -7.617188 5.199219 -7.761719 4.632813 -7.765625 C 3.785156 -7.761719 3.082031 -7.472656 2.523438 -6.894531 C 1.964844 -6.3125 1.6875 -5.445313 1.6875 -4.296875 C 1.6875 -3.171875 1.960938 -2.316406 2.515625 -1.722656 C 3.0625 -1.125 3.769531 -0.824219 4.632813 -0.828125 C 5.035156 -0.824219 5.417969 -0.902344 5.78125 -1.054688 C 5.425781 -1.28125 5.050781 -1.445313 4.65625 -1.546875 Z M 4.933594 -2.375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 0.878906 0 L 0.878906 -8.589844 L 2.015625 -8.589844 L 2.015625 -1.015625 L 6.246094 -1.015625 L 6.246094 0 Z M 0.878906 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph0-21"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M -4.234375 -0.5 C -5.246094 -0.496094 -6.0625 -0.601563 -6.6875 -0.8125 C -7.304688 -1.019531 -7.785156 -1.328125 -8.121094 -1.742188 C -8.457031 -2.152344 -8.625 -2.671875 -8.625 -3.300781 C -8.625 -3.757813 -8.53125 -4.164063 -8.347656 -4.511719 C -8.160156 -4.859375 -7.890625 -5.144531 -7.542969 -5.371094 C -7.191406 -5.59375 -6.765625 -5.773438 -6.265625 -5.90625 C -5.761719 -6.035156 -5.085938 -6.097656 -4.234375 -6.101563 C -3.222656 -6.097656 -2.410156 -5.996094 -1.792969 -5.789063 C -1.175781 -5.578125 -0.695313 -5.265625 -0.359375 -4.859375 C -0.0195313 -4.445313 0.144531 -3.925781 0.148438 -3.296875 C 0.144531 -2.464844 -0.148438 -1.816406 -0.742188 -1.347656 C -1.457031 -0.78125 -2.621094 -0.496094 -4.234375 -0.5 Z M -4.234375 -1.582031 C -2.824219 -1.582031 -1.886719 -1.746094 -1.417969 -2.074219 C -0.949219 -2.402344 -0.714844 -2.808594 -0.71875 -3.296875 C -0.714844 -3.777344 -0.949219 -4.183594 -1.421875 -4.519531 C -1.886719 -4.847656 -2.824219 -5.015625 -4.234375 -5.015625 C -5.648438 -5.015625 -6.589844 -4.847656 -7.054688 -4.519531 C -7.515625 -4.1875 -7.746094 -3.777344 -7.75 -3.289063 C -7.746094 -2.800781 -7.542969 -2.414063 -7.136719 -2.128906 C -6.613281 -1.761719 -5.644531 -1.582031 -4.234375 -1.582031 Z M -4.234375 -1.582031 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M 0 -1.089844 L -1.203125 -1.089844 L -1.199219 -2.289063 L 0 -2.289063 Z M 0 -1.089844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -4.65625 -2.121094 C -4.816406 -1.683594 -5.046875 -1.359375 -5.34375 -1.148438 C -5.640625 -0.9375 -5.996094 -0.832031 -6.410156 -0.832031 C -7.035156 -0.832031 -7.558594 -1.054688 -7.984375 -1.503906 C -8.410156 -1.953125 -8.625 -2.550781 -8.625 -3.300781 C -8.625 -4.046875 -8.40625 -4.652344 -7.972656 -5.109375 C -7.535156 -5.566406 -7.003906 -5.792969 -6.382813 -5.796875 C -5.976563 -5.792969 -5.628906 -5.6875 -5.339844 -5.480469 C -5.042969 -5.269531 -4.816406 -4.953125 -4.65625 -4.53125 C -4.480469 -5.054688 -4.203125 -5.457031 -3.824219 -5.734375 C -3.4375 -6.007813 -2.980469 -6.144531 -2.453125 -6.148438 C -1.714844 -6.144531 -1.097656 -5.886719 -0.601563 -5.367188 C -0.101563 -4.84375 0.144531 -4.160156 0.148438 -3.316406 C 0.144531 -2.46875 -0.101563 -1.785156 -0.605469 -1.265625 C -1.105469 -0.746094 -1.734375 -0.484375 -2.484375 -0.488281 C -3.039063 -0.484375 -3.503906 -0.625 -3.886719 -0.910156 C -4.261719 -1.191406 -4.519531 -1.597656 -4.65625 -2.121094 Z M -6.445313 -1.910156 C -6.039063 -1.910156 -5.707031 -2.039063 -5.449219 -2.300781 C -5.191406 -2.5625 -5.0625 -2.902344 -5.0625 -3.324219 C -5.0625 -3.726563 -5.1875 -4.058594 -5.445313 -4.320313 C -5.695313 -4.578125 -6.011719 -4.710938 -6.386719 -4.710938 C -6.773438 -4.710938 -7.097656 -4.574219 -7.363281 -4.308594 C -7.625 -4.039063 -7.757813 -3.707031 -7.757813 -3.3125 C -7.757813 -2.90625 -7.628906 -2.574219 -7.371094 -2.308594 C -7.113281 -2.042969 -6.804688 -1.910156 -6.445313 -1.910156 Z M -2.476563 -1.570313 C -2.175781 -1.570313 -1.886719 -1.640625 -1.605469 -1.785156 C -1.324219 -1.925781 -1.105469 -2.136719 -0.949219 -2.421875 C -0.792969 -2.699219 -0.714844 -3.003906 -0.71875 -3.328125 C -0.714844 -3.832031 -0.875 -4.246094 -1.203125 -4.578125 C -1.523438 -4.902344 -1.9375 -5.066406 -2.441406 -5.070313 C -2.945313 -5.066406 -3.367188 -4.898438 -3.703125 -4.5625 C -4.035156 -4.222656 -4.199219 -3.800781 -4.203125 -3.292969 C -4.199219 -2.796875 -4.035156 -2.382813 -3.710938 -2.058594 C -3.378906 -1.730469 -2.96875 -1.570313 -2.476563 -1.570313 Z M -2.476563 -1.570313 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -0.878906 L -8.589844 -0.878906 L -8.589844 -2.015625 L -1.011719 -2.015625 L -1.011719 -6.246094 L 0 -6.246094 Z M 0 -0.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-13"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-14"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 7.824219 0 L 5.851563 0 L 5.851563 -3.8125 C 5.847656 -4.613281 5.804688 -5.132813 5.722656 -5.375 C 5.636719 -5.609375 5.5 -5.792969 5.3125 -5.925781 C 5.121094 -6.054688 4.890625 -6.121094 4.625 -6.125 C 4.28125 -6.121094 3.976563 -6.027344 3.703125 -5.84375 C 3.429688 -5.652344 3.242188 -5.40625 3.144531 -5.097656 C 3.042969 -4.785156 2.992188 -4.210938 2.996094 -3.382813 L 2.996094 0 L 1.019531 0 L 1.019531 -7.46875 L 2.855469 -7.46875 L 2.855469 -6.371094 C 3.503906 -7.210938 4.324219 -7.632813 5.316406 -7.636719 C 5.746094 -7.632813 6.144531 -7.554688 6.507813 -7.398438 C 6.867188 -7.238281 7.140625 -7.039063 7.328125 -6.796875 C 7.511719 -6.554688 7.640625 -6.277344 7.714844 -5.96875 C 7.785156 -5.65625 7.820313 -5.214844 7.824219 -4.640625 Z M 7.824219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d="M 7.285156 -1.835938 L 7.285156 0 L 0.359375 0 C 0.429688 -0.691406 0.65625 -1.347656 1.035156 -1.96875 C 1.40625 -2.589844 2.144531 -3.414063 3.253906 -4.445313 C 4.140625 -5.269531 4.6875 -5.832031 4.894531 -6.132813 C 5.160156 -6.535156 5.296875 -6.9375 5.300781 -7.339844 C 5.296875 -7.777344 5.179688 -8.117188 4.945313 -8.355469 C 4.707031 -8.589844 4.378906 -8.707031 3.964844 -8.710938 C 3.550781 -8.707031 3.222656 -8.582031 2.980469 -8.335938 C 2.734375 -8.085938 2.59375 -7.675781 2.558594 -7.101563 L 0.589844 -7.296875 C 0.703125 -8.382813 1.070313 -9.164063 1.691406 -9.640625 C 2.308594 -10.109375 3.082031 -10.347656 4.015625 -10.351563 C 5.027344 -10.347656 5.828125 -10.074219 6.410156 -9.527344 C 6.992188 -8.976563 7.28125 -8.292969 7.285156 -7.480469 C 7.28125 -7.015625 7.199219 -6.574219 7.035156 -6.15625 C 6.867188 -5.734375 6.601563 -5.292969 6.242188 -4.835938 C 6 -4.527344 5.570313 -4.089844 4.949219 -3.519531 C 4.324219 -2.945313 3.929688 -2.566406 3.765625 -2.382813 C 3.597656 -2.191406 3.460938 -2.007813 3.359375 -1.835938 Z M 7.285156 -1.835938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface11"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.890625 404.871094 C 84.890625 408.46875 79.492188 408.46875 79.492188 404.871094 C 79.492188 401.269531 84.890625 401.269531 84.890625 404.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.683594 396.914063 C 92.683594 400.515625 87.28125 400.515625 87.28125 396.914063 C 87.28125 393.316406 92.683594 393.316406 92.683594 396.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.03125 384.984375 C 101.03125 388.585938 95.628906 388.585938 95.628906 384.984375 C 95.628906 381.386719 101.03125 381.386719 101.03125 384.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.273438 371.066406 C 113.273438 374.664063 107.875 374.664063 107.875 371.066406 C 107.875 367.464844 113.273438 367.464844 113.273438 371.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.847656 357.148438 C 123.847656 360.746094 118.449219 360.746094 118.449219 357.148438 C 118.449219 353.546875 123.847656 353.546875 123.847656 357.148438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.753906 347.203125 C 132.753906 350.804688 127.351563 350.804688 127.351563 347.203125 C 127.351563 343.605469 132.753906 343.605469 132.753906 347.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.324219 335.273438 C 143.324219 338.875 137.925781 338.875 137.925781 335.273438 C 137.925781 331.675781 143.324219 331.675781 143.324219 335.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 155.011719 321.355469 C 155.011719 324.953125 149.613281 324.953125 149.613281 321.355469 C 149.613281 317.753906 155.011719 317.753906 155.011719 321.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.699219 307.4375 C 166.699219 311.035156 161.300781 311.035156 161.300781 307.4375 C 161.300781 303.835938 166.699219 303.835938 166.699219 307.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 181.167969 291.527344 C 181.167969 295.128906 175.769531 295.128906 175.769531 291.527344 C 175.769531 287.929688 181.167969 287.929688 181.167969 291.527344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.742188 283.574219 C 191.742188 287.175781 186.34375 287.175781 186.34375 283.574219 C 186.34375 279.972656 191.742188 279.972656 191.742188 283.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.875 269.65625 C 202.875 273.253906 197.472656 273.253906 197.472656 269.65625 C 197.472656 266.054688 202.875 266.054688 202.875 269.65625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 217.34375 257.726563 C 217.34375 261.324219 211.945313 261.324219 211.945313 257.726563 C 211.945313 254.125 217.34375 254.125 217.34375 257.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.246094 247.78125 C 226.246094 251.382813 220.847656 251.382813 220.847656 247.78125 C 220.847656 244.183594 226.246094 244.183594 226.246094 247.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.820313 235.851563 C 236.820313 239.453125 231.421875 239.453125 231.421875 235.851563 C 231.421875 232.253906 236.820313 232.253906 236.820313 235.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 251.292969 223.921875 C 251.292969 227.519531 245.890625 227.519531 245.890625 223.921875 C 245.890625 220.320313 251.292969 220.320313 251.292969 223.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261.863281 211.992188 C 261.863281 215.589844 256.464844 215.589844 256.464844 211.992188 C 256.464844 208.390625 261.863281 208.390625 261.863281 211.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.890625 200.058594 C 276.890625 203.660156 271.492188 203.660156 271.492188 200.058594 C 271.492188 196.460938 276.890625 196.460938 276.890625 200.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.691406 188.128906 C 289.691406 191.730469 284.292969 191.730469 284.292969 188.128906 C 284.292969 184.53125 289.691406 184.53125 289.691406 188.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 301.933594 180.175781 C 301.933594 183.777344 296.535156 183.777344 296.535156 180.175781 C 296.535156 176.574219 301.933594 176.574219 301.933594 180.175781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.074219 166.257813 C 318.074219 169.855469 312.675781 169.855469 312.675781 166.257813 C 312.675781 162.65625 318.074219 162.65625 318.074219 166.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.429688 154.324219 C 331.429688 157.925781 326.03125 157.925781 326.03125 154.324219 C 326.03125 150.726563 331.429688 150.726563 331.429688 154.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.785156 146.371094 C 344.785156 149.972656 339.386719 149.972656 339.386719 146.371094 C 339.386719 142.773438 344.785156 142.773438 344.785156 146.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 354.804688 138.417969 C 354.804688 142.019531 349.40625 142.019531 349.40625 138.417969 C 349.40625 134.820313 354.804688 134.820313 354.804688 138.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.046875 130.464844 C 367.046875 134.066406 361.648438 134.066406 361.648438 130.464844 C 361.648438 126.863281 367.046875 126.863281 367.046875 130.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.855469 118.535156 C 384.855469 122.132813 379.457031 122.132813 379.457031 118.535156 C 379.457031 114.933594 384.855469 114.933594 384.855469 118.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.324219 110.582031 C 399.324219 114.179688 393.925781 114.179688 393.925781 110.582031 C 393.925781 106.980469 399.324219 106.980469 399.324219 110.582031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.683594 100.636719 C 412.683594 104.238281 407.28125 104.238281 407.28125 100.636719 C 407.28125 97.039063 412.683594 97.039063 412.683594 100.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.492188 88.707031 C 430.492188 92.308594 425.089844 92.308594 425.089844 88.707031 C 425.089844 85.109375 430.492188 85.109375 430.492188 88.707031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.40625 82.742188 C 444.40625 86.34375 439.003906 86.34375 439.003906 82.742188 C 439.003906 79.140625 444.40625 79.140625 444.40625 82.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.609375 430.558594 L 458.957031 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.609375 430.558594 L 66.609375 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.660156 430.558594 L 122.660156 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 178.707031 430.558594 L 178.707031 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.757813 430.558594 L 234.757813 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 290.808594 430.558594 L 290.808594 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 346.855469 430.558594 L 346.855469 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 402.90625 430.558594 L 402.90625 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.957031 430.558594 L 458.957031 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="54.929688" y="456.480469"/> + <use xlink:href="#glyph0-2" x="61.603516" y="456.480469"/> + <use xlink:href="#glyph0-1" x="64.9375" y="456.480469"/> + <use xlink:href="#glyph0-1" x="71.611328" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="110.980469" y="456.480469"/> + <use xlink:href="#glyph0-2" x="117.654297" y="456.480469"/> + <use xlink:href="#glyph0-1" x="120.988281" y="456.480469"/> + <use xlink:href="#glyph0-3" x="127.662109" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="167.027344" y="456.480469"/> + <use xlink:href="#glyph0-2" x="173.701172" y="456.480469"/> + <use xlink:href="#glyph0-4" x="177.035156" y="456.480469"/> + <use xlink:href="#glyph0-1" x="183.708984" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="223.078125" y="456.480469"/> + <use xlink:href="#glyph0-2" x="229.751953" y="456.480469"/> + <use xlink:href="#glyph0-4" x="233.085938" y="456.480469"/> + <use xlink:href="#glyph0-3" x="239.759766" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="279.128906" y="456.480469"/> + <use xlink:href="#glyph0-2" x="285.802734" y="456.480469"/> + <use xlink:href="#glyph0-5" x="289.136719" y="456.480469"/> + <use xlink:href="#glyph0-1" x="295.810547" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="335.175781" y="456.480469"/> + <use xlink:href="#glyph0-2" x="341.849609" y="456.480469"/> + <use xlink:href="#glyph0-5" x="345.183594" y="456.480469"/> + <use xlink:href="#glyph0-3" x="351.857422" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="391.226563" y="456.480469"/> + <use xlink:href="#glyph0-2" x="397.900391" y="456.480469"/> + <use xlink:href="#glyph0-6" x="401.234375" y="456.480469"/> + <use xlink:href="#glyph0-1" x="407.908203" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="447.277344" y="456.480469"/> + <use xlink:href="#glyph0-2" x="453.951172" y="456.480469"/> + <use xlink:href="#glyph0-6" x="457.285156" y="456.480469"/> + <use xlink:href="#glyph0-3" x="463.958984" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 424.46875 L 59.039063 65.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 424.46875 L 51.839844 424.46875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 352.601563 L 51.839844 352.601563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 280.734375 L 51.839844 280.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 208.867188 L 51.839844 208.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 137 L 51.839844 137 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 65.128906 L 51.839844 65.128906 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="432.808594"/> + <use xlink:href="#glyph1-2" x="41.761719" y="426.134766"/> + <use xlink:href="#glyph1-3" x="41.761719" y="422.800781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="360.941406"/> + <use xlink:href="#glyph1-2" x="41.761719" y="354.267578"/> + <use xlink:href="#glyph1-4" x="41.761719" y="350.933594"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="289.074219"/> + <use xlink:href="#glyph1-2" x="41.761719" y="282.400391"/> + <use xlink:href="#glyph1-5" x="41.761719" y="279.066406"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="217.207031"/> + <use xlink:href="#glyph1-2" x="41.761719" y="210.533203"/> + <use xlink:href="#glyph1-6" x="41.761719" y="207.199219"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="145.339844"/> + <use xlink:href="#glyph1-2" x="41.761719" y="138.666016"/> + <use xlink:href="#glyph1-1" x="41.761719" y="135.332031"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="41.761719" y="73.46875"/> + <use xlink:href="#glyph1-2" x="41.761719" y="66.794922"/> + <use xlink:href="#glyph1-3" x="41.761719" y="63.460938"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="190.96875" y="34.675781"/> + <use xlink:href="#glyph2-2" x="199.764844" y="34.675781"/> + <use xlink:href="#glyph2-3" x="203.765625" y="34.675781"/> + <use xlink:href="#glyph2-4" x="211.774219" y="34.675781"/> + <use xlink:href="#glyph2-5" x="220.570313" y="34.675781"/> + <use xlink:href="#glyph2-6" x="228.578906" y="34.675781"/> + <use xlink:href="#glyph2-7" x="232.579687" y="34.675781"/> + <use xlink:href="#glyph2-3" x="241.375781" y="34.675781"/> + <use xlink:href="#glyph2-8" x="249.384375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="254.179687" y="34.675781"/> + <use xlink:href="#glyph2-2" x="258.975" y="34.675781"/> + <use xlink:href="#glyph2-9" x="262.975781" y="34.675781"/> + <use xlink:href="#glyph2-5" x="270.984375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="278.992969" y="34.675781"/> + <use xlink:href="#glyph2-10" x="282.99375" y="34.675781"/> + <use xlink:href="#glyph2-6" x="292.598437" y="34.675781"/> + <use xlink:href="#glyph2-11" x="296.599219" y="34.675781"/> + <use xlink:href="#glyph2-6" x="305.008594" y="34.675781"/> + <use xlink:href="#glyph2-12" x="309.009375" y="34.675781"/> + <use xlink:href="#glyph2-13" x="317.017969" y="34.675781"/> + <use xlink:href="#glyph2-6" x="325.026562" y="34.675781"/> + <use xlink:href="#glyph2-14" x="329.027344" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-7" x="259.398438" y="485.28125"/> + <use xlink:href="#glyph0-8" x="268.732422" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-8" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-9" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-10" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-11" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-12" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-13" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-14" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-12" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-8" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-10" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-11" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 416.800781 C 77.101563 420.398438 71.699219 420.398438 71.699219 416.800781 C 71.699219 413.199219 77.101563 413.199219 77.101563 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.890625 404.871094 C 84.890625 408.46875 79.492188 408.46875 79.492188 404.871094 C 79.492188 401.269531 84.890625 401.269531 84.890625 404.871094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.683594 396.914063 C 92.683594 400.515625 87.28125 400.515625 87.28125 396.914063 C 87.28125 393.316406 92.683594 393.316406 92.683594 396.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 101.03125 384.984375 C 101.03125 388.585938 95.628906 388.585938 95.628906 384.984375 C 95.628906 381.386719 101.03125 381.386719 101.03125 384.984375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 113.273438 371.066406 C 113.273438 374.664063 107.875 374.664063 107.875 371.066406 C 107.875 367.464844 113.273438 367.464844 113.273438 371.066406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 123.847656 357.148438 C 123.847656 360.746094 118.449219 360.746094 118.449219 357.148438 C 118.449219 353.546875 123.847656 353.546875 123.847656 357.148438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.753906 347.203125 C 132.753906 350.804688 127.351563 350.804688 127.351563 347.203125 C 127.351563 343.605469 132.753906 343.605469 132.753906 347.203125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 143.324219 335.273438 C 143.324219 338.875 137.925781 338.875 137.925781 335.273438 C 137.925781 331.675781 143.324219 331.675781 143.324219 335.273438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 155.011719 321.355469 C 155.011719 324.953125 149.613281 324.953125 149.613281 321.355469 C 149.613281 317.753906 155.011719 317.753906 155.011719 321.355469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.699219 307.4375 C 166.699219 311.035156 161.300781 311.035156 161.300781 307.4375 C 161.300781 303.835938 166.699219 303.835938 166.699219 307.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 181.167969 291.527344 C 181.167969 295.128906 175.769531 295.128906 175.769531 291.527344 C 175.769531 287.929688 181.167969 287.929688 181.167969 291.527344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 191.742188 283.574219 C 191.742188 287.175781 186.34375 287.175781 186.34375 283.574219 C 186.34375 279.972656 191.742188 279.972656 191.742188 283.574219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.875 269.65625 C 202.875 273.253906 197.472656 273.253906 197.472656 269.65625 C 197.472656 266.054688 202.875 266.054688 202.875 269.65625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 217.34375 257.726563 C 217.34375 261.324219 211.945313 261.324219 211.945313 257.726563 C 211.945313 254.125 217.34375 254.125 217.34375 257.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.246094 247.78125 C 226.246094 251.382813 220.847656 251.382813 220.847656 247.78125 C 220.847656 244.183594 226.246094 244.183594 226.246094 247.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 236.820313 235.851563 C 236.820313 239.453125 231.421875 239.453125 231.421875 235.851563 C 231.421875 232.253906 236.820313 232.253906 236.820313 235.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 251.292969 223.921875 C 251.292969 227.519531 245.890625 227.519531 245.890625 223.921875 C 245.890625 220.320313 251.292969 220.320313 251.292969 223.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 261.863281 211.992188 C 261.863281 215.589844 256.464844 215.589844 256.464844 211.992188 C 256.464844 208.390625 261.863281 208.390625 261.863281 211.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.890625 200.058594 C 276.890625 203.660156 271.492188 203.660156 271.492188 200.058594 C 271.492188 196.460938 276.890625 196.460938 276.890625 200.058594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 289.691406 188.128906 C 289.691406 191.730469 284.292969 191.730469 284.292969 188.128906 C 284.292969 184.53125 289.691406 184.53125 289.691406 188.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 301.933594 180.175781 C 301.933594 183.777344 296.535156 183.777344 296.535156 180.175781 C 296.535156 176.574219 301.933594 176.574219 301.933594 180.175781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 318.074219 166.257813 C 318.074219 169.855469 312.675781 169.855469 312.675781 166.257813 C 312.675781 162.65625 318.074219 162.65625 318.074219 166.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 331.429688 154.324219 C 331.429688 157.925781 326.03125 157.925781 326.03125 154.324219 C 326.03125 150.726563 331.429688 150.726563 331.429688 154.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.785156 146.371094 C 344.785156 149.972656 339.386719 149.972656 339.386719 146.371094 C 339.386719 142.773438 344.785156 142.773438 344.785156 146.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 354.804688 138.417969 C 354.804688 142.019531 349.40625 142.019531 349.40625 138.417969 C 349.40625 134.820313 354.804688 134.820313 354.804688 138.417969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.046875 130.464844 C 367.046875 134.066406 361.648438 134.066406 361.648438 130.464844 C 361.648438 126.863281 367.046875 126.863281 367.046875 130.464844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 384.855469 118.535156 C 384.855469 122.132813 379.457031 122.132813 379.457031 118.535156 C 379.457031 114.933594 384.855469 114.933594 384.855469 118.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.324219 110.582031 C 399.324219 114.179688 393.925781 114.179688 393.925781 110.582031 C 393.925781 106.980469 399.324219 106.980469 399.324219 110.582031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 412.683594 100.636719 C 412.683594 104.238281 407.28125 104.238281 407.28125 100.636719 C 407.28125 97.039063 412.683594 97.039063 412.683594 100.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.492188 88.707031 C 430.492188 92.308594 425.089844 92.308594 425.089844 88.707031 C 425.089844 85.109375 430.492188 85.109375 430.492188 88.707031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 444.40625 82.742188 C 444.40625 86.34375 439.003906 86.34375 439.003906 82.742188 C 439.003906 79.140625 444.40625 79.140625 444.40625 82.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 415.53125 L 78.238281 410.625 L 82.078125 405.746094 L 85.921875 400.898438 L 89.761719 396.082031 L 93.601563 391.296875 L 97.441406 386.539063 L 101.28125 381.8125 L 105.121094 377.113281 L 108.960938 372.449219 L 112.800781 367.8125 L 116.640625 363.207031 L 120.480469 358.628906 L 124.320313 354.082031 L 128.160156 349.566406 L 132 345.082031 L 135.839844 340.625 L 139.679688 336.199219 L 143.519531 331.804688 L 147.359375 327.441406 L 151.199219 323.105469 L 155.039063 318.800781 L 158.878906 314.527344 L 162.71875 310.28125 L 166.558594 306.066406 L 170.398438 301.882813 L 174.238281 297.726563 L 178.078125 293.605469 L 181.921875 289.511719 L 185.761719 285.445313 L 189.601563 281.414063 L 193.441406 277.410156 L 197.28125 273.4375 L 201.121094 269.492188 L 204.960938 265.582031 L 208.800781 261.699219 L 212.640625 257.84375 L 216.480469 254.023438 L 220.320313 250.230469 L 224.160156 246.46875 L 228 242.734375 L 231.839844 239.035156 L 235.679688 235.363281 L 239.519531 231.722656 L 243.359375 228.109375 L 247.199219 224.527344 L 251.039063 220.976563 L 254.878906 217.457031 L 258.71875 213.964844 L 262.558594 210.503906 L 266.398438 207.074219 L 270.238281 203.671875 L 274.078125 200.300781 L 277.921875 196.960938 L 281.761719 193.652344 L 285.601563 190.371094 L 289.441406 187.121094 L 293.28125 183.902344 L 297.121094 180.714844 L 300.960938 177.554688 L 304.800781 174.425781 L 308.640625 171.328125 L 312.480469 168.257813 L 316.320313 165.21875 L 320.160156 162.210938 L 324 159.230469 L 327.839844 156.285156 L 331.679688 153.367188 L 335.519531 150.476563 L 339.359375 147.621094 L 343.199219 144.792969 L 347.039063 141.996094 L 350.878906 139.226563 L 354.71875 136.488281 L 358.558594 133.78125 L 362.398438 131.105469 L 366.238281 128.457031 L 370.078125 125.84375 L 373.921875 123.253906 L 377.761719 120.699219 L 381.601563 118.171875 L 385.441406 115.675781 L 389.28125 113.210938 L 393.121094 110.777344 L 396.960938 108.371094 L 400.800781 105.996094 L 404.640625 103.648438 L 408.480469 101.332031 L 412.320313 99.046875 L 416.160156 96.792969 L 420 94.570313 L 423.839844 92.375 L 427.679688 90.210938 L 431.519531 88.074219 L 435.359375 85.972656 L 439.199219 83.898438 L 443.039063 81.855469 L 446.878906 79.839844 L 450.71875 77.855469 L 454.558594 75.902344 L 458.398438 73.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 382.996094 L 78.21875 382.996094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 386.816406 L 74.398438 379.179688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 88.945313 363.113281 L 96.582031 363.113281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.765625 366.929688 L 92.765625 359.292969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.3125 341.238281 L 114.949219 341.238281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 111.128906 345.058594 L 111.128906 337.421875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 125.675781 319.367188 L 133.3125 319.367188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.496094 323.183594 L 129.496094 315.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 152.945313 291.527344 L 160.582031 291.527344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 156.765625 295.347656 L 156.765625 287.710938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 171.3125 271.644531 L 178.949219 271.644531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.128906 275.460938 L 175.128906 267.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 189.121094 251.757813 L 196.757813 251.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 192.9375 255.578125 L 192.9375 247.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 208.042969 235.851563 L 215.679688 235.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 211.859375 239.671875 L 211.859375 232.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 226.964844 219.945313 L 234.601563 219.945313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 230.78125 223.761719 L 230.78125 216.125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 245.328125 204.035156 L 252.964844 204.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 249.148438 207.855469 L 249.148438 200.21875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 272.597656 182.164063 L 280.234375 182.164063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.417969 185.984375 L 276.417969 178.347656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 291.519531 166.257813 L 299.15625 166.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 295.339844 170.074219 L 295.339844 162.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 310.441406 154.324219 L 318.078125 154.324219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 314.261719 158.144531 L 314.261719 150.507813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.808594 142.394531 L 336.445313 142.394531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 332.625 146.214844 L 332.625 138.578125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 348.285156 132.453125 L 355.921875 132.453125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 352.105469 136.273438 L 352.105469 128.636719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 367.207031 120.523438 L 374.84375 120.523438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 371.027344 124.339844 L 371.027344 116.703125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 395.589844 104.613281 L 403.226563 104.613281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.410156 108.433594 L 399.410156 100.796875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.417969 92.683594 L 431.054688 92.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.234375 96.503906 L 427.234375 88.867188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.894531 84.730469 L 450.53125 84.730469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.714844 88.550781 L 446.714844 80.914063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 452.910156 82.742188 L 460.546875 82.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 456.730469 86.5625 L 456.730469 78.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 384.386719 L 78.222656 379.664063 L 82.046875 374.980469 L 85.871094 370.324219 L 89.691406 365.707031 L 93.515625 361.125 L 97.339844 356.574219 L 101.164063 352.058594 L 104.988281 347.578125 L 108.808594 343.128906 L 112.632813 338.71875 L 116.457031 334.339844 L 120.28125 329.996094 L 124.101563 325.683594 L 127.925781 321.410156 L 131.75 317.167969 L 135.574219 312.960938 L 139.394531 308.789063 L 143.21875 304.648438 L 147.042969 300.542969 L 150.867188 296.472656 L 154.6875 292.4375 L 158.511719 288.4375 L 162.335938 284.46875 L 166.160156 280.535156 L 169.984375 276.636719 L 173.804688 272.773438 L 177.628906 268.945313 L 181.453125 265.148438 L 185.277344 261.386719 L 189.097656 257.660156 L 192.921875 253.964844 L 196.746094 250.308594 L 200.570313 246.683594 L 204.390625 243.09375 L 208.214844 239.535156 L 212.039063 236.015625 L 215.863281 232.527344 L 219.6875 229.074219 L 223.507813 225.65625 L 227.332031 222.269531 L 231.15625 218.921875 L 234.980469 215.605469 L 238.800781 212.324219 L 242.625 209.074219 L 246.449219 205.863281 L 250.273438 202.683594 L 254.09375 199.539063 L 257.917969 196.429688 L 261.742188 193.351563 L 265.566406 190.308594 L 269.386719 187.300781 L 273.210938 184.328125 L 277.035156 181.390625 L 280.859375 178.484375 L 284.683594 175.613281 L 288.503906 172.777344 L 292.328125 169.976563 L 296.152344 167.210938 L 299.976563 164.476563 L 303.796875 161.777344 L 307.621094 159.113281 L 311.445313 156.480469 L 315.269531 153.886719 L 319.089844 151.324219 L 322.914063 148.796875 L 326.738281 146.300781 L 330.5625 143.84375 L 334.382813 141.417969 L 338.207031 139.027344 L 342.03125 136.671875 L 345.855469 134.347656 L 349.679688 132.0625 L 353.5 129.808594 L 357.324219 127.589844 L 361.148438 125.402344 L 364.972656 123.253906 L 368.792969 121.136719 L 372.617188 119.054688 L 376.441406 117.003906 L 380.265625 114.992188 L 384.085938 113.011719 L 387.910156 111.066406 L 391.734375 109.15625 L 395.558594 107.28125 L 399.382813 105.4375 L 403.203125 103.628906 L 407.027344 101.855469 L 410.851563 100.117188 L 414.675781 98.410156 L 418.496094 96.742188 L 422.320313 95.105469 L 426.144531 93.5 L 429.96875 91.933594 L 433.789063 90.398438 L 437.613281 88.898438 L 441.4375 87.433594 L 445.261719 86.003906 L 449.082031 84.605469 L 452.90625 83.246094 L 456.730469 81.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="332.292969"/> + <use xlink:href="#glyph0-10" x="270.314453" y="332.292969"/> + <use xlink:href="#glyph0-11" x="276.988281" y="332.292969"/> + <use xlink:href="#glyph0-12" x="280.322266" y="332.292969"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-10" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-11" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-12" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-13" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-14" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-13" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-15" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-13" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-6" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-3" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-16" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-7" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-8" x="340.691406" y="346.695313"/> + <use xlink:href="#glyph0-17" x="345.361328" y="346.695313"/> + <use xlink:href="#glyph0-5" x="350.992188" y="346.695313"/> + <use xlink:href="#glyph0-13" x="357.666016" y="346.695313"/> + <use xlink:href="#glyph0-18" x="361" y="346.695313"/> + <use xlink:href="#glyph0-13" x="368.007813" y="346.695313"/> + <use xlink:href="#glyph0-19" x="371.341797" y="346.695313"/> + <use xlink:href="#glyph0-2" x="378.015625" y="346.695313"/> + <use xlink:href="#glyph0-1" x="381.349609" y="346.695313"/> + <use xlink:href="#glyph0-3" x="388.023438" y="346.695313"/> + <use xlink:href="#glyph0-7" x="394.697266" y="346.695313"/> + <use xlink:href="#glyph0-8" x="404.03125" y="346.695313"/> + <use xlink:href="#glyph0-13" x="408.701172" y="346.695313"/> + <use xlink:href="#glyph0-18" x="412.035156" y="346.695313"/> + <use xlink:href="#glyph0-13" x="419.042969" y="346.695313"/> + <use xlink:href="#glyph0-1" x="422.376953" y="346.695313"/> + <use xlink:href="#glyph0-2" x="429.050781" y="346.695313"/> + <use xlink:href="#glyph0-4" x="432.384766" y="346.695313"/> + <use xlink:href="#glyph0-20" x="439.058594" y="346.695313"/> + <use xlink:href="#glyph0-16" x="445.732422" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-11" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-12" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-9" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-12" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-13" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-14" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-13" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-15" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-13" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-19" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-4" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-1" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-7" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-8" x="334.017578" y="375.496094"/> + <use xlink:href="#glyph0-17" x="338.6875" y="375.496094"/> + <use xlink:href="#glyph0-5" x="344.318359" y="375.496094"/> + <use xlink:href="#glyph0-13" x="350.992188" y="375.496094"/> + <use xlink:href="#glyph0-18" x="354.326172" y="375.496094"/> + <use xlink:href="#glyph0-13" x="361.333984" y="375.496094"/> + <use xlink:href="#glyph0-6" x="364.667969" y="375.496094"/> + <use xlink:href="#glyph0-2" x="371.341797" y="375.496094"/> + <use xlink:href="#glyph0-20" x="374.675781" y="375.496094"/> + <use xlink:href="#glyph0-5" x="381.349609" y="375.496094"/> + <use xlink:href="#glyph0-7" x="388.023438" y="375.496094"/> + <use xlink:href="#glyph0-8" x="397.357422" y="375.496094"/> + <use xlink:href="#glyph0-13" x="402.027344" y="375.496094"/> + <use xlink:href="#glyph0-18" x="405.361328" y="375.496094"/> + <use xlink:href="#glyph0-13" x="412.369141" y="375.496094"/> + <use xlink:href="#glyph0-1" x="415.703125" y="375.496094"/> + <use xlink:href="#glyph0-2" x="422.376953" y="375.496094"/> + <use xlink:href="#glyph0-5" x="425.710938" y="375.496094"/> + <use xlink:href="#glyph0-21" x="432.384766" y="375.496094"/> + <use xlink:href="#glyph0-19" x="439.058594" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_suractif_slope_10_.svg b/docs/en/calculators/par/baffle_fishway_suractif_slope_10_.svg new file mode 100644 index 0000000000000000000000000000000000000000..b115164fc43c6f33d6f9eec6f988ceb566e9dff7 --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_suractif_slope_10_.svg @@ -0,0 +1,451 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.65625 -1.984375 L 1.671875 -2.078125 C 1.75 -1.601563 1.914063 -1.257813 2.160156 -1.042969 C 2.398438 -0.824219 2.710938 -0.714844 3.09375 -0.71875 C 3.414063 -0.714844 3.695313 -0.789063 3.945313 -0.941406 C 4.1875 -1.085938 4.390625 -1.285156 4.546875 -1.535156 C 4.703125 -1.785156 4.832031 -2.121094 4.9375 -2.542969 C 5.042969 -2.964844 5.097656 -3.394531 5.097656 -3.832031 C 5.097656 -3.878906 5.09375 -3.949219 5.09375 -4.042969 C 4.875 -3.707031 4.585938 -3.433594 4.226563 -3.226563 C 3.859375 -3.015625 3.464844 -2.910156 3.039063 -2.914063 C 2.328125 -2.910156 1.726563 -3.167969 1.238281 -3.6875 C 0.742188 -4.199219 0.496094 -4.878906 0.5 -5.726563 C 0.496094 -6.59375 0.753906 -7.296875 1.269531 -7.828125 C 1.78125 -8.359375 2.425781 -8.625 3.199219 -8.625 C 3.757813 -8.625 4.265625 -8.472656 4.730469 -8.171875 C 5.191406 -7.871094 5.542969 -7.441406 5.785156 -6.886719 C 6.023438 -6.328125 6.144531 -5.523438 6.148438 -4.46875 C 6.144531 -3.371094 6.027344 -2.496094 5.789063 -1.847656 C 5.546875 -1.195313 5.191406 -0.703125 4.722656 -0.363281 C 4.253906 -0.0234375 3.703125 0.144531 3.070313 0.148438 C 2.398438 0.144531 1.847656 -0.0390625 1.421875 -0.410156 C 0.996094 -0.785156 0.742188 -1.308594 0.65625 -1.984375 Z M 4.976563 -5.777344 C 4.972656 -6.382813 4.8125 -6.863281 4.492188 -7.21875 C 4.167969 -7.570313 3.78125 -7.746094 3.328125 -7.75 C 2.859375 -7.746094 2.449219 -7.554688 2.101563 -7.175781 C 1.753906 -6.789063 1.582031 -6.292969 1.582031 -5.6875 C 1.582031 -5.136719 1.746094 -4.691406 2.074219 -4.355469 C 2.402344 -4.011719 2.808594 -3.84375 3.296875 -3.84375 C 3.785156 -3.84375 4.1875 -4.011719 4.503906 -4.355469 C 4.816406 -4.691406 4.972656 -5.167969 4.976563 -5.777344 Z M 4.976563 -5.777344 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M -6.484375 -5.96875 L -6.40625 -4.921875 C -6.8125 -4.828125 -7.113281 -4.695313 -7.304688 -4.523438 C -7.605469 -4.238281 -7.757813 -3.886719 -7.757813 -3.46875 C -7.757813 -3.132813 -7.664063 -2.835938 -7.476563 -2.585938 C -7.234375 -2.25 -6.878906 -1.988281 -6.414063 -1.796875 C -5.949219 -1.605469 -5.289063 -1.507813 -4.429688 -1.5 C -4.8125 -1.753906 -5.097656 -2.0625 -5.289063 -2.433594 C -5.472656 -2.796875 -5.566406 -3.183594 -5.570313 -3.585938 C -5.566406 -4.289063 -5.308594 -4.886719 -4.792969 -5.382813 C -4.277344 -5.875 -3.609375 -6.121094 -2.789063 -6.125 C -2.25 -6.121094 -1.746094 -6.003906 -1.285156 -5.773438 C -0.816406 -5.539063 -0.460938 -5.222656 -0.21875 -4.816406 C 0.0273438 -4.410156 0.144531 -3.949219 0.148438 -3.433594 C 0.144531 -2.554688 -0.175781 -1.835938 -0.820313 -1.285156 C -1.46875 -0.726563 -2.535156 -0.449219 -4.019531 -0.453125 C -5.675781 -0.449219 -6.882813 -0.757813 -7.640625 -1.371094 C -8.296875 -1.90625 -8.625 -2.625 -8.625 -3.535156 C -8.625 -4.207031 -8.433594 -4.761719 -8.054688 -5.195313 C -7.675781 -5.625 -7.152344 -5.882813 -6.484375 -5.96875 Z M -2.78125 -1.664063 C -2.417969 -1.664063 -2.070313 -1.738281 -1.738281 -1.894531 C -1.40625 -2.042969 -1.152344 -2.261719 -0.980469 -2.542969 C -0.800781 -2.820313 -0.714844 -3.109375 -0.71875 -3.414063 C -0.714844 -3.859375 -0.894531 -4.242188 -1.257813 -4.566406 C -1.613281 -4.882813 -2.101563 -5.042969 -2.722656 -5.046875 C -3.3125 -5.042969 -3.78125 -4.886719 -4.125 -4.570313 C -4.46875 -4.25 -4.640625 -3.851563 -4.640625 -3.375 C -4.640625 -2.898438 -4.46875 -2.492188 -4.128906 -2.160156 C -3.785156 -1.828125 -3.335938 -1.664063 -2.78125 -1.664063 Z M -2.78125 -1.664063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-12"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.808594 -2.75 L 0.808594 -4.726563 L 4.691406 -4.726563 L 4.691406 -2.75 Z M 0.808594 -2.75 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 7.542969 -5.257813 L 5.597656 -4.90625 C 5.527344 -5.292969 5.378906 -5.585938 5.148438 -5.785156 C 4.914063 -5.980469 4.613281 -6.082031 4.246094 -6.082031 C 3.75 -6.082031 3.355469 -5.910156 3.066406 -5.570313 C 2.769531 -5.230469 2.625 -4.664063 2.628906 -3.867188 C 2.625 -2.980469 2.773438 -2.351563 3.074219 -1.988281 C 3.371094 -1.621094 3.769531 -1.441406 4.273438 -1.441406 C 4.644531 -1.441406 4.953125 -1.546875 5.195313 -1.761719 C 5.433594 -1.972656 5.601563 -2.339844 5.703125 -2.863281 L 7.644531 -2.53125 C 7.4375 -1.640625 7.050781 -0.964844 6.480469 -0.511719 C 5.910156 -0.0585938 5.144531 0.164063 4.183594 0.167969 C 3.089844 0.164063 2.21875 -0.175781 1.570313 -0.863281 C 0.921875 -1.550781 0.597656 -2.507813 0.597656 -3.726563 C 0.597656 -4.957031 0.921875 -5.914063 1.574219 -6.605469 C 2.222656 -7.289063 3.105469 -7.632813 4.21875 -7.636719 C 5.125 -7.632813 5.847656 -7.4375 6.386719 -7.046875 C 6.921875 -6.652344 7.304688 -6.054688 7.542969 -5.257813 Z M 7.542969 -5.257813 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 1.035156 -8.480469 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 -8.480469 Z M 1.035156 0 L 1.035156 -7.46875 L 3.007813 -7.46875 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-19"> +<path style="stroke:none;" d="M 3.953125 -10.351563 C 4.949219 -10.347656 5.730469 -9.992188 6.292969 -9.28125 C 6.960938 -8.4375 7.292969 -7.035156 7.296875 -5.082031 C 7.292969 -3.128906 6.957031 -1.730469 6.285156 -0.878906 C 5.726563 -0.175781 4.949219 0.175781 3.953125 0.175781 C 2.945313 0.175781 2.136719 -0.207031 1.523438 -0.980469 C 0.910156 -1.746094 0.601563 -3.121094 0.605469 -5.105469 C 0.601563 -7.042969 0.941406 -8.441406 1.617188 -9.296875 C 2.171875 -9.996094 2.949219 -10.347656 3.953125 -10.351563 Z M 3.953125 -8.710938 C 3.710938 -8.707031 3.496094 -8.628906 3.3125 -8.480469 C 3.121094 -8.324219 2.976563 -8.054688 2.875 -7.664063 C 2.738281 -7.152344 2.671875 -6.289063 2.671875 -5.082031 C 2.671875 -3.871094 2.730469 -3.042969 2.855469 -2.589844 C 2.972656 -2.136719 3.128906 -1.835938 3.316406 -1.6875 C 3.5 -1.535156 3.710938 -1.457031 3.953125 -1.460938 C 4.1875 -1.457031 4.398438 -1.535156 4.589844 -1.6875 C 4.773438 -1.839844 4.921875 -2.113281 5.027344 -2.511719 C 5.160156 -3.015625 5.226563 -3.871094 5.230469 -5.082031 C 5.226563 -6.289063 5.164063 -7.121094 5.046875 -7.574219 C 4.921875 -8.023438 4.769531 -8.324219 4.585938 -8.480469 C 4.398438 -8.628906 4.1875 -8.707031 3.953125 -8.710938 Z M 3.953125 -8.710938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-20"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface31"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.375 C 77.101563 406.976563 71.699219 406.976563 71.699219 403.375 C 71.699219 399.777344 77.101563 399.777344 77.101563 403.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.023438 379.882813 C 99.023438 383.484375 93.625 383.484375 93.625 379.882813 C 93.625 376.28125 99.023438 376.28125 99.023438 379.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.304688 364.78125 C 114.304688 368.378906 108.902344 368.378906 108.902344 364.78125 C 108.902344 361.179688 114.304688 361.179688 114.304688 364.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 130.25 348 C 130.25 351.601563 124.847656 351.601563 124.847656 348 C 124.847656 344.398438 130.25 344.398438 130.25 348 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 150.179688 327.863281 C 150.179688 331.464844 144.78125 331.464844 144.78125 327.863281 C 144.78125 324.261719 150.179688 324.261719 150.179688 327.863281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.773438 307.726563 C 170.773438 311.328125 165.375 311.328125 165.375 307.726563 C 165.375 304.125 170.773438 304.125 170.773438 307.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.019531 282.554688 C 196.019531 286.15625 190.621094 286.15625 190.621094 282.554688 C 190.621094 278.957031 196.019531 278.957031 196.019531 282.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.9375 260.742188 C 219.9375 264.339844 214.539063 264.339844 214.539063 260.742188 C 214.539063 257.140625 219.9375 257.140625 219.9375 260.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.203125 243.960938 C 239.203125 247.5625 233.804688 247.5625 233.804688 243.960938 C 233.804688 240.359375 239.203125 240.359375 239.203125 243.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.8125 230.535156 C 255.8125 234.136719 250.414063 234.136719 250.414063 230.535156 C 250.414063 226.9375 255.8125 226.9375 255.8125 230.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.40625 212.078125 C 276.40625 215.679688 271.007813 215.679688 271.007813 212.078125 C 271.007813 208.476563 276.40625 208.476563 276.40625 212.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.660156 191.941406 C 299.660156 195.542969 294.261719 195.542969 294.261719 191.941406 C 294.261719 188.339844 299.660156 188.339844 299.660156 191.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.253906 175.160156 C 320.253906 178.761719 314.855469 178.761719 314.855469 175.160156 C 314.855469 171.5625 320.253906 171.5625 320.253906 175.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 340.851563 158.378906 C 340.851563 161.980469 335.449219 161.980469 335.449219 158.378906 C 335.449219 154.78125 340.851563 154.78125 340.851563 158.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.109375 143.277344 C 362.109375 146.878906 356.710938 146.878906 356.710938 143.277344 C 356.710938 139.679688 362.109375 139.679688 362.109375 143.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 383.371094 126.496094 C 383.371094 130.097656 377.96875 130.097656 377.96875 126.496094 C 377.96875 122.898438 383.371094 122.898438 383.371094 126.496094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.316406 114.75 C 399.316406 118.351563 393.914063 118.351563 393.914063 114.75 C 393.914063 111.152344 399.316406 111.152344 399.316406 114.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 421.238281 99.648438 C 421.238281 103.25 415.839844 103.25 415.839844 99.648438 C 415.839844 96.046875 421.238281 96.046875 421.238281 99.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.164063 84.546875 C 443.164063 88.144531 437.761719 88.144531 437.761719 84.546875 C 437.761719 80.945313 443.164063 80.945313 443.164063 84.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.457031 430.558594 L 434.59375 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.457031 430.558594 L 121.457031 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 199.742188 430.558594 L 199.742188 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.027344 430.558594 L 278.027344 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.308594 430.558594 L 356.308594 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.59375 430.558594 L 434.59375 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="118.121094" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="196.40625" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="274.691406" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="352.972656" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="431.257813" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 395.824219 L 59.039063 64.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 395.824219 L 51.839844 395.824219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 329.542969 L 51.839844 329.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 263.257813 L 51.839844 263.257813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 196.976563 L 51.839844 196.976563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 130.691406 L 51.839844 130.691406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 64.410156 L 51.839844 64.410156 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="399.160156"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="332.878906"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="266.59375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="200.3125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="134.027344"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="41.761719" y="67.746094"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="166.554688" y="34.675781"/> + <use xlink:href="#glyph2-2" x="176.159375" y="34.675781"/> + <use xlink:href="#glyph2-3" x="184.955469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="193.751563" y="34.675781"/> + <use xlink:href="#glyph2-5" x="201.760156" y="34.675781"/> + <use xlink:href="#glyph2-6" x="207.364063" y="34.675781"/> + <use xlink:href="#glyph2-7" x="212.159375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="220.167969" y="34.675781"/> + <use xlink:href="#glyph2-9" x="228.176562" y="34.675781"/> + <use xlink:href="#glyph2-10" x="232.971875" y="34.675781"/> + <use xlink:href="#glyph2-11" x="236.972656" y="34.675781"/> + <use xlink:href="#glyph2-4" x="244.98125" y="34.675781"/> + <use xlink:href="#glyph2-12" x="252.989844" y="34.675781"/> + <use xlink:href="#glyph2-13" x="256.990625" y="34.675781"/> + <use xlink:href="#glyph2-7" x="265.786719" y="34.675781"/> + <use xlink:href="#glyph2-14" x="273.795312" y="34.675781"/> + <use xlink:href="#glyph2-14" x="278.590625" y="34.675781"/> + <use xlink:href="#glyph2-15" x="283.385938" y="34.675781"/> + <use xlink:href="#glyph2-4" x="287.386719" y="34.675781"/> + <use xlink:href="#glyph2-16" x="295.395312" y="34.675781"/> + <use xlink:href="#glyph2-12" x="303.403906" y="34.675781"/> + <use xlink:href="#glyph2-1" x="307.404687" y="34.675781"/> + <use xlink:href="#glyph2-12" x="317.009375" y="34.675781"/> + <use xlink:href="#glyph2-17" x="321.010156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="329.419531" y="34.675781"/> + <use xlink:href="#glyph2-18" x="333.420312" y="34.675781"/> + <use xlink:href="#glyph2-19" x="341.428906" y="34.675781"/> + <use xlink:href="#glyph2-12" x="349.4375" y="34.675781"/> + <use xlink:href="#glyph2-20" x="353.438281" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-7" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-7" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-8" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-9" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-8" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-10" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-11" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-12" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-10" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-7" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-9" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-8" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.375 C 77.101563 406.976563 71.699219 406.976563 71.699219 403.375 C 71.699219 399.777344 77.101563 399.777344 77.101563 403.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 99.023438 379.882813 C 99.023438 383.484375 93.625 383.484375 93.625 379.882813 C 93.625 376.28125 99.023438 376.28125 99.023438 379.882813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 114.304688 364.78125 C 114.304688 368.378906 108.902344 368.378906 108.902344 364.78125 C 108.902344 361.179688 114.304688 361.179688 114.304688 364.78125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 130.25 348 C 130.25 351.601563 124.847656 351.601563 124.847656 348 C 124.847656 344.398438 130.25 344.398438 130.25 348 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 150.179688 327.863281 C 150.179688 331.464844 144.78125 331.464844 144.78125 327.863281 C 144.78125 324.261719 150.179688 324.261719 150.179688 327.863281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 170.773438 307.726563 C 170.773438 311.328125 165.375 311.328125 165.375 307.726563 C 165.375 304.125 170.773438 304.125 170.773438 307.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 196.019531 282.554688 C 196.019531 286.15625 190.621094 286.15625 190.621094 282.554688 C 190.621094 278.957031 196.019531 278.957031 196.019531 282.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 219.9375 260.742188 C 219.9375 264.339844 214.539063 264.339844 214.539063 260.742188 C 214.539063 257.140625 219.9375 257.140625 219.9375 260.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 239.203125 243.960938 C 239.203125 247.5625 233.804688 247.5625 233.804688 243.960938 C 233.804688 240.359375 239.203125 240.359375 239.203125 243.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.8125 230.535156 C 255.8125 234.136719 250.414063 234.136719 250.414063 230.535156 C 250.414063 226.9375 255.8125 226.9375 255.8125 230.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 276.40625 212.078125 C 276.40625 215.679688 271.007813 215.679688 271.007813 212.078125 C 271.007813 208.476563 276.40625 208.476563 276.40625 212.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 299.660156 191.941406 C 299.660156 195.542969 294.261719 195.542969 294.261719 191.941406 C 294.261719 188.339844 299.660156 188.339844 299.660156 191.941406 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 320.253906 175.160156 C 320.253906 178.761719 314.855469 178.761719 314.855469 175.160156 C 314.855469 171.5625 320.253906 171.5625 320.253906 175.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 340.851563 158.378906 C 340.851563 161.980469 335.449219 161.980469 335.449219 158.378906 C 335.449219 154.78125 340.851563 154.78125 340.851563 158.378906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 362.109375 143.277344 C 362.109375 146.878906 356.710938 146.878906 356.710938 143.277344 C 356.710938 139.679688 362.109375 139.679688 362.109375 143.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 383.371094 126.496094 C 383.371094 130.097656 377.96875 130.097656 377.96875 126.496094 C 377.96875 122.898438 383.371094 122.898438 383.371094 126.496094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 399.316406 114.75 C 399.316406 118.351563 393.914063 118.351563 393.914063 114.75 C 393.914063 111.152344 399.316406 111.152344 399.316406 114.75 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 421.238281 99.648438 C 421.238281 103.25 415.839844 103.25 415.839844 99.648438 C 415.839844 96.046875 421.238281 96.046875 421.238281 99.648438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.164063 84.546875 C 443.164063 88.144531 437.761719 88.144531 437.761719 84.546875 C 437.761719 80.945313 443.164063 80.945313 443.164063 84.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 403.304688 L 78.238281 399.199219 L 82.078125 395.109375 L 85.921875 391.035156 L 89.761719 386.976563 L 93.601563 382.933594 L 97.441406 378.910156 L 101.28125 374.898438 L 105.121094 370.90625 L 108.960938 366.929688 L 112.800781 362.96875 L 116.640625 359.023438 L 120.480469 355.09375 L 124.320313 351.179688 L 128.160156 347.285156 L 132 343.40625 L 135.839844 339.542969 L 139.679688 335.695313 L 143.519531 331.863281 L 147.359375 328.046875 L 151.199219 324.25 L 155.039063 320.464844 L 158.878906 316.699219 L 162.71875 312.949219 L 166.558594 309.214844 L 170.398438 305.496094 L 174.238281 301.792969 L 178.078125 298.109375 L 181.921875 294.4375 L 185.761719 290.785156 L 189.601563 287.148438 L 193.441406 283.527344 L 197.28125 279.921875 L 201.121094 276.335938 L 204.960938 272.761719 L 208.800781 269.207031 L 212.640625 265.667969 L 216.480469 262.144531 L 220.320313 258.636719 L 224.160156 255.144531 L 228 251.667969 L 231.839844 248.210938 L 235.679688 244.769531 L 239.519531 241.339844 L 243.359375 237.929688 L 247.199219 234.539063 L 251.039063 231.160156 L 254.878906 227.796875 L 258.71875 224.453125 L 262.558594 221.121094 L 266.398438 217.808594 L 270.238281 214.511719 L 274.078125 211.230469 L 277.921875 207.96875 L 281.761719 204.71875 L 285.601563 201.488281 L 289.441406 198.269531 L 293.28125 195.070313 L 297.121094 191.886719 L 300.960938 188.71875 L 304.800781 185.570313 L 308.640625 182.433594 L 312.480469 179.316406 L 316.320313 176.214844 L 320.160156 173.125 L 324 170.058594 L 327.839844 167.003906 L 331.679688 163.964844 L 335.519531 160.945313 L 339.359375 157.9375 L 343.199219 154.949219 L 347.039063 151.976563 L 350.878906 149.019531 L 354.71875 146.078125 L 358.558594 143.152344 L 362.398438 140.246094 L 366.238281 137.355469 L 370.078125 134.476563 L 373.921875 131.617188 L 377.761719 128.773438 L 381.601563 125.949219 L 385.441406 123.136719 L 389.28125 120.34375 L 393.121094 117.5625 L 396.960938 114.800781 L 400.800781 112.054688 L 404.640625 109.324219 L 408.480469 106.609375 L 412.320313 103.914063 L 416.160156 101.230469 L 420 98.566406 L 423.839844 95.917969 L 427.679688 93.285156 L 431.519531 90.667969 L 435.359375 88.066406 L 439.199219 85.484375 L 443.039063 82.914063 L 446.878906 80.363281 L 450.71875 77.828125 L 454.558594 75.308594 L 458.398438 72.804688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 84.53125 398.339844 L 92.171875 398.339844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 88.351563 402.160156 L 88.351563 394.523438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 96.492188 384.917969 L 104.128906 384.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 100.308594 388.734375 L 100.308594 381.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.078125 361.425781 L 126.714844 361.425781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 122.898438 365.242188 L 122.898438 357.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 132.367188 346.320313 L 140.003906 346.320313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 136.183594 350.140625 L 136.183594 342.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 148.976563 332.898438 L 156.613281 332.898438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 152.792969 336.714844 L 152.792969 329.078125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 162.925781 319.472656 L 170.5625 319.472656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 166.746094 323.292969 L 166.746094 315.65625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 182.859375 304.371094 L 190.496094 304.371094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 186.675781 308.1875 L 186.675781 300.550781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 198.804688 289.269531 L 206.441406 289.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 202.621094 293.085938 L 202.621094 285.449219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 216.742188 277.523438 L 224.378906 277.523438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 220.558594 281.339844 L 220.558594 273.703125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 234.679688 264.097656 L 242.316406 264.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.496094 267.914063 L 238.496094 260.277344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 255.9375 250.671875 L 263.574219 250.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 259.757813 254.492188 L 259.757813 246.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 269.890625 240.605469 L 277.527344 240.605469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 273.707031 244.421875 L 273.707031 236.785156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 284.503906 230.535156 L 292.140625 230.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 288.324219 234.355469 L 288.324219 226.71875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.421875 213.757813 L 316.058594 213.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 312.242188 217.574219 L 312.242188 209.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 321.710938 205.367188 L 329.347656 205.367188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 325.527344 209.183594 L 325.527344 201.546875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.640625 193.621094 L 349.277344 193.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 345.457031 197.4375 L 345.457031 189.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 353.597656 185.230469 L 361.234375 185.230469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.417969 189.046875 L 357.417969 181.410156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.871094 173.484375 L 378.507813 173.484375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.691406 177.300781 L 374.691406 169.664063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 386.816406 163.414063 L 394.453125 163.414063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 390.636719 167.234375 L 390.636719 159.597656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 406.082031 151.667969 L 413.71875 151.667969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 409.902344 155.488281 L 409.902344 147.851563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 423.355469 139.921875 L 430.992188 139.921875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 427.175781 143.742188 L 427.175781 136.105469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 438.636719 129.855469 L 446.273438 129.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.457031 133.671875 L 442.457031 126.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 118.105469 L 462.21875 118.105469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 121.925781 L 458.398438 114.289063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 408.75 L 78.238281 405.027344 L 82.078125 401.324219 L 85.921875 397.640625 L 89.761719 393.972656 L 93.601563 390.320313 L 97.441406 386.6875 L 101.28125 383.074219 L 105.121094 379.476563 L 108.960938 375.898438 L 112.800781 372.335938 L 116.640625 368.792969 L 120.480469 365.265625 L 124.320313 361.757813 L 128.160156 358.265625 L 132 354.792969 L 135.839844 351.335938 L 139.679688 347.898438 L 143.519531 344.476563 L 147.359375 341.074219 L 151.199219 337.691406 L 155.039063 334.324219 L 158.878906 330.972656 L 162.71875 327.640625 L 166.558594 324.328125 L 170.398438 321.03125 L 174.238281 317.75 L 178.078125 314.488281 L 181.921875 311.246094 L 185.761719 308.019531 L 189.601563 304.8125 L 193.441406 301.621094 L 197.28125 298.449219 L 201.121094 295.292969 L 204.960938 292.15625 L 208.800781 289.035156 L 212.640625 285.933594 L 216.480469 282.847656 L 220.320313 279.78125 L 224.160156 276.734375 L 228 273.699219 L 231.839844 270.6875 L 235.679688 267.691406 L 239.519531 264.710938 L 243.359375 261.75 L 247.199219 258.808594 L 251.039063 255.882813 L 254.878906 252.976563 L 258.71875 250.085938 L 262.558594 247.214844 L 266.398438 244.359375 L 270.238281 241.519531 L 274.078125 238.703125 L 277.921875 235.898438 L 281.761719 233.117188 L 285.601563 230.351563 L 289.441406 227.601563 L 293.28125 224.871094 L 297.121094 222.15625 L 300.960938 219.460938 L 304.800781 216.78125 L 308.640625 214.121094 L 312.480469 211.480469 L 316.320313 208.855469 L 320.160156 206.25 L 324 203.660156 L 327.839844 201.085938 L 331.679688 198.53125 L 335.519531 195.996094 L 339.359375 193.476563 L 343.199219 190.976563 L 347.039063 188.492188 L 350.878906 186.027344 L 354.71875 183.578125 L 358.558594 181.148438 L 362.398438 178.734375 L 366.238281 176.339844 L 370.078125 173.960938 L 373.921875 171.601563 L 377.761719 169.261719 L 381.601563 166.9375 L 385.441406 164.628906 L 389.28125 162.339844 L 393.121094 160.070313 L 396.960938 157.816406 L 400.800781 155.578125 L 404.640625 153.359375 L 408.480469 151.160156 L 412.320313 148.976563 L 416.160156 146.8125 L 420 144.664063 L 423.839844 142.535156 L 427.679688 140.421875 L 431.519531 138.328125 L 435.359375 136.25 L 439.199219 134.191406 L 443.039063 132.148438 L 446.878906 130.125 L 450.71875 128.117188 L 454.558594 126.128906 L 458.398438 124.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-9" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-10" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-9" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-9" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-10" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-9" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-11" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-12" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-11" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-13" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-14" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-15" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-14" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-5" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-14" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-16" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-6" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-7" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-17" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-2" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-11" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-1" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-3" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-1" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-6" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-7" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-11" x="416.728516" y="346.695313"/> + <use xlink:href="#glyph0-18" x="420.0625" y="346.695313"/> + <use xlink:href="#glyph0-11" x="427.070313" y="346.695313"/> + <use xlink:href="#glyph0-14" x="430.404297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-3" x="440.412109" y="346.695313"/> + <use xlink:href="#glyph0-19" x="447.085938" y="346.695313"/> + <use xlink:href="#glyph0-4" x="453.759766" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-10" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-9" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-9" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-11" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-12" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-13" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-11" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-14" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-15" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-14" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-5" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-5" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-6" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-7" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-17" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-2" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-11" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-18" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-1" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-1" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-20" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-6" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-7" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-11" x="410.054688" y="375.496094"/> + <use xlink:href="#glyph0-18" x="413.388672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="420.396484" y="375.496094"/> + <use xlink:href="#glyph0-14" x="423.730469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-3" x="433.738281" y="375.496094"/> + <use xlink:href="#glyph0-3" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-20" x="447.085938" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/baffle_fishway_suractif_slope_15_.svg b/docs/en/calculators/par/baffle_fishway_suractif_slope_15_.svg new file mode 100644 index 0000000000000000000000000000000000000000..95a96f51b0d6f39d8493d30bc7450390f82553dd --- /dev/null +++ b/docs/en/calculators/par/baffle_fishway_suractif_slope_15_.svg @@ -0,0 +1,454 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="504pt" height="504pt" viewBox="0 0 504 504" version="1.1"> +<defs> +<g> +<symbol overflow="visible" id="glyph0-0"> +<path style="stroke:none;" d="M 1.5 0 L 1.5 -7.5 L 7.5 -7.5 L 7.5 0 Z M 1.6875 -0.1875 L 7.3125 -0.1875 L 7.3125 -7.3125 L 1.6875 -7.3125 Z M 1.6875 -0.1875 "/> +</symbol> +<symbol overflow="visible" id="glyph0-1"> +<path style="stroke:none;" d="M 4.46875 0 L 3.414063 0 L 3.414063 -6.71875 C 3.160156 -6.476563 2.828125 -6.234375 2.414063 -5.996094 C 2 -5.75 1.628906 -5.570313 1.304688 -5.449219 L 1.304688 -6.46875 C 1.894531 -6.742188 2.410156 -7.078125 2.851563 -7.476563 C 3.292969 -7.871094 3.605469 -8.253906 3.789063 -8.625 L 4.46875 -8.625 Z M 4.46875 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-2"> +<path style="stroke:none;" d="M 6.039063 -1.015625 L 6.039063 0 L 0.363281 0 C 0.355469 -0.253906 0.394531 -0.496094 0.484375 -0.734375 C 0.628906 -1.117188 0.859375 -1.5 1.179688 -1.875 C 1.492188 -2.25 1.953125 -2.683594 2.5625 -3.175781 C 3.492188 -3.941406 4.125 -4.546875 4.453125 -4.992188 C 4.78125 -5.4375 4.945313 -5.859375 4.945313 -6.265625 C 4.945313 -6.679688 4.792969 -7.03125 4.496094 -7.320313 C 4.191406 -7.601563 3.804688 -7.746094 3.328125 -7.75 C 2.820313 -7.746094 2.414063 -7.59375 2.109375 -7.292969 C 1.804688 -6.984375 1.648438 -6.5625 1.648438 -6.03125 L 0.5625 -6.140625 C 0.632813 -6.945313 0.910156 -7.558594 1.398438 -7.988281 C 1.878906 -8.410156 2.53125 -8.625 3.351563 -8.625 C 4.171875 -8.625 4.824219 -8.394531 5.308594 -7.9375 C 5.789063 -7.480469 6.027344 -6.914063 6.03125 -6.242188 C 6.027344 -5.894531 5.957031 -5.558594 5.820313 -5.226563 C 5.675781 -4.890625 5.441406 -4.539063 5.117188 -4.175781 C 4.789063 -3.804688 4.25 -3.300781 3.492188 -2.664063 C 2.859375 -2.128906 2.453125 -1.769531 2.273438 -1.582031 C 2.09375 -1.394531 1.945313 -1.203125 1.828125 -1.015625 Z M 6.039063 -1.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-3"> +<path style="stroke:none;" d="M 0.503906 -2.265625 L 1.558594 -2.40625 C 1.679688 -1.808594 1.882813 -1.378906 2.175781 -1.113281 C 2.464844 -0.847656 2.820313 -0.714844 3.242188 -0.71875 C 3.734375 -0.714844 4.152344 -0.886719 4.496094 -1.234375 C 4.832031 -1.574219 5.003906 -2 5.007813 -2.515625 C 5.003906 -2.996094 4.847656 -3.394531 4.535156 -3.710938 C 4.21875 -4.023438 3.816406 -4.183594 3.328125 -4.183594 C 3.128906 -4.183594 2.878906 -4.144531 2.585938 -4.066406 L 2.703125 -4.992188 C 2.765625 -4.984375 2.824219 -4.980469 2.871094 -4.980469 C 3.320313 -4.980469 3.722656 -5.097656 4.085938 -5.332031 C 4.441406 -5.566406 4.621094 -5.925781 4.625 -6.414063 C 4.621094 -6.800781 4.492188 -7.121094 4.230469 -7.375 C 3.964844 -7.628906 3.625 -7.757813 3.21875 -7.757813 C 2.804688 -7.757813 2.464844 -7.628906 2.191406 -7.371094 C 1.917969 -7.113281 1.742188 -6.726563 1.664063 -6.210938 L 0.609375 -6.398438 C 0.738281 -7.105469 1.03125 -7.652344 1.488281 -8.042969 C 1.941406 -8.429688 2.507813 -8.625 3.195313 -8.625 C 3.660156 -8.625 4.09375 -8.523438 4.488281 -8.324219 C 4.878906 -8.121094 5.179688 -7.847656 5.390625 -7.5 C 5.601563 -7.148438 5.707031 -6.777344 5.707031 -6.390625 C 5.707031 -6.019531 5.605469 -5.683594 5.40625 -5.378906 C 5.207031 -5.074219 4.914063 -4.832031 4.523438 -4.652344 C 5.03125 -4.535156 5.425781 -4.289063 5.707031 -3.921875 C 5.988281 -3.546875 6.128906 -3.085938 6.128906 -2.539063 C 6.128906 -1.785156 5.855469 -1.148438 5.308594 -0.628906 C 4.761719 -0.105469 4.070313 0.152344 3.234375 0.152344 C 2.476563 0.152344 1.847656 -0.0703125 1.355469 -0.519531 C 0.855469 -0.96875 0.574219 -1.550781 0.503906 -2.265625 Z M 0.503906 -2.265625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-4"> +<path style="stroke:none;" d="M 3.878906 0 L 3.878906 -2.054688 L 0.152344 -2.054688 L 0.152344 -3.023438 L 4.070313 -8.589844 L 4.933594 -8.589844 L 4.933594 -3.023438 L 6.09375 -3.023438 L 6.09375 -2.054688 L 4.933594 -2.054688 L 4.933594 0 Z M 3.878906 -3.023438 L 3.878906 -6.898438 L 1.1875 -3.023438 Z M 3.878906 -3.023438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-5"> +<path style="stroke:none;" d="M 0.5 -2.25 L 1.605469 -2.34375 C 1.683594 -1.804688 1.871094 -1.398438 2.175781 -1.125 C 2.472656 -0.851563 2.835938 -0.714844 3.257813 -0.71875 C 3.765625 -0.714844 4.195313 -0.90625 4.546875 -1.292969 C 4.898438 -1.671875 5.074219 -2.179688 5.074219 -2.820313 C 5.074219 -3.414063 4.902344 -3.890625 4.566406 -4.242188 C 4.226563 -4.589844 3.785156 -4.761719 3.242188 -4.765625 C 2.898438 -4.761719 2.59375 -4.683594 2.320313 -4.53125 C 2.046875 -4.375 1.832031 -4.175781 1.675781 -3.929688 L 0.6875 -4.0625 L 1.515625 -8.472656 L 5.789063 -8.472656 L 5.789063 -7.464844 L 2.359375 -7.464844 L 1.898438 -5.15625 C 2.414063 -5.515625 2.953125 -5.695313 3.523438 -5.695313 C 4.269531 -5.695313 4.902344 -5.433594 5.421875 -4.914063 C 5.933594 -4.394531 6.191406 -3.726563 6.195313 -2.914063 C 6.191406 -2.132813 5.964844 -1.460938 5.515625 -0.898438 C 4.960938 -0.199219 4.210938 0.144531 3.257813 0.148438 C 2.476563 0.144531 1.835938 -0.0703125 1.34375 -0.507813 C 0.84375 -0.941406 0.5625 -1.523438 0.5 -2.25 Z M 0.5 -2.25 "/> +</symbol> +<symbol overflow="visible" id="glyph0-6"> +<path style="stroke:none;" d="M 4.757813 2.382813 L 4.757813 -0.664063 C 4.59375 -0.429688 4.363281 -0.238281 4.066406 -0.0859375 C 3.769531 0.0664063 3.457031 0.140625 3.128906 0.140625 C 2.390625 0.140625 1.753906 -0.152344 1.222656 -0.742188 C 0.6875 -1.332031 0.421875 -2.140625 0.421875 -3.171875 C 0.421875 -3.792969 0.527344 -4.355469 0.746094 -4.851563 C 0.957031 -5.34375 1.273438 -5.71875 1.6875 -5.976563 C 2.101563 -6.234375 2.554688 -6.363281 3.046875 -6.363281 C 3.816406 -6.363281 4.421875 -6.039063 4.863281 -5.390625 L 4.863281 -6.222656 L 5.8125 -6.222656 L 5.8125 2.382813 Z M 1.507813 -3.128906 C 1.503906 -2.328125 1.671875 -1.726563 2.011719 -1.328125 C 2.34375 -0.925781 2.746094 -0.726563 3.21875 -0.726563 C 3.664063 -0.726563 4.050781 -0.914063 4.375 -1.296875 C 4.699219 -1.671875 4.863281 -2.253906 4.863281 -3.035156 C 4.863281 -3.863281 4.691406 -4.484375 4.347656 -4.902344 C 4.003906 -5.320313 3.601563 -5.53125 3.148438 -5.53125 C 2.6875 -5.53125 2.300781 -5.335938 1.984375 -4.949219 C 1.664063 -4.558594 1.503906 -3.953125 1.507813 -3.128906 Z M 1.507813 -3.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph0-7"> +<path style="stroke:none;" d="M 0.375 -7.015625 L 0.644531 -7.84375 C 1.265625 -7.621094 1.714844 -7.433594 2 -7.277344 C 1.921875 -7.980469 1.882813 -8.464844 1.882813 -8.734375 L 2.730469 -8.734375 C 2.714844 -8.347656 2.667969 -7.863281 2.59375 -7.28125 C 2.996094 -7.480469 3.457031 -7.667969 3.976563 -7.84375 L 4.25 -7.015625 C 3.75 -6.84375 3.265625 -6.734375 2.789063 -6.6875 C 3.027344 -6.476563 3.363281 -6.109375 3.796875 -5.578125 L 3.09375 -5.078125 C 2.867188 -5.386719 2.597656 -5.808594 2.289063 -6.339844 C 2 -5.789063 1.746094 -5.367188 1.53125 -5.078125 L 0.835938 -5.578125 C 1.285156 -6.132813 1.609375 -6.5 1.8125 -6.6875 C 1.304688 -6.78125 0.828125 -6.890625 0.375 -7.015625 Z M 0.375 -7.015625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-8"> +<path style="stroke:none;" d="M 0.789063 0 L 0.789063 -8.589844 L 1.84375 -8.589844 L 1.84375 -5.507813 C 2.335938 -6.078125 2.957031 -6.363281 3.710938 -6.363281 C 4.164063 -6.363281 4.566406 -6.269531 4.910156 -6.089844 C 5.25 -5.90625 5.492188 -5.65625 5.640625 -5.339844 C 5.785156 -5.015625 5.859375 -4.550781 5.859375 -3.945313 L 5.859375 0 L 4.804688 0 L 4.804688 -3.945313 C 4.804688 -4.46875 4.6875 -4.851563 4.460938 -5.09375 C 4.226563 -5.328125 3.90625 -5.449219 3.492188 -5.453125 C 3.179688 -5.449219 2.882813 -5.367188 2.609375 -5.210938 C 2.328125 -5.046875 2.132813 -4.828125 2.019531 -4.550781 C 1.898438 -4.273438 1.839844 -3.890625 1.84375 -3.40625 L 1.84375 0 Z M 0.789063 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-9"> +<path style="stroke:none;" d="M 4.851563 -0.765625 C 4.460938 -0.433594 4.082031 -0.199219 3.722656 -0.0625 C 3.355469 0.0742188 2.96875 0.140625 2.5625 0.140625 C 1.875 0.140625 1.351563 -0.0234375 0.984375 -0.359375 C 0.617188 -0.6875 0.433594 -1.117188 0.433594 -1.640625 C 0.433594 -1.945313 0.5 -2.222656 0.640625 -2.472656 C 0.777344 -2.722656 0.960938 -2.925781 1.1875 -3.082031 C 1.410156 -3.234375 1.664063 -3.347656 1.945313 -3.429688 C 2.152344 -3.476563 2.464844 -3.53125 2.882813 -3.585938 C 3.734375 -3.6875 4.359375 -3.808594 4.765625 -3.949219 C 4.765625 -4.089844 4.769531 -4.179688 4.769531 -4.226563 C 4.769531 -4.648438 4.667969 -4.953125 4.46875 -5.132813 C 4.199219 -5.371094 3.800781 -5.488281 3.269531 -5.492188 C 2.769531 -5.488281 2.402344 -5.402344 2.167969 -5.230469 C 1.933594 -5.054688 1.757813 -4.746094 1.648438 -4.304688 L 0.617188 -4.445313 C 0.707031 -4.886719 0.863281 -5.242188 1.078125 -5.515625 C 1.289063 -5.78125 1.597656 -5.992188 2.007813 -6.140625 C 2.410156 -6.289063 2.882813 -6.363281 3.421875 -6.363281 C 3.953125 -6.363281 4.382813 -6.300781 4.714844 -6.175781 C 5.046875 -6.050781 5.292969 -5.890625 5.449219 -5.703125 C 5.605469 -5.511719 5.714844 -5.273438 5.777344 -4.984375 C 5.808594 -4.804688 5.824219 -4.480469 5.828125 -4.015625 L 5.828125 -2.609375 C 5.824219 -1.625 5.847656 -1.003906 5.894531 -0.746094 C 5.941406 -0.484375 6.03125 -0.238281 6.164063 0 L 5.0625 0 C 4.953125 -0.21875 4.882813 -0.472656 4.851563 -0.765625 Z M 4.765625 -3.125 C 4.375 -2.964844 3.800781 -2.832031 3.039063 -2.726563 C 2.605469 -2.660156 2.300781 -2.589844 2.121094 -2.515625 C 1.941406 -2.433594 1.800781 -2.320313 1.703125 -2.171875 C 1.605469 -2.019531 1.558594 -1.851563 1.558594 -1.671875 C 1.558594 -1.386719 1.664063 -1.152344 1.875 -0.96875 C 2.085938 -0.777344 2.398438 -0.683594 2.8125 -0.6875 C 3.21875 -0.683594 3.578125 -0.773438 3.894531 -0.953125 C 4.210938 -1.128906 4.445313 -1.371094 4.59375 -1.679688 C 4.707031 -1.917969 4.761719 -2.269531 4.765625 -2.734375 Z M 4.765625 -3.125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-10"> +<path style="stroke:none;" d="M 0 0.148438 L 2.492188 -8.734375 L 3.335938 -8.734375 L 0.851563 0.148438 Z M 0 0.148438 "/> +</symbol> +<symbol overflow="visible" id="glyph0-11"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph0-12"> +<path style="stroke:none;" d="M 6.339844 -5.050781 L 0.667969 -5.050781 L 0.667969 -6.035156 L 6.339844 -6.035156 Z M 6.339844 -2.445313 L 0.667969 -2.445313 L 0.667969 -3.429688 L 6.339844 -3.429688 Z M 6.339844 -2.445313 "/> +</symbol> +<symbol overflow="visible" id="glyph0-13"> +<path style="stroke:none;" d="M 0.382813 -2.578125 L 0.382813 -3.640625 L 3.621094 -3.640625 L 3.621094 -2.578125 Z M 0.382813 -2.578125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-14"> +<path style="stroke:none;" d="M 0.5 -4.234375 C 0.496094 -5.246094 0.601563 -6.0625 0.8125 -6.6875 C 1.019531 -7.304688 1.328125 -7.785156 1.742188 -8.121094 C 2.148438 -8.457031 2.667969 -8.625 3.296875 -8.625 C 3.757813 -8.625 4.164063 -8.53125 4.511719 -8.347656 C 4.855469 -8.160156 5.140625 -7.890625 5.371094 -7.542969 C 5.59375 -7.191406 5.773438 -6.765625 5.90625 -6.265625 C 6.035156 -5.761719 6.097656 -5.085938 6.101563 -4.234375 C 6.097656 -3.226563 5.996094 -2.414063 5.789063 -1.796875 C 5.578125 -1.175781 5.265625 -0.695313 4.859375 -0.359375 C 4.445313 -0.0195313 3.925781 0.144531 3.296875 0.148438 C 2.464844 0.144531 1.816406 -0.148438 1.347656 -0.742188 C 0.78125 -1.457031 0.496094 -2.621094 0.5 -4.234375 Z M 1.582031 -4.234375 C 1.582031 -2.824219 1.746094 -1.886719 2.074219 -1.417969 C 2.402344 -0.949219 2.808594 -0.714844 3.296875 -0.71875 C 3.777344 -0.714844 4.183594 -0.949219 4.519531 -1.421875 C 4.847656 -1.886719 5.015625 -2.824219 5.015625 -4.234375 C 5.015625 -5.648438 4.847656 -6.589844 4.519531 -7.054688 C 4.183594 -7.515625 3.773438 -7.746094 3.289063 -7.75 C 2.800781 -7.746094 2.414063 -7.542969 2.125 -7.136719 C 1.761719 -6.613281 1.582031 -5.644531 1.582031 -4.234375 Z M 1.582031 -4.234375 "/> +</symbol> +<symbol overflow="visible" id="glyph0-15"> +<path style="stroke:none;" d="M 1.089844 0 L 1.089844 -1.203125 L 2.289063 -1.203125 L 2.289063 0 Z M 1.089844 0 "/> +</symbol> +<symbol overflow="visible" id="glyph0-16"> +<path style="stroke:none;" d="M 5.96875 -6.484375 L 4.921875 -6.40625 C 4.828125 -6.8125 4.695313 -7.113281 4.523438 -7.304688 C 4.234375 -7.605469 3.882813 -7.757813 3.46875 -7.757813 C 3.132813 -7.757813 2.835938 -7.664063 2.585938 -7.476563 C 2.25 -7.234375 1.988281 -6.878906 1.796875 -6.414063 C 1.605469 -5.949219 1.507813 -5.289063 1.5 -4.429688 C 1.753906 -4.8125 2.0625 -5.097656 2.433594 -5.289063 C 2.796875 -5.472656 3.183594 -5.566406 3.585938 -5.570313 C 4.289063 -5.566406 4.886719 -5.308594 5.382813 -4.792969 C 5.875 -4.277344 6.121094 -3.609375 6.125 -2.789063 C 6.121094 -2.25 6.003906 -1.746094 5.773438 -1.285156 C 5.539063 -0.820313 5.222656 -0.46875 4.816406 -0.222656 C 4.410156 0.0234375 3.949219 0.144531 3.433594 0.148438 C 2.554688 0.144531 1.835938 -0.175781 1.285156 -0.820313 C 0.726563 -1.46875 0.449219 -2.535156 0.453125 -4.019531 C 0.449219 -5.675781 0.757813 -6.882813 1.371094 -7.640625 C 1.902344 -8.296875 2.621094 -8.625 3.53125 -8.625 C 4.207031 -8.625 4.761719 -8.433594 5.195313 -8.054688 C 5.625 -7.675781 5.882813 -7.152344 5.96875 -6.484375 Z M 1.664063 -2.78125 C 1.664063 -2.417969 1.738281 -2.070313 1.894531 -1.738281 C 2.042969 -1.40625 2.261719 -1.152344 2.542969 -0.980469 C 2.820313 -0.800781 3.109375 -0.714844 3.414063 -0.71875 C 3.859375 -0.714844 4.242188 -0.894531 4.566406 -1.257813 C 4.882813 -1.613281 5.042969 -2.101563 5.046875 -2.726563 C 5.042969 -3.316406 4.886719 -3.785156 4.570313 -4.128906 C 4.25 -4.46875 3.851563 -4.640625 3.375 -4.640625 C 2.898438 -4.640625 2.492188 -4.46875 2.160156 -4.128906 C 1.828125 -3.785156 1.664063 -3.335938 1.664063 -2.78125 Z M 1.664063 -2.78125 "/> +</symbol> +<symbol overflow="visible" id="glyph0-17"> +<path style="stroke:none;" d="M 2.121094 -4.65625 C 1.683594 -4.816406 1.359375 -5.046875 1.148438 -5.34375 C 0.9375 -5.640625 0.832031 -5.996094 0.832031 -6.410156 C 0.832031 -7.035156 1.054688 -7.558594 1.503906 -7.984375 C 1.953125 -8.410156 2.550781 -8.625 3.296875 -8.625 C 4.042969 -8.625 4.648438 -8.40625 5.109375 -7.972656 C 5.566406 -7.535156 5.792969 -7.003906 5.796875 -6.382813 C 5.792969 -5.976563 5.6875 -5.628906 5.480469 -5.339844 C 5.269531 -5.042969 4.953125 -4.816406 4.53125 -4.65625 C 5.054688 -4.480469 5.457031 -4.203125 5.734375 -3.824219 C 6.007813 -3.4375 6.144531 -2.980469 6.148438 -2.453125 C 6.144531 -1.714844 5.886719 -1.097656 5.367188 -0.601563 C 4.84375 -0.101563 4.160156 0.144531 3.316406 0.148438 C 2.46875 0.144531 1.785156 -0.101563 1.265625 -0.605469 C 0.742188 -1.105469 0.480469 -1.734375 0.484375 -2.484375 C 0.480469 -3.039063 0.621094 -3.503906 0.910156 -3.886719 C 1.191406 -4.261719 1.597656 -4.519531 2.121094 -4.65625 Z M 1.910156 -6.445313 C 1.910156 -6.039063 2.039063 -5.707031 2.300781 -5.449219 C 2.5625 -5.191406 2.902344 -5.0625 3.320313 -5.0625 C 3.722656 -5.0625 4.054688 -5.1875 4.320313 -5.445313 C 4.578125 -5.695313 4.710938 -6.011719 4.710938 -6.386719 C 4.710938 -6.773438 4.574219 -7.097656 4.308594 -7.363281 C 4.035156 -7.625 3.703125 -7.757813 3.3125 -7.757813 C 2.90625 -7.757813 2.574219 -7.628906 2.308594 -7.371094 C 2.042969 -7.113281 1.910156 -6.804688 1.910156 -6.445313 Z M 1.570313 -2.476563 C 1.570313 -2.175781 1.640625 -1.886719 1.785156 -1.605469 C 1.925781 -1.324219 2.136719 -1.105469 2.421875 -0.949219 C 2.699219 -0.792969 3.003906 -0.714844 3.328125 -0.71875 C 3.832031 -0.714844 4.246094 -0.878906 4.578125 -1.207031 C 4.902344 -1.53125 5.066406 -1.941406 5.070313 -2.445313 C 5.066406 -2.945313 4.898438 -3.367188 4.5625 -3.703125 C 4.222656 -4.035156 3.800781 -4.199219 3.292969 -4.203125 C 2.792969 -4.199219 2.378906 -4.035156 2.058594 -3.710938 C 1.730469 -3.378906 1.570313 -2.96875 1.570313 -2.476563 Z M 1.570313 -2.476563 "/> +</symbol> +<symbol overflow="visible" id="glyph0-18"> +<path style="stroke:none;" d="M 1.398438 -4.042969 L 0.316406 -4.042969 L 2.382813 -8.734375 L 3.234375 -8.734375 L 5.3125 -4.042969 L 4.253906 -4.042969 L 2.804688 -7.539063 Z M 1.398438 -4.042969 "/> +</symbol> +<symbol overflow="visible" id="glyph0-19"> +<path style="stroke:none;" d="M 3.007813 -1.390625 L 3.007813 -3.742188 L 0.667969 -3.742188 L 0.667969 -4.726563 L 3.007813 -4.726563 L 3.007813 -7.066406 L 4 -7.066406 L 4 -4.726563 L 6.339844 -4.726563 L 6.339844 -3.742188 L 4 -3.742188 L 4 -1.390625 Z M 3.007813 -1.390625 "/> +</symbol> +<symbol overflow="visible" id="glyph0-20"> +<path style="stroke:none;" d="M 0.570313 -7.464844 L 0.570313 -8.476563 L 6.128906 -8.476563 L 6.128906 -7.65625 C 5.582031 -7.074219 5.039063 -6.300781 4.5 -5.335938 C 3.960938 -4.371094 3.546875 -3.378906 3.257813 -2.359375 C 3.046875 -1.636719 2.910156 -0.851563 2.851563 0 L 1.769531 0 C 1.78125 -0.675781 1.914063 -1.492188 2.167969 -2.449219 C 2.417969 -3.402344 2.78125 -4.324219 3.257813 -5.214844 C 3.734375 -6.105469 4.238281 -6.855469 4.773438 -7.464844 Z M 0.570313 -7.464844 "/> +</symbol> +<symbol overflow="visible" id="glyph1-0"> +<path style="stroke:none;" d="M 0 -1.5 L -7.5 -1.5 L -7.5 -7.5 L 0 -7.5 Z M -0.1875 -1.6875 L -0.1875 -7.3125 L -7.3125 -7.3125 L -7.3125 -1.6875 Z M -0.1875 -1.6875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-1"> +<path style="stroke:none;" d="M 0 -4.46875 L 0 -3.414063 L -6.71875 -3.417969 C -6.476563 -3.160156 -6.234375 -2.828125 -5.996094 -2.417969 C -5.75 -2.003906 -5.570313 -1.632813 -5.449219 -1.308594 L -6.46875 -1.308594 C -6.742188 -1.894531 -7.078125 -2.410156 -7.476563 -2.851563 C -7.871094 -3.292969 -8.253906 -3.605469 -8.625 -3.792969 L -8.625 -4.472656 Z M 0 -4.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph1-2"> +<path style="stroke:none;" d="M -1.011719 -6.039063 L 0 -6.039063 L 0 -0.363281 C -0.253906 -0.355469 -0.496094 -0.394531 -0.734375 -0.488281 C -1.117188 -0.628906 -1.5 -0.859375 -1.875 -1.179688 C -2.25 -1.496094 -2.683594 -1.957031 -3.175781 -2.5625 C -3.941406 -3.492188 -4.546875 -4.125 -4.992188 -4.453125 C -5.4375 -4.78125 -5.859375 -4.945313 -6.265625 -4.945313 C -6.679688 -4.945313 -7.03125 -4.792969 -7.320313 -4.496094 C -7.601563 -4.195313 -7.746094 -3.808594 -7.75 -3.328125 C -7.746094 -2.820313 -7.59375 -2.414063 -7.292969 -2.109375 C -6.984375 -1.804688 -6.5625 -1.648438 -6.03125 -1.648438 L -6.140625 -0.5625 C -6.945313 -0.636719 -7.558594 -0.914063 -7.988281 -1.402344 C -8.410156 -1.882813 -8.625 -2.535156 -8.625 -3.351563 C -8.625 -4.175781 -8.394531 -4.828125 -7.9375 -5.308594 C -7.480469 -5.789063 -6.914063 -6.027344 -6.242188 -6.03125 C -5.894531 -6.027344 -5.558594 -5.957031 -5.226563 -5.820313 C -4.890625 -5.675781 -4.539063 -5.441406 -4.175781 -5.117188 C -3.804688 -4.789063 -3.300781 -4.25 -2.664063 -3.492188 C -2.128906 -2.859375 -1.769531 -2.453125 -1.582031 -2.273438 C -1.394531 -2.09375 -1.203125 -1.945313 -1.011719 -1.828125 Z M -1.011719 -6.039063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-3"> +<path style="stroke:none;" d="M -2.265625 -0.503906 L -2.40625 -1.558594 C -1.808594 -1.679688 -1.378906 -1.882813 -1.113281 -2.175781 C -0.847656 -2.464844 -0.714844 -2.820313 -0.71875 -3.242188 C -0.714844 -3.734375 -0.886719 -4.152344 -1.234375 -4.496094 C -1.574219 -4.832031 -2 -5.003906 -2.511719 -5.007813 C -2.992188 -5.003906 -3.390625 -4.847656 -3.710938 -4.535156 C -4.023438 -4.21875 -4.183594 -3.816406 -4.183594 -3.328125 C -4.183594 -3.128906 -4.144531 -2.878906 -4.066406 -2.585938 L -4.992188 -2.703125 C -4.984375 -2.769531 -4.980469 -2.828125 -4.980469 -2.871094 C -4.980469 -3.320313 -5.097656 -3.722656 -5.332031 -4.085938 C -5.566406 -4.441406 -5.925781 -4.621094 -6.414063 -4.625 C -6.800781 -4.621094 -7.121094 -4.492188 -7.375 -4.230469 C -7.628906 -3.96875 -7.757813 -3.628906 -7.757813 -3.21875 C -7.757813 -2.804688 -7.628906 -2.464844 -7.371094 -2.191406 C -7.113281 -1.917969 -6.726563 -1.742188 -6.210938 -1.664063 L -6.398438 -0.609375 C -7.105469 -0.738281 -7.652344 -1.03125 -8.042969 -1.488281 C -8.429688 -1.945313 -8.625 -2.511719 -8.625 -3.195313 C -8.625 -3.660156 -8.523438 -4.09375 -8.324219 -4.488281 C -8.121094 -4.882813 -7.847656 -5.183594 -7.5 -5.394531 C -7.148438 -5.601563 -6.777344 -5.707031 -6.390625 -5.707031 C -6.019531 -5.707031 -5.683594 -5.605469 -5.378906 -5.40625 C -5.074219 -5.207031 -4.832031 -4.914063 -4.652344 -4.523438 C -4.535156 -5.03125 -4.289063 -5.425781 -3.921875 -5.707031 C -3.546875 -5.988281 -3.085938 -6.128906 -2.535156 -6.128906 C -1.78125 -6.128906 -1.144531 -5.855469 -0.628906 -5.308594 C -0.105469 -4.761719 0.152344 -4.070313 0.152344 -3.234375 C 0.152344 -2.476563 -0.0703125 -1.847656 -0.519531 -1.355469 C -0.96875 -0.855469 -1.550781 -0.574219 -2.265625 -0.503906 Z M -2.265625 -0.503906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-4"> +<path style="stroke:none;" d="M 0 -3.878906 L -2.054688 -3.878906 L -2.054688 -0.152344 L -3.023438 -0.152344 L -8.589844 -4.074219 L -8.589844 -4.933594 L -3.023438 -4.933594 L -3.023438 -6.09375 L -2.054688 -6.09375 L -2.054688 -4.933594 L 0 -4.933594 Z M -3.023438 -3.878906 L -6.898438 -3.878906 L -3.023438 -1.191406 Z M -3.023438 -3.878906 "/> +</symbol> +<symbol overflow="visible" id="glyph1-5"> +<path style="stroke:none;" d="M -2.25 -0.5 L -2.34375 -1.605469 C -1.804688 -1.683594 -1.398438 -1.871094 -1.125 -2.175781 C -0.851563 -2.472656 -0.714844 -2.835938 -0.71875 -3.257813 C -0.714844 -3.765625 -0.90625 -4.195313 -1.292969 -4.546875 C -1.671875 -4.898438 -2.179688 -5.074219 -2.816406 -5.074219 C -3.414063 -5.074219 -3.890625 -4.902344 -4.242188 -4.566406 C -4.589844 -4.226563 -4.761719 -3.785156 -4.765625 -3.242188 C -4.761719 -2.898438 -4.683594 -2.59375 -4.53125 -2.320313 C -4.375 -2.046875 -4.175781 -1.832031 -3.929688 -1.675781 L -4.0625 -0.6875 L -8.472656 -1.519531 L -8.472656 -5.789063 L -7.464844 -5.789063 L -7.464844 -2.363281 L -5.15625 -1.898438 C -5.515625 -2.414063 -5.695313 -2.953125 -5.695313 -3.523438 C -5.695313 -4.269531 -5.433594 -4.902344 -4.914063 -5.421875 C -4.394531 -5.933594 -3.726563 -6.191406 -2.910156 -6.195313 C -2.132813 -6.191406 -1.460938 -5.964844 -0.894531 -5.515625 C -0.199219 -4.960938 0.144531 -4.210938 0.148438 -3.257813 C 0.144531 -2.476563 -0.0703125 -1.835938 -0.507813 -1.34375 C -0.941406 -0.847656 -1.523438 -0.566406 -2.25 -0.5 Z M -2.25 -0.5 "/> +</symbol> +<symbol overflow="visible" id="glyph1-6"> +<path style="stroke:none;" d="M 0 -0.789063 L -8.589844 -0.792969 L -8.589844 -1.847656 L -5.507813 -1.847656 C -6.078125 -2.335938 -6.363281 -2.957031 -6.363281 -3.710938 C -6.363281 -4.164063 -6.269531 -4.566406 -6.089844 -4.910156 C -5.90625 -5.25 -5.65625 -5.492188 -5.339844 -5.640625 C -5.015625 -5.785156 -4.550781 -5.859375 -3.941406 -5.859375 L 0 -5.859375 L 0 -4.804688 L -3.941406 -4.804688 C -4.46875 -4.804688 -4.851563 -4.6875 -5.09375 -4.460938 C -5.328125 -4.226563 -5.449219 -3.90625 -5.453125 -3.492188 C -5.449219 -3.179688 -5.367188 -2.882813 -5.210938 -2.609375 C -5.046875 -2.332031 -4.828125 -2.136719 -4.550781 -2.023438 C -4.273438 -1.902344 -3.890625 -1.84375 -3.40625 -1.847656 L 0 -1.84375 Z M 0 -0.789063 "/> +</symbol> +<symbol overflow="visible" id="glyph1-7"> +<path style="stroke:none;" d="M -0.765625 -4.851563 C -0.433594 -4.460938 -0.199219 -4.082031 -0.0625 -3.722656 C 0.0742188 -3.355469 0.140625 -2.96875 0.140625 -2.5625 C 0.140625 -1.875 -0.0234375 -1.351563 -0.359375 -0.984375 C -0.6875 -0.617188 -1.117188 -0.433594 -1.640625 -0.433594 C -1.945313 -0.433594 -2.222656 -0.5 -2.472656 -0.640625 C -2.722656 -0.777344 -2.925781 -0.960938 -3.082031 -1.1875 C -3.234375 -1.410156 -3.347656 -1.664063 -3.429688 -1.945313 C -3.476563 -2.152344 -3.53125 -2.464844 -3.585938 -2.882813 C -3.6875 -3.734375 -3.808594 -4.359375 -3.949219 -4.765625 C -4.089844 -4.765625 -4.179688 -4.769531 -4.226563 -4.769531 C -4.648438 -4.769531 -4.953125 -4.667969 -5.132813 -4.46875 C -5.371094 -4.199219 -5.488281 -3.800781 -5.492188 -3.269531 C -5.488281 -2.773438 -5.402344 -2.40625 -5.230469 -2.171875 C -5.054688 -1.933594 -4.746094 -1.757813 -4.304688 -1.648438 L -4.445313 -0.617188 C -4.886719 -0.707031 -5.242188 -0.863281 -5.515625 -1.078125 C -5.78125 -1.292969 -5.992188 -1.601563 -6.140625 -2.011719 C -6.289063 -2.414063 -6.363281 -2.886719 -6.363281 -3.421875 C -6.363281 -3.953125 -6.300781 -4.382813 -6.175781 -4.714844 C -6.050781 -5.046875 -5.890625 -5.292969 -5.703125 -5.449219 C -5.511719 -5.605469 -5.273438 -5.714844 -4.984375 -5.777344 C -4.804688 -5.808594 -4.480469 -5.824219 -4.015625 -5.828125 L -2.605469 -5.828125 C -1.625 -5.824219 -1.003906 -5.847656 -0.746094 -5.894531 C -0.480469 -5.941406 -0.234375 -6.03125 0 -6.164063 L 0 -5.0625 C -0.21875 -4.953125 -0.472656 -4.882813 -0.765625 -4.851563 Z M -3.121094 -4.765625 C -2.960938 -4.375 -2.828125 -3.800781 -2.726563 -3.039063 C -2.660156 -2.605469 -2.589844 -2.300781 -2.515625 -2.121094 C -2.433594 -1.941406 -2.320313 -1.800781 -2.171875 -1.703125 C -2.019531 -1.605469 -1.851563 -1.558594 -1.671875 -1.558594 C -1.386719 -1.558594 -1.152344 -1.664063 -0.964844 -1.875 C -0.773438 -2.085938 -0.679688 -2.398438 -0.683594 -2.8125 C -0.679688 -3.21875 -0.769531 -3.578125 -0.949219 -3.894531 C -1.128906 -4.210938 -1.371094 -4.445313 -1.679688 -4.59375 C -1.917969 -4.707031 -2.269531 -4.761719 -2.734375 -4.765625 Z M -3.121094 -4.765625 "/> +</symbol> +<symbol overflow="visible" id="glyph1-8"> +<path style="stroke:none;" d="M 0.148438 0 L -8.734375 -2.492188 L -8.734375 -3.335938 L 0.148438 -0.851563 Z M 0.148438 0 "/> +</symbol> +<symbol overflow="visible" id="glyph1-9"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph1-10"> +<path style="stroke:none;" d="M -3.109375 -0.398438 C -4.261719 -0.398438 -5.117188 -0.71875 -5.671875 -1.359375 C -6.132813 -1.894531 -6.363281 -2.546875 -6.363281 -3.316406 C -6.363281 -4.171875 -6.082031 -4.871094 -5.519531 -5.414063 C -4.957031 -5.953125 -4.183594 -6.222656 -3.199219 -6.226563 C -2.394531 -6.222656 -1.761719 -6.101563 -1.308594 -5.867188 C -0.847656 -5.625 -0.492188 -5.277344 -0.238281 -4.820313 C 0.015625 -4.359375 0.140625 -3.859375 0.140625 -3.316406 C 0.140625 -2.441406 -0.136719 -1.734375 -0.695313 -1.203125 C -1.253906 -0.664063 -2.058594 -0.398438 -3.109375 -0.398438 Z M -3.109375 -1.484375 C -2.308594 -1.480469 -1.710938 -1.65625 -1.320313 -2.003906 C -0.921875 -2.347656 -0.726563 -2.785156 -0.726563 -3.316406 C -0.726563 -3.839844 -0.925781 -4.273438 -1.324219 -4.621094 C -1.722656 -4.96875 -2.328125 -5.144531 -3.144531 -5.144531 C -3.914063 -5.144531 -4.496094 -4.96875 -4.894531 -4.617188 C -5.289063 -4.265625 -5.488281 -3.832031 -5.492188 -3.316406 C -5.488281 -2.789063 -5.292969 -2.351563 -4.898438 -2.003906 C -4.5 -1.65625 -3.902344 -1.480469 -3.109375 -1.484375 Z M -3.109375 -1.484375 "/> +</symbol> +<symbol overflow="visible" id="glyph1-11"> +<path style="stroke:none;" d="M 0 -4.867188 L -0.914063 -4.867188 C -0.210938 -4.378906 0.140625 -3.722656 0.140625 -2.894531 C 0.140625 -2.527344 0.0703125 -2.183594 -0.0703125 -1.867188 C -0.210938 -1.546875 -0.386719 -1.308594 -0.597656 -1.15625 C -0.808594 -1 -1.070313 -0.894531 -1.382813 -0.832031 C -1.589844 -0.789063 -1.917969 -0.765625 -2.367188 -0.769531 L -6.222656 -0.769531 L -6.222656 -1.824219 L -2.773438 -1.824219 C -2.21875 -1.820313 -1.847656 -1.84375 -1.65625 -1.886719 C -1.378906 -1.949219 -1.160156 -2.089844 -1.003906 -2.308594 C -0.839844 -2.523438 -0.761719 -2.789063 -0.765625 -3.105469 C -0.761719 -3.417969 -0.84375 -3.714844 -1.007813 -3.996094 C -1.171875 -4.273438 -1.390625 -4.46875 -1.671875 -4.585938 C -1.945313 -4.699219 -2.351563 -4.757813 -2.886719 -4.757813 L -6.222656 -4.757813 L -6.222656 -5.8125 L 0 -5.8125 Z M 0 -4.867188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-0"> +<path style="stroke:none;" d="M 1.800781 0 L 1.800781 -9 L 9 -9 L 9 0 Z M 2.023438 -0.226563 L 8.773438 -0.226563 L 8.773438 -8.773438 L 2.023438 -8.773438 Z M 2.023438 -0.226563 "/> +</symbol> +<symbol overflow="visible" id="glyph2-1"> +<path style="stroke:none;" d="M 0.519531 -3.355469 L 2.546875 -3.550781 C 2.664063 -2.871094 2.910156 -2.371094 3.285156 -2.050781 C 3.65625 -1.730469 4.160156 -1.570313 4.796875 -1.574219 C 5.464844 -1.570313 5.96875 -1.710938 6.308594 -2 C 6.648438 -2.28125 6.820313 -2.613281 6.820313 -2.996094 C 6.820313 -3.234375 6.746094 -3.441406 6.605469 -3.617188 C 6.457031 -3.785156 6.207031 -3.933594 5.855469 -4.0625 C 5.609375 -4.144531 5.054688 -4.296875 4.191406 -4.515625 C 3.070313 -4.789063 2.289063 -5.128906 1.84375 -5.535156 C 1.207031 -6.097656 0.890625 -6.789063 0.894531 -7.609375 C 0.890625 -8.128906 1.039063 -8.617188 1.339844 -9.078125 C 1.632813 -9.53125 2.0625 -9.882813 2.625 -10.125 C 3.183594 -10.363281 3.859375 -10.480469 4.65625 -10.484375 C 5.945313 -10.480469 6.917969 -10.199219 7.574219 -9.632813 C 8.226563 -9.0625 8.570313 -8.304688 8.605469 -7.363281 L 6.523438 -7.269531 C 6.429688 -7.796875 6.238281 -8.179688 5.949219 -8.414063 C 5.652344 -8.644531 5.214844 -8.757813 4.632813 -8.761719 C 4.027344 -8.757813 3.554688 -8.632813 3.214844 -8.386719 C 2.992188 -8.222656 2.882813 -8.011719 2.882813 -7.75 C 2.882813 -7.503906 2.984375 -7.292969 3.191406 -7.121094 C 3.453125 -6.898438 4.089844 -6.671875 5.105469 -6.433594 C 6.113281 -6.191406 6.863281 -5.941406 7.351563 -5.691406 C 7.832031 -5.433594 8.210938 -5.085938 8.488281 -4.644531 C 8.761719 -4.199219 8.898438 -3.652344 8.902344 -3.003906 C 8.898438 -2.410156 8.734375 -1.855469 8.410156 -1.34375 C 8.078125 -0.824219 7.613281 -0.441406 7.015625 -0.191406 C 6.414063 0.0585938 5.667969 0.179688 4.773438 0.183594 C 3.46875 0.179688 2.46875 -0.117188 1.769531 -0.71875 C 1.070313 -1.320313 0.652344 -2.199219 0.519531 -3.355469 Z M 0.519531 -3.355469 "/> +</symbol> +<symbol overflow="visible" id="glyph2-2"> +<path style="stroke:none;" d="M 5.949219 0 L 5.949219 -1.117188 C 5.671875 -0.714844 5.316406 -0.402344 4.875 -0.175781 C 4.429688 0.0507813 3.960938 0.164063 3.472656 0.167969 C 2.96875 0.164063 2.519531 0.0585938 2.125 -0.160156 C 1.722656 -0.378906 1.433594 -0.691406 1.257813 -1.089844 C 1.078125 -1.488281 0.988281 -2.039063 0.992188 -2.742188 L 0.992188 -7.46875 L 2.96875 -7.46875 L 2.96875 -4.035156 C 2.964844 -2.984375 3 -2.339844 3.074219 -2.105469 C 3.144531 -1.863281 3.277344 -1.675781 3.472656 -1.542969 C 3.664063 -1.402344 3.90625 -1.335938 4.203125 -1.335938 C 4.539063 -1.335938 4.84375 -1.425781 5.109375 -1.613281 C 5.375 -1.792969 5.558594 -2.023438 5.660156 -2.300781 C 5.757813 -2.574219 5.804688 -3.246094 5.808594 -4.316406 L 5.808594 -7.46875 L 7.785156 -7.46875 L 7.785156 0 Z M 5.949219 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-3"> +<path style="stroke:none;" d="M 0.976563 -7.46875 L 2.820313 -7.46875 L 2.820313 -6.371094 C 3.054688 -6.742188 3.378906 -7.046875 3.789063 -7.285156 C 4.195313 -7.515625 4.648438 -7.632813 5.148438 -7.636719 C 6.011719 -7.632813 6.746094 -7.292969 7.355469 -6.617188 C 7.957031 -5.933594 8.261719 -4.988281 8.261719 -3.777344 C 8.261719 -2.527344 7.957031 -1.558594 7.347656 -0.867188 C 6.738281 -0.179688 6 0.164063 5.132813 0.167969 C 4.71875 0.164063 4.34375 0.0859375 4.011719 -0.078125 C 3.671875 -0.238281 3.320313 -0.519531 2.953125 -0.921875 L 2.953125 2.839844 L 0.976563 2.839844 Z M 2.933594 -3.859375 C 2.929688 -3.019531 3.09375 -2.398438 3.429688 -2 C 3.757813 -1.59375 4.164063 -1.394531 4.648438 -1.398438 C 5.101563 -1.394531 5.484375 -1.578125 5.792969 -1.949219 C 6.09375 -2.316406 6.246094 -2.921875 6.25 -3.761719 C 6.246094 -4.542969 6.089844 -5.121094 5.777344 -5.503906 C 5.464844 -5.878906 5.074219 -6.070313 4.613281 -6.074219 C 4.125 -6.070313 3.726563 -5.882813 3.410156 -5.515625 C 3.089844 -5.140625 2.929688 -4.589844 2.933594 -3.859375 Z M 2.933594 -3.859375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-4"> +<path style="stroke:none;" d="M 5.359375 -2.375 L 7.328125 -2.046875 C 7.070313 -1.320313 6.667969 -0.773438 6.125 -0.398438 C 5.578125 -0.0234375 4.898438 0.164063 4.078125 0.167969 C 2.777344 0.164063 1.816406 -0.257813 1.195313 -1.105469 C 0.703125 -1.78125 0.457031 -2.636719 0.457031 -3.675781 C 0.457031 -4.910156 0.777344 -5.882813 1.425781 -6.585938 C 2.070313 -7.285156 2.890625 -7.632813 3.882813 -7.636719 C 4.988281 -7.632813 5.863281 -7.265625 6.507813 -6.535156 C 7.148438 -5.796875 7.457031 -4.675781 7.433594 -3.164063 L 2.480469 -3.164063 C 2.492188 -2.578125 2.652344 -2.121094 2.960938 -1.796875 C 3.261719 -1.46875 3.640625 -1.304688 4.097656 -1.308594 C 4.402344 -1.304688 4.664063 -1.390625 4.878906 -1.558594 C 5.085938 -1.726563 5.246094 -1.996094 5.359375 -2.375 Z M 5.46875 -4.375 C 5.453125 -4.941406 5.308594 -5.375 5.027344 -5.675781 C 4.746094 -5.972656 4.402344 -6.121094 4 -6.125 C 3.566406 -6.121094 3.210938 -5.964844 2.933594 -5.652344 C 2.648438 -5.335938 2.507813 -4.910156 2.515625 -4.375 Z M 5.46875 -4.375 "/> +</symbol> +<symbol overflow="visible" id="glyph2-5"> +<path style="stroke:none;" d="M 2.925781 0 L 0.949219 0 L 0.949219 -7.46875 L 2.785156 -7.46875 L 2.785156 -6.40625 C 3.09375 -6.902344 3.375 -7.234375 3.628906 -7.394531 C 3.878906 -7.554688 4.164063 -7.632813 4.484375 -7.636719 C 4.929688 -7.632813 5.363281 -7.507813 5.785156 -7.261719 L 5.175781 -5.539063 C 4.839844 -5.75 4.53125 -5.859375 4.246094 -5.863281 C 3.96875 -5.859375 3.734375 -5.78125 3.542969 -5.632813 C 3.347656 -5.476563 3.195313 -5.203125 3.089844 -4.808594 C 2.976563 -4.40625 2.921875 -3.570313 2.925781 -2.304688 Z M 2.925781 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-6"> +<path style="stroke:none;" d="M 0.808594 -2.75 L 0.808594 -4.726563 L 4.691406 -4.726563 L 4.691406 -2.75 Z M 0.808594 -2.75 "/> +</symbol> +<symbol overflow="visible" id="glyph2-7"> +<path style="stroke:none;" d="M 2.511719 -5.1875 L 0.71875 -5.511719 C 0.917969 -6.230469 1.265625 -6.765625 1.757813 -7.113281 C 2.25 -7.460938 2.980469 -7.632813 3.953125 -7.636719 C 4.832031 -7.632813 5.488281 -7.53125 5.917969 -7.324219 C 6.347656 -7.113281 6.648438 -6.847656 6.828125 -6.527344 C 7 -6.207031 7.089844 -5.617188 7.09375 -4.761719 L 7.074219 -2.453125 C 7.070313 -1.792969 7.101563 -1.308594 7.167969 -1 C 7.226563 -0.6875 7.347656 -0.355469 7.523438 0 L 5.570313 0 C 5.515625 -0.128906 5.453125 -0.320313 5.378906 -0.582031 C 5.34375 -0.695313 5.320313 -0.773438 5.308594 -0.816406 C 4.96875 -0.484375 4.605469 -0.238281 4.222656 -0.078125 C 3.835938 0.0859375 3.425781 0.164063 2.996094 0.167969 C 2.222656 0.164063 1.617188 -0.0429688 1.175781 -0.457031 C 0.730469 -0.871094 0.507813 -1.398438 0.511719 -2.039063 C 0.507813 -2.460938 0.609375 -2.835938 0.8125 -3.167969 C 1.011719 -3.496094 1.292969 -3.75 1.660156 -3.925781 C 2.019531 -4.101563 2.546875 -4.253906 3.234375 -4.386719 C 4.15625 -4.558594 4.792969 -4.71875 5.152344 -4.871094 L 5.152344 -5.070313 C 5.148438 -5.445313 5.054688 -5.71875 4.871094 -5.882813 C 4.679688 -6.042969 4.328125 -6.121094 3.8125 -6.125 C 3.457031 -6.121094 3.183594 -6.054688 2.988281 -5.917969 C 2.789063 -5.777344 2.628906 -5.53125 2.511719 -5.1875 Z M 5.152344 -3.585938 C 4.894531 -3.5 4.496094 -3.398438 3.949219 -3.285156 C 3.402344 -3.164063 3.042969 -3.046875 2.875 -2.9375 C 2.613281 -2.75 2.484375 -2.519531 2.488281 -2.242188 C 2.484375 -1.964844 2.585938 -1.726563 2.796875 -1.523438 C 3 -1.320313 3.265625 -1.21875 3.585938 -1.222656 C 3.941406 -1.21875 4.28125 -1.335938 4.605469 -1.574219 C 4.84375 -1.75 5 -1.96875 5.078125 -2.230469 C 5.125 -2.394531 5.148438 -2.714844 5.152344 -3.191406 Z M 5.152344 -3.585938 "/> +</symbol> +<symbol overflow="visible" id="glyph2-8"> +<path style="stroke:none;" d="M 7.542969 -5.257813 L 5.597656 -4.90625 C 5.527344 -5.292969 5.378906 -5.585938 5.148438 -5.785156 C 4.914063 -5.980469 4.613281 -6.082031 4.246094 -6.082031 C 3.75 -6.082031 3.355469 -5.910156 3.066406 -5.570313 C 2.769531 -5.230469 2.625 -4.664063 2.628906 -3.867188 C 2.625 -2.980469 2.773438 -2.351563 3.074219 -1.988281 C 3.371094 -1.621094 3.769531 -1.441406 4.273438 -1.441406 C 4.644531 -1.441406 4.953125 -1.546875 5.195313 -1.761719 C 5.433594 -1.972656 5.601563 -2.339844 5.703125 -2.863281 L 7.644531 -2.53125 C 7.4375 -1.640625 7.050781 -0.964844 6.480469 -0.511719 C 5.910156 -0.0585938 5.144531 0.164063 4.183594 0.167969 C 3.089844 0.164063 2.21875 -0.175781 1.570313 -0.863281 C 0.921875 -1.550781 0.597656 -2.507813 0.597656 -3.726563 C 0.597656 -4.957031 0.921875 -5.914063 1.574219 -6.605469 C 2.222656 -7.289063 3.105469 -7.632813 4.21875 -7.636719 C 5.125 -7.632813 5.847656 -7.4375 6.386719 -7.046875 C 6.921875 -6.652344 7.304688 -6.054688 7.542969 -5.257813 Z M 7.542969 -5.257813 "/> +</symbol> +<symbol overflow="visible" id="glyph2-9"> +<path style="stroke:none;" d="M 4.457031 -7.46875 L 4.457031 -5.890625 L 3.109375 -5.890625 L 3.109375 -2.882813 C 3.105469 -2.273438 3.117188 -1.917969 3.144531 -1.816406 C 3.167969 -1.714844 3.226563 -1.628906 3.320313 -1.566406 C 3.410156 -1.496094 3.523438 -1.464844 3.65625 -1.46875 C 3.835938 -1.464844 4.097656 -1.527344 4.449219 -1.660156 L 4.621094 -0.125 C 4.15625 0.0703125 3.636719 0.164063 3.058594 0.167969 C 2.699219 0.164063 2.375 0.105469 2.09375 -0.0117188 C 1.804688 -0.128906 1.597656 -0.28125 1.464844 -0.472656 C 1.332031 -0.660156 1.238281 -0.917969 1.1875 -1.246094 C 1.144531 -1.472656 1.125 -1.9375 1.125 -2.636719 L 1.125 -5.890625 L 0.21875 -5.890625 L 0.21875 -7.46875 L 1.125 -7.46875 L 1.125 -8.949219 L 3.109375 -10.105469 L 3.109375 -7.46875 Z M 4.457031 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-10"> +<path style="stroke:none;" d="M 1.035156 -8.480469 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 -8.480469 Z M 1.035156 0 L 1.035156 -7.46875 L 3.007813 -7.46875 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-11"> +<path style="stroke:none;" d="M 3.085938 0 L 0.078125 -7.46875 L 2.152344 -7.46875 L 3.558594 -3.65625 L 3.964844 -2.382813 C 4.070313 -2.703125 4.136719 -2.917969 4.167969 -3.023438 C 4.230469 -3.234375 4.300781 -3.445313 4.378906 -3.65625 L 5.800781 -7.46875 L 7.832031 -7.46875 L 4.867188 0 Z M 3.085938 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-12"> +<path style="stroke:none;" d=""/> +</symbol> +<symbol overflow="visible" id="glyph2-13"> +<path style="stroke:none;" d="M 0.949219 0 L 0.949219 -10.308594 L 2.925781 -10.308594 L 2.925781 -6.59375 C 3.53125 -7.285156 4.253906 -7.632813 5.089844 -7.636719 C 5.996094 -7.632813 6.75 -7.304688 7.347656 -6.648438 C 7.941406 -5.988281 8.238281 -5.042969 8.242188 -3.8125 C 8.238281 -2.535156 7.933594 -1.550781 7.328125 -0.863281 C 6.71875 -0.175781 5.980469 0.164063 5.117188 0.167969 C 4.6875 0.164063 4.269531 0.0585938 3.855469 -0.152344 C 3.441406 -0.363281 3.082031 -0.675781 2.785156 -1.097656 L 2.785156 0 Z M 2.910156 -3.894531 C 2.90625 -3.117188 3.027344 -2.546875 3.277344 -2.179688 C 3.613281 -1.652344 4.070313 -1.386719 4.640625 -1.390625 C 5.074219 -1.386719 5.445313 -1.574219 5.753906 -1.949219 C 6.058594 -2.320313 6.210938 -2.90625 6.214844 -3.710938 C 6.210938 -4.5625 6.054688 -5.179688 5.75 -5.558594 C 5.4375 -5.933594 5.042969 -6.121094 4.5625 -6.125 C 4.085938 -6.121094 3.691406 -5.9375 3.378906 -5.570313 C 3.0625 -5.199219 2.90625 -4.640625 2.910156 -3.894531 Z M 2.910156 -3.894531 "/> +</symbol> +<symbol overflow="visible" id="glyph2-14"> +<path style="stroke:none;" d="M 0.167969 -7.46875 L 1.265625 -7.46875 L 1.265625 -8.03125 C 1.265625 -8.65625 1.332031 -9.125 1.464844 -9.433594 C 1.597656 -9.742188 1.84375 -9.992188 2.203125 -10.191406 C 2.5625 -10.382813 3.015625 -10.480469 3.566406 -10.484375 C 4.125 -10.480469 4.675781 -10.398438 5.21875 -10.230469 L 4.949219 -8.851563 C 4.632813 -8.925781 4.332031 -8.964844 4.042969 -8.964844 C 3.753906 -8.964844 3.546875 -8.894531 3.425781 -8.761719 C 3.300781 -8.625 3.238281 -8.371094 3.242188 -7.996094 L 3.242188 -7.46875 L 4.71875 -7.46875 L 4.71875 -5.914063 L 3.242188 -5.914063 L 3.242188 0 L 1.265625 0 L 1.265625 -5.914063 L 0.167969 -5.914063 Z M 0.167969 -7.46875 "/> +</symbol> +<symbol overflow="visible" id="glyph2-15"> +<path style="stroke:none;" d="M 1.035156 0 L 1.035156 -10.308594 L 3.007813 -10.308594 L 3.007813 0 Z M 1.035156 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-16"> +<path style="stroke:none;" d="M 0.335938 -2.128906 L 2.320313 -2.433594 C 2.402344 -2.042969 2.570313 -1.75 2.832031 -1.554688 C 3.085938 -1.351563 3.449219 -1.253906 3.917969 -1.257813 C 4.425781 -1.253906 4.808594 -1.347656 5.070313 -1.539063 C 5.238281 -1.667969 5.324219 -1.84375 5.328125 -2.066406 C 5.324219 -2.214844 5.277344 -2.339844 5.1875 -2.441406 C 5.085938 -2.53125 4.867188 -2.617188 4.527344 -2.699219 C 2.929688 -3.046875 1.917969 -3.367188 1.496094 -3.664063 C 0.902344 -4.0625 0.609375 -4.625 0.613281 -5.34375 C 0.609375 -5.988281 0.863281 -6.53125 1.378906 -6.972656 C 1.886719 -7.414063 2.679688 -7.632813 3.753906 -7.636719 C 4.773438 -7.632813 5.53125 -7.46875 6.03125 -7.136719 C 6.523438 -6.800781 6.867188 -6.308594 7.058594 -5.660156 L 5.195313 -5.316406 C 5.113281 -5.601563 4.960938 -5.824219 4.742188 -5.980469 C 4.515625 -6.132813 4.199219 -6.210938 3.789063 -6.214844 C 3.265625 -6.210938 2.894531 -6.136719 2.671875 -5.996094 C 2.519531 -5.890625 2.441406 -5.757813 2.445313 -5.597656 C 2.441406 -5.453125 2.507813 -5.335938 2.644531 -5.238281 C 2.816406 -5.105469 3.433594 -4.917969 4.488281 -4.683594 C 5.539063 -4.441406 6.273438 -4.148438 6.695313 -3.804688 C 7.105469 -3.449219 7.3125 -2.960938 7.3125 -2.335938 C 7.3125 -1.648438 7.023438 -1.058594 6.453125 -0.570313 C 5.878906 -0.078125 5.035156 0.164063 3.917969 0.167969 C 2.898438 0.164063 2.09375 -0.0390625 1.5 -0.449219 C 0.90625 -0.859375 0.515625 -1.417969 0.335938 -2.128906 Z M 0.335938 -2.128906 "/> +</symbol> +<symbol overflow="visible" id="glyph2-17"> +<path style="stroke:none;" d="M 0.597656 -5.738281 L 0.597656 -7.550781 L 7.804688 -7.550781 L 7.804688 -5.738281 Z M 0.597656 -2.617188 L 0.597656 -4.4375 L 7.804688 -4.4375 L 7.804688 -2.617188 Z M 0.597656 -2.617188 "/> +</symbol> +<symbol overflow="visible" id="glyph2-18"> +<path style="stroke:none;" d="M 5.667969 0 L 3.691406 0 L 3.691406 -7.445313 C 2.96875 -6.769531 2.117188 -6.269531 1.140625 -5.949219 L 1.140625 -7.742188 C 1.652344 -7.90625 2.210938 -8.226563 2.820313 -8.699219 C 3.421875 -9.167969 3.835938 -9.71875 4.0625 -10.351563 L 5.667969 -10.351563 Z M 5.667969 0 "/> +</symbol> +<symbol overflow="visible" id="glyph2-19"> +<path style="stroke:none;" d="M 0.640625 -2.652344 L 2.609375 -2.855469 C 2.660156 -2.40625 2.828125 -2.054688 3.105469 -1.796875 C 3.382813 -1.535156 3.699219 -1.40625 4.0625 -1.40625 C 4.472656 -1.40625 4.824219 -1.570313 5.109375 -1.90625 C 5.394531 -2.238281 5.535156 -2.746094 5.539063 -3.425781 C 5.535156 -4.054688 5.394531 -4.527344 5.113281 -4.847656 C 4.828125 -5.160156 4.460938 -5.320313 4.007813 -5.324219 C 3.4375 -5.320313 2.925781 -5.070313 2.480469 -4.570313 L 0.878906 -4.800781 L 1.890625 -10.167969 L 7.117188 -10.167969 L 7.117188 -8.316406 L 3.390625 -8.316406 L 3.078125 -6.566406 C 3.515625 -6.785156 3.96875 -6.894531 4.429688 -6.898438 C 5.304688 -6.894531 6.046875 -6.578125 6.660156 -5.941406 C 7.265625 -5.300781 7.570313 -4.472656 7.574219 -3.460938 C 7.570313 -2.609375 7.324219 -1.851563 6.835938 -1.1875 C 6.160156 -0.277344 5.230469 0.175781 4.042969 0.175781 C 3.089844 0.175781 2.3125 -0.078125 1.714844 -0.589844 C 1.113281 -1.097656 0.753906 -1.785156 0.640625 -2.652344 Z M 0.640625 -2.652344 "/> +</symbol> +<symbol overflow="visible" id="glyph2-20"> +<path style="stroke:none;" d="M 0.625 -7.761719 C 0.621094 -8.683594 0.824219 -9.367188 1.234375 -9.816406 C 1.636719 -10.257813 2.1875 -10.480469 2.882813 -10.484375 C 3.597656 -10.480469 4.15625 -10.261719 4.566406 -9.820313 C 4.96875 -9.375 5.171875 -8.6875 5.175781 -7.761719 C 5.171875 -6.835938 4.96875 -6.152344 4.566406 -5.710938 C 4.15625 -5.261719 3.609375 -5.039063 2.917969 -5.042969 C 2.199219 -5.039063 1.636719 -5.261719 1.234375 -5.707031 C 0.824219 -6.148438 0.621094 -6.832031 0.625 -7.761719 Z M 2.164063 -7.777344 C 2.160156 -7.101563 2.238281 -6.652344 2.398438 -6.425781 C 2.511719 -6.253906 2.675781 -6.167969 2.882813 -6.171875 C 3.09375 -6.167969 3.257813 -6.253906 3.375 -6.425781 C 3.523438 -6.652344 3.597656 -7.101563 3.601563 -7.777344 C 3.597656 -8.441406 3.523438 -8.890625 3.375 -9.121094 C 3.257813 -9.289063 3.09375 -9.375 2.882813 -9.378906 C 2.675781 -9.375 2.511719 -9.289063 2.398438 -9.125 C 2.238281 -8.890625 2.160156 -8.441406 2.164063 -7.777344 Z M 4.386719 0.394531 L 2.925781 0.394531 L 8.417969 -10.484375 L 9.835938 -10.484375 Z M 7.578125 -2.3125 C 7.574219 -3.234375 7.777344 -3.917969 8.1875 -4.367188 C 8.589844 -4.808594 9.144531 -5.03125 9.851563 -5.035156 C 10.554688 -5.03125 11.113281 -4.808594 11.519531 -4.367188 C 11.925781 -3.917969 12.128906 -3.234375 12.128906 -2.3125 C 12.128906 -1.382813 11.925781 -0.695313 11.519531 -0.253906 C 11.113281 0.191406 10.5625 0.410156 9.871094 0.414063 C 9.152344 0.410156 8.589844 0.191406 8.1875 -0.253906 C 7.777344 -0.695313 7.574219 -1.382813 7.578125 -2.3125 Z M 9.121094 -2.320313 C 9.117188 -1.648438 9.195313 -1.199219 9.351563 -0.976563 C 9.46875 -0.800781 9.628906 -0.714844 9.835938 -0.71875 C 10.042969 -0.714844 10.203125 -0.796875 10.320313 -0.96875 C 10.472656 -1.195313 10.550781 -1.648438 10.554688 -2.320313 C 10.550781 -2.988281 10.476563 -3.4375 10.328125 -3.671875 C 10.207031 -3.835938 10.042969 -3.917969 9.835938 -3.921875 C 9.621094 -3.917969 9.460938 -3.835938 9.351563 -3.671875 C 9.195313 -3.4375 9.117188 -2.988281 9.121094 -2.320313 Z M 9.121094 -2.320313 "/> +</symbol> +</g> +</defs> +<g id="surface36"> +<rect x="0" y="0" width="504" height="504" style="fill:rgb(100%,100%,100%);fill-opacity:1;stroke:none;"/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.992188 C 77.101563 407.589844 71.699219 407.589844 71.699219 403.992188 C 71.699219 400.390625 77.101563 400.390625 77.101563 403.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.464844 385.695313 C 94.464844 389.292969 89.0625 389.292969 89.0625 385.695313 C 89.0625 382.09375 94.464844 382.09375 94.464844 385.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.152344 371.054688 C 107.152344 374.65625 101.753906 374.65625 101.753906 371.054688 C 101.753906 367.457031 107.152344 367.457031 107.152344 371.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.84375 354.585938 C 121.84375 358.1875 116.445313 358.1875 116.445313 354.585938 C 116.445313 350.988281 121.84375 350.988281 121.84375 354.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.875 332.628906 C 139.875 336.230469 134.476563 336.230469 134.476563 332.628906 C 134.476563 329.03125 139.875 329.03125 139.875 332.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.578125 312.503906 C 160.578125 316.101563 155.179688 316.101563 155.179688 312.503906 C 155.179688 308.902344 160.578125 308.902344 160.578125 312.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.269531 296.035156 C 175.269531 299.632813 169.871094 299.632813 169.871094 296.035156 C 169.871094 292.433594 175.269531 292.433594 175.269531 296.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.304688 277.734375 C 195.304688 281.335938 189.90625 281.335938 189.90625 277.734375 C 189.90625 274.136719 195.304688 274.136719 195.304688 277.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 216.007813 257.609375 C 216.007813 261.207031 210.609375 261.207031 210.609375 257.609375 C 210.609375 254.007813 216.007813 254.007813 216.007813 257.609375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 237.378906 237.480469 C 237.378906 241.082031 231.976563 241.082031 231.976563 237.480469 C 231.976563 233.878906 237.378906 233.878906 237.378906 237.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 256.746094 221.011719 C 256.746094 224.613281 251.34375 224.613281 251.34375 221.011719 C 251.34375 217.414063 256.746094 217.414063 256.746094 221.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.785156 200.886719 C 278.785156 204.484375 273.382813 204.484375 273.382813 200.886719 C 273.382813 197.285156 278.785156 197.285156 278.785156 200.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.820313 180.757813 C 300.820313 184.359375 295.421875 184.359375 295.421875 180.757813 C 295.421875 177.15625 300.820313 177.15625 300.820313 180.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.203125 160.628906 C 328.203125 164.230469 322.800781 164.230469 322.800781 160.628906 C 322.800781 157.03125 328.203125 157.03125 328.203125 160.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 343.5625 147.820313 C 343.5625 151.421875 338.164063 151.421875 338.164063 147.820313 C 338.164063 144.222656 343.5625 144.222656 343.5625 147.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.585938 138.671875 C 357.585938 142.273438 352.1875 142.273438 352.1875 138.671875 C 352.1875 135.074219 357.585938 135.074219 357.585938 138.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 372.277344 127.695313 C 372.277344 131.292969 366.878906 131.292969 366.878906 127.695313 C 366.878906 124.09375 372.277344 124.09375 372.277344 127.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.976563 118.542969 C 388.976563 122.144531 383.574219 122.144531 383.574219 118.542969 C 383.574219 114.945313 388.976563 114.945313 388.976563 118.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.003906 105.734375 C 405.003906 109.335938 399.601563 109.335938 399.601563 105.734375 C 399.601563 102.136719 405.003906 102.136719 405.003906 105.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.378906 89.269531 C 430.378906 92.867188 424.980469 92.867188 424.980469 89.269531 C 424.980469 85.667969 430.378906 85.667969 430.378906 89.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.738281 81.949219 C 443.738281 85.550781 438.335938 85.550781 438.335938 81.949219 C 438.335938 78.347656 443.738281 78.347656 443.738281 81.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.925781 430.558594 L 434.914063 430.558594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.925781 430.558594 L 121.925781 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 200.175781 430.558594 L 200.175781 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.421875 430.558594 L 278.421875 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.667969 430.558594 L 356.667969 437.761719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 434.914063 430.558594 L 434.914063 437.761719 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-1" x="118.589844" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-2" x="196.839844" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-3" x="275.085938" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-4" x="353.332031" y="456.480469"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-5" x="431.578125" y="456.480469"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 388.742188 L 59.039063 100.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 388.742188 L 51.839844 388.742188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 316.773438 L 51.839844 316.773438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 244.800781 L 51.839844 244.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 172.828125 L 51.839844 172.828125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 100.855469 L 51.839844 100.855469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-1" x="41.761719" y="392.078125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-2" x="41.761719" y="320.109375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-3" x="41.761719" y="248.136719"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-4" x="41.761719" y="176.164063"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-5" x="41.761719" y="104.191406"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.039063 430.558594 L 473.761719 430.558594 L 473.761719 59.039063 L 59.039063 59.039063 L 59.039063 430.558594 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph2-1" x="166.554688" y="34.675781"/> + <use xlink:href="#glyph2-2" x="176.159375" y="34.675781"/> + <use xlink:href="#glyph2-3" x="184.955469" y="34.675781"/> + <use xlink:href="#glyph2-4" x="193.751563" y="34.675781"/> + <use xlink:href="#glyph2-5" x="201.760156" y="34.675781"/> + <use xlink:href="#glyph2-6" x="207.364063" y="34.675781"/> + <use xlink:href="#glyph2-7" x="212.159375" y="34.675781"/> + <use xlink:href="#glyph2-8" x="220.167969" y="34.675781"/> + <use xlink:href="#glyph2-9" x="228.176562" y="34.675781"/> + <use xlink:href="#glyph2-10" x="232.971875" y="34.675781"/> + <use xlink:href="#glyph2-11" x="236.972656" y="34.675781"/> + <use xlink:href="#glyph2-4" x="244.98125" y="34.675781"/> + <use xlink:href="#glyph2-12" x="252.989844" y="34.675781"/> + <use xlink:href="#glyph2-13" x="256.990625" y="34.675781"/> + <use xlink:href="#glyph2-7" x="265.786719" y="34.675781"/> + <use xlink:href="#glyph2-14" x="273.795312" y="34.675781"/> + <use xlink:href="#glyph2-14" x="278.590625" y="34.675781"/> + <use xlink:href="#glyph2-15" x="283.385938" y="34.675781"/> + <use xlink:href="#glyph2-4" x="287.386719" y="34.675781"/> + <use xlink:href="#glyph2-16" x="295.395312" y="34.675781"/> + <use xlink:href="#glyph2-12" x="303.403906" y="34.675781"/> + <use xlink:href="#glyph2-1" x="307.404687" y="34.675781"/> + <use xlink:href="#glyph2-12" x="317.009375" y="34.675781"/> + <use xlink:href="#glyph2-17" x="321.010156" y="34.675781"/> + <use xlink:href="#glyph2-12" x="329.419531" y="34.675781"/> + <use xlink:href="#glyph2-18" x="333.420312" y="34.675781"/> + <use xlink:href="#glyph2-19" x="341.428906" y="34.675781"/> + <use xlink:href="#glyph2-12" x="349.4375" y="34.675781"/> + <use xlink:href="#glyph2-20" x="353.438281" y="34.675781"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-6" x="260.726563" y="485.28125"/> + <use xlink:href="#glyph0-7" x="267.400391" y="485.28125"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph1-6" x="12.960938" y="274.828125"/> + <use xlink:href="#glyph1-7" x="12.960938" y="268.154297"/> + <use xlink:href="#glyph1-8" x="12.960938" y="261.480469"/> + <use xlink:href="#glyph1-7" x="12.960938" y="258.146484"/> + <use xlink:href="#glyph1-9" x="12.960938" y="251.472656"/> + <use xlink:href="#glyph1-10" x="12.960938" y="248.138672"/> + <use xlink:href="#glyph1-11" x="12.960938" y="241.464844"/> + <use xlink:href="#glyph1-9" x="12.960938" y="234.791016"/> + <use xlink:href="#glyph1-6" x="12.960938" y="231.457031"/> + <use xlink:href="#glyph1-8" x="12.960938" y="224.783203"/> + <use xlink:href="#glyph1-7" x="12.960938" y="221.449219"/> +</g> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 77.101563 403.992188 C 77.101563 407.589844 71.699219 407.589844 71.699219 403.992188 C 71.699219 400.390625 77.101563 400.390625 77.101563 403.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 94.464844 385.695313 C 94.464844 389.292969 89.0625 389.292969 89.0625 385.695313 C 89.0625 382.09375 94.464844 382.09375 94.464844 385.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 107.152344 371.054688 C 107.152344 374.65625 101.753906 374.65625 101.753906 371.054688 C 101.753906 367.457031 107.152344 367.457031 107.152344 371.054688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 121.84375 354.585938 C 121.84375 358.1875 116.445313 358.1875 116.445313 354.585938 C 116.445313 350.988281 121.84375 350.988281 121.84375 354.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.875 332.628906 C 139.875 336.230469 134.476563 336.230469 134.476563 332.628906 C 134.476563 329.03125 139.875 329.03125 139.875 332.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 160.578125 312.503906 C 160.578125 316.101563 155.179688 316.101563 155.179688 312.503906 C 155.179688 308.902344 160.578125 308.902344 160.578125 312.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 175.269531 296.035156 C 175.269531 299.632813 169.871094 299.632813 169.871094 296.035156 C 169.871094 292.433594 175.269531 292.433594 175.269531 296.035156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 195.304688 277.734375 C 195.304688 281.335938 189.90625 281.335938 189.90625 277.734375 C 189.90625 274.136719 195.304688 274.136719 195.304688 277.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 216.007813 257.609375 C 216.007813 261.207031 210.609375 261.207031 210.609375 257.609375 C 210.609375 254.007813 216.007813 254.007813 216.007813 257.609375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 237.378906 237.480469 C 237.378906 241.082031 231.976563 241.082031 231.976563 237.480469 C 231.976563 233.878906 237.378906 233.878906 237.378906 237.480469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 256.746094 221.011719 C 256.746094 224.613281 251.34375 224.613281 251.34375 221.011719 C 251.34375 217.414063 256.746094 217.414063 256.746094 221.011719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 278.785156 200.886719 C 278.785156 204.484375 273.382813 204.484375 273.382813 200.886719 C 273.382813 197.285156 278.785156 197.285156 278.785156 200.886719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 300.820313 180.757813 C 300.820313 184.359375 295.421875 184.359375 295.421875 180.757813 C 295.421875 177.15625 300.820313 177.15625 300.820313 180.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 328.203125 160.628906 C 328.203125 164.230469 322.800781 164.230469 322.800781 160.628906 C 322.800781 157.03125 328.203125 157.03125 328.203125 160.628906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 343.5625 147.820313 C 343.5625 151.421875 338.164063 151.421875 338.164063 147.820313 C 338.164063 144.222656 343.5625 144.222656 343.5625 147.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 357.585938 138.671875 C 357.585938 142.273438 352.1875 142.273438 352.1875 138.671875 C 352.1875 135.074219 357.585938 135.074219 357.585938 138.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 372.277344 127.695313 C 372.277344 131.292969 366.878906 131.292969 366.878906 127.695313 C 366.878906 124.09375 372.277344 124.09375 372.277344 127.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 388.976563 118.542969 C 388.976563 122.144531 383.574219 122.144531 383.574219 118.542969 C 383.574219 114.945313 388.976563 114.945313 388.976563 118.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 405.003906 105.734375 C 405.003906 109.335938 399.601563 109.335938 399.601563 105.734375 C 399.601563 102.136719 405.003906 102.136719 405.003906 105.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 430.378906 89.269531 C 430.378906 92.867188 424.980469 92.867188 424.980469 89.269531 C 424.980469 85.667969 430.378906 85.667969 430.378906 89.269531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 443.738281 81.949219 C 443.738281 85.550781 438.335938 85.550781 438.335938 81.949219 C 438.335938 78.347656 443.738281 78.347656 443.738281 81.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 461.101563 72.800781 C 461.101563 76.398438 455.699219 76.398438 455.699219 72.800781 C 455.699219 69.199219 461.101563 69.199219 461.101563 72.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 404.910156 L 78.238281 400.410156 L 82.078125 395.929688 L 85.921875 391.476563 L 89.761719 387.042969 L 93.601563 382.636719 L 97.441406 378.253906 L 101.28125 373.894531 L 105.121094 369.558594 L 108.960938 365.246094 L 112.800781 360.957031 L 116.640625 356.691406 L 120.480469 352.453125 L 124.320313 348.234375 L 128.160156 344.042969 L 132 339.871094 L 135.839844 335.726563 L 139.679688 331.601563 L 143.519531 327.503906 L 147.359375 323.429688 L 151.199219 319.378906 L 155.039063 315.351563 L 158.878906 311.347656 L 162.71875 307.367188 L 166.558594 303.414063 L 170.398438 299.480469 L 174.238281 295.570313 L 178.078125 291.6875 L 181.921875 287.828125 L 185.761719 283.988281 L 189.601563 280.175781 L 193.441406 276.386719 L 197.28125 272.621094 L 201.121094 268.878906 L 204.960938 265.160156 L 208.800781 261.464844 L 212.640625 257.792969 L 216.480469 254.144531 L 220.320313 250.523438 L 224.160156 246.921875 L 228 243.347656 L 231.839844 239.792969 L 235.679688 236.265625 L 239.519531 232.761719 L 243.359375 229.28125 L 247.199219 225.824219 L 251.039063 222.390625 L 254.878906 218.980469 L 258.71875 215.59375 L 262.558594 212.230469 L 266.398438 208.894531 L 270.238281 205.578125 L 274.078125 202.289063 L 277.921875 199.019531 L 281.761719 195.777344 L 285.601563 192.558594 L 289.441406 189.363281 L 293.28125 186.1875 L 297.121094 183.039063 L 300.960938 179.917969 L 304.800781 176.816406 L 308.640625 173.738281 L 312.480469 170.683594 L 316.320313 167.65625 L 320.160156 164.648438 L 324 161.667969 L 327.839844 158.707031 L 331.679688 155.773438 L 335.519531 152.863281 L 339.359375 149.976563 L 343.199219 147.113281 L 347.039063 144.273438 L 350.878906 141.457031 L 354.71875 138.664063 L 358.558594 135.894531 L 362.398438 133.152344 L 366.238281 130.429688 L 370.078125 127.730469 L 373.921875 125.058594 L 377.761719 122.410156 L 381.601563 119.785156 L 385.441406 117.179688 L 389.28125 114.601563 L 393.121094 112.046875 L 396.960938 109.515625 L 400.800781 107.007813 L 404.640625 104.527344 L 408.480469 102.066406 L 412.320313 99.628906 L 416.160156 97.21875 L 420 94.828125 L 423.839844 92.464844 L 427.679688 90.125 L 431.519531 87.808594 L 435.359375 85.511719 L 439.199219 83.242188 L 443.039063 80.996094 L 446.878906 78.777344 L 450.71875 76.578125 L 454.558594 74.402344 L 458.398438 72.25 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 70.582031 416.800781 L 78.21875 416.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 420.617188 L 74.398438 412.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 81.265625 402.160156 L 88.902344 402.160156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.085938 405.980469 L 85.085938 398.34375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 92.621094 389.351563 L 100.257813 389.351563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 96.4375 393.171875 L 96.4375 385.535156 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 104.640625 376.542969 L 112.277344 376.542969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 108.460938 380.363281 L 108.460938 372.726563 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 115.324219 363.734375 L 122.960938 363.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 119.144531 367.554688 L 119.144531 359.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 125.34375 352.757813 L 132.980469 352.757813 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 129.160156 356.574219 L 129.160156 348.9375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 135.359375 341.777344 L 142.996094 341.777344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 139.179688 345.597656 L 139.179688 337.960938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 149.386719 328.96875 L 157.023438 328.96875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 153.203125 332.789063 L 153.203125 325.152344 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 164.746094 314.332031 L 172.382813 314.332031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 168.5625 318.148438 L 168.5625 310.511719 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 182.777344 299.695313 L 190.414063 299.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 186.59375 303.511719 L 186.59375 295.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 194.128906 288.714844 L 201.765625 288.714844 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 197.949219 292.535156 L 197.949219 284.898438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 209.488281 277.734375 L 217.125 277.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 213.308594 281.554688 L 213.308594 273.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 227.519531 263.097656 L 235.15625 263.097656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.339844 266.917969 L 231.339844 259.28125 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 240.878906 253.949219 L 248.515625 253.949219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.695313 257.765625 L 244.695313 250.128906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 254.234375 244.800781 L 261.871094 244.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 258.050781 248.617188 L 258.050781 240.980469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 270.261719 233.820313 L 277.898438 233.820313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 274.078125 237.640625 L 274.078125 230.003906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 284.953125 224.671875 L 292.589844 224.671875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 288.773438 228.492188 L 288.773438 220.855469 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 304.320313 213.695313 L 311.957031 213.695313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 308.140625 217.511719 L 308.140625 209.875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 315.671875 206.375 L 323.3125 206.375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 319.492188 210.191406 L 319.492188 202.554688 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 341.050781 191.734375 L 348.6875 191.734375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 344.871094 195.554688 L 344.871094 187.917969 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 356.410156 182.585938 L 364.046875 182.585938 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 360.230469 186.40625 L 360.230469 178.769531 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 370.433594 173.4375 L 378.074219 173.4375 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 374.253906 177.257813 L 374.253906 169.621094 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 392.472656 164.289063 L 400.109375 164.289063 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 396.292969 168.109375 L 396.292969 160.472656 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 411.171875 155.140625 L 418.808594 155.140625 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 414.992188 158.957031 L 414.992188 151.320313 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 429.871094 145.992188 L 437.507813 145.992188 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 433.691406 149.808594 L 433.691406 142.171875 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 442.5625 140.503906 L 450.199219 140.503906 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 446.378906 144.320313 L 446.378906 136.683594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 454.582031 133.183594 L 462.21875 133.183594 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 458.398438 137 L 458.398438 129.363281 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 74.398438 411.421875 L 78.238281 407.253906 L 82.078125 403.117188 L 85.921875 399.007813 L 89.761719 394.929688 L 93.601563 390.878906 L 97.441406 386.855469 L 101.28125 382.863281 L 105.121094 378.898438 L 108.960938 374.960938 L 112.800781 371.054688 L 116.640625 367.179688 L 120.480469 363.328125 L 124.320313 359.511719 L 128.160156 355.71875 L 132 351.957031 L 135.839844 348.222656 L 139.679688 344.519531 L 143.519531 340.84375 L 147.359375 337.199219 L 151.199219 333.582031 L 155.039063 329.992188 L 158.878906 326.433594 L 162.71875 322.902344 L 166.558594 319.398438 L 170.398438 315.925781 L 174.238281 312.480469 L 178.078125 309.066406 L 181.921875 305.679688 L 185.761719 302.324219 L 189.601563 298.996094 L 193.441406 295.695313 L 197.28125 292.425781 L 201.121094 289.183594 L 204.960938 285.96875 L 208.800781 282.785156 L 212.640625 279.632813 L 216.480469 276.503906 L 220.320313 273.40625 L 224.160156 270.339844 L 228 267.300781 L 231.839844 264.289063 L 235.679688 261.308594 L 239.519531 258.355469 L 243.359375 255.429688 L 247.199219 252.535156 L 251.039063 249.671875 L 254.878906 246.832031 L 258.71875 244.027344 L 262.558594 241.246094 L 266.398438 238.496094 L 270.238281 235.773438 L 274.078125 233.082031 L 277.921875 230.417969 L 281.761719 227.785156 L 285.601563 225.175781 L 289.441406 222.601563 L 293.28125 220.050781 L 297.121094 217.535156 L 300.960938 215.042969 L 304.800781 212.582031 L 308.640625 210.148438 L 312.480469 207.746094 L 316.320313 205.371094 L 320.160156 203.027344 L 324 200.710938 L 327.839844 198.421875 L 331.679688 196.164063 L 335.519531 193.933594 L 339.359375 191.730469 L 343.199219 189.558594 L 347.039063 187.414063 L 350.878906 185.300781 L 354.71875 183.214844 L 358.558594 181.160156 L 362.398438 179.132813 L 366.238281 177.132813 L 370.078125 175.164063 L 373.921875 173.222656 L 377.761719 171.308594 L 381.601563 169.425781 L 385.441406 167.570313 L 389.28125 165.746094 L 393.121094 163.949219 L 396.960938 162.183594 L 400.800781 160.445313 L 404.640625 158.734375 L 408.480469 157.054688 L 412.320313 155.402344 L 416.160156 153.777344 L 420 152.183594 L 423.839844 150.617188 L 427.679688 149.082031 L 431.519531 147.574219 L 435.359375 146.097656 L 439.199219 144.644531 L 443.039063 143.226563 L 446.878906 141.832031 L 450.71875 140.472656 L 454.558594 139.136719 L 458.398438 137.832031 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,100%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 342.398438 L 252.839844 342.398438 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 231.238281 371.199219 L 252.839844 371.199219 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 244.738281 328 C 244.738281 331.601563 239.339844 331.601563 239.339844 328 C 239.339844 324.398438 244.738281 324.398438 244.738281 328 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 238.222656 356.800781 L 245.859375 356.800781 "/> +<path style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 242.039063 360.617188 L 242.039063 352.980469 "/> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="332.296875"/> + <use xlink:href="#glyph0-9" x="270.314453" y="332.296875"/> + <use xlink:href="#glyph0-10" x="276.988281" y="332.296875"/> + <use xlink:href="#glyph0-9" x="280.322266" y="332.296875"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="346.695313"/> + <use xlink:href="#glyph0-9" x="270.314453" y="346.695313"/> + <use xlink:href="#glyph0-10" x="276.988281" y="346.695313"/> + <use xlink:href="#glyph0-9" x="280.322266" y="346.695313"/> + <use xlink:href="#glyph0-11" x="286.996094" y="346.695313"/> + <use xlink:href="#glyph0-12" x="290.330078" y="346.695313"/> + <use xlink:href="#glyph0-11" x="297.337891" y="346.695313"/> + <use xlink:href="#glyph0-13" x="300.671875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="304.667969" y="346.695313"/> + <use xlink:href="#glyph0-14" x="308.001953" y="346.695313"/> + <use xlink:href="#glyph0-15" x="314.675781" y="346.695313"/> + <use xlink:href="#glyph0-14" x="318.009766" y="346.695313"/> + <use xlink:href="#glyph0-16" x="324.683594" y="346.695313"/> + <use xlink:href="#glyph0-17" x="331.357422" y="346.695313"/> + <use xlink:href="#glyph0-5" x="338.03125" y="346.695313"/> + <use xlink:href="#glyph0-6" x="344.705078" y="346.695313"/> + <use xlink:href="#glyph0-7" x="351.378906" y="346.695313"/> + <use xlink:href="#glyph0-18" x="356.048828" y="346.695313"/> + <use xlink:href="#glyph0-2" x="361.679688" y="346.695313"/> + <use xlink:href="#glyph0-11" x="368.353516" y="346.695313"/> + <use xlink:href="#glyph0-19" x="371.6875" y="346.695313"/> + <use xlink:href="#glyph0-11" x="378.695313" y="346.695313"/> + <use xlink:href="#glyph0-1" x="382.029297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="388.703125" y="346.695313"/> + <use xlink:href="#glyph0-3" x="392.037109" y="346.695313"/> + <use xlink:href="#glyph0-3" x="398.710938" y="346.695313"/> + <use xlink:href="#glyph0-6" x="405.384766" y="346.695313"/> + <use xlink:href="#glyph0-7" x="412.058594" y="346.695313"/> + <use xlink:href="#glyph0-11" x="416.728516" y="346.695313"/> + <use xlink:href="#glyph0-19" x="420.0625" y="346.695313"/> + <use xlink:href="#glyph0-11" x="427.070313" y="346.695313"/> + <use xlink:href="#glyph0-14" x="430.404297" y="346.695313"/> + <use xlink:href="#glyph0-15" x="437.078125" y="346.695313"/> + <use xlink:href="#glyph0-2" x="440.412109" y="346.695313"/> + <use xlink:href="#glyph0-16" x="447.085938" y="346.695313"/> + <use xlink:href="#glyph0-3" x="453.759766" y="346.695313"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="361.09375"/> + <use xlink:href="#glyph0-10" x="270.314453" y="361.09375"/> + <use xlink:href="#glyph0-9" x="273.648438" y="361.09375"/> +</g> +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;"> + <use xlink:href="#glyph0-8" x="263.640625" y="375.496094"/> + <use xlink:href="#glyph0-10" x="270.314453" y="375.496094"/> + <use xlink:href="#glyph0-9" x="273.648438" y="375.496094"/> + <use xlink:href="#glyph0-11" x="280.322266" y="375.496094"/> + <use xlink:href="#glyph0-12" x="283.65625" y="375.496094"/> + <use xlink:href="#glyph0-11" x="290.664063" y="375.496094"/> + <use xlink:href="#glyph0-13" x="293.998047" y="375.496094"/> + <use xlink:href="#glyph0-11" x="297.994141" y="375.496094"/> + <use xlink:href="#glyph0-14" x="301.328125" y="375.496094"/> + <use xlink:href="#glyph0-15" x="308.001953" y="375.496094"/> + <use xlink:href="#glyph0-14" x="311.335938" y="375.496094"/> + <use xlink:href="#glyph0-17" x="318.009766" y="375.496094"/> + <use xlink:href="#glyph0-3" x="324.683594" y="375.496094"/> + <use xlink:href="#glyph0-4" x="331.357422" y="375.496094"/> + <use xlink:href="#glyph0-6" x="338.03125" y="375.496094"/> + <use xlink:href="#glyph0-7" x="344.705078" y="375.496094"/> + <use xlink:href="#glyph0-18" x="349.375" y="375.496094"/> + <use xlink:href="#glyph0-2" x="355.005859" y="375.496094"/> + <use xlink:href="#glyph0-11" x="361.679688" y="375.496094"/> + <use xlink:href="#glyph0-19" x="365.013672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="372.021484" y="375.496094"/> + <use xlink:href="#glyph0-1" x="375.355469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="382.029297" y="375.496094"/> + <use xlink:href="#glyph0-2" x="385.363281" y="375.496094"/> + <use xlink:href="#glyph0-5" x="392.037109" y="375.496094"/> + <use xlink:href="#glyph0-6" x="398.710938" y="375.496094"/> + <use xlink:href="#glyph0-7" x="405.384766" y="375.496094"/> + <use xlink:href="#glyph0-11" x="410.054688" y="375.496094"/> + <use xlink:href="#glyph0-19" x="413.388672" y="375.496094"/> + <use xlink:href="#glyph0-11" x="420.396484" y="375.496094"/> + <use xlink:href="#glyph0-14" x="423.730469" y="375.496094"/> + <use xlink:href="#glyph0-15" x="430.404297" y="375.496094"/> + <use xlink:href="#glyph0-2" x="433.738281" y="375.496094"/> + <use xlink:href="#glyph0-14" x="440.412109" y="375.496094"/> + <use xlink:href="#glyph0-20" x="447.085938" y="375.496094"/> +</g> +</g> +</svg> diff --git a/docs/en/calculators/par/calage.md b/docs/en/calculators/par/calage.md new file mode 100644 index 0000000000000000000000000000000000000000..470f20091db1f8aac6f8dd8a6100b837e6217c96 --- /dev/null +++ b/docs/en/calculators/par/calage.md @@ -0,0 +1,38 @@ +# Baffle fishway (or baffle fishway) setup + +This module allows to dimension a baffle fishway. Supported baffle fishway types are: + +- [plane baffles (Denil) fishway](theorie_plans.md); +- ["Fatou" baffle fishway](theorie_fatou.md); +- [superactive baffles fishway](theorie_suractif.md); +- [mixed / chevron baffles fishway](theorie_mixte.md). + +See [all the formulas used for baffle fishways](formules.md). + +## Hydraulic setup + +This tool allows to calculate one of the following values: + +- flow through the pass (m<sup>3</sup>/s); +- upstream head (m); +- pass width (m) for plane and Fatou types. + +Given the following mandatory parameters: + +- pass type (Plane, Fatou, superactive, mixed); +- [slope (m/m)](../hsl/pente.md). + +Parameter "Space between baffles (m)" is optional. When not given, its standard value is calculated. When given, if its value deviates by more than 10% from standard value, an error is generated. + +## Altimetric setup + +Altimetric setup parameters (upstream water level and downstream water level) are optional and allow to calculate: + +- pass length in horizontal projection and following the slope +- number of baffles +- apron and spilling elevations, upstream and downstream +- rake height of upstream side walls + +## Generating a baffle fishway simulation module + +Results of an altimetrically setup pass may be used to generate a [baffle fishway simulation](simulation.md) module, using the ad hoc button. \ No newline at end of file diff --git a/docs/en/calculators/par/formules.md b/docs/en/calculators/par/formules.md new file mode 100644 index 0000000000000000000000000000000000000000..fd947ba7967fd7aa888bca30503027dd5274a0dd --- /dev/null +++ b/docs/en/calculators/par/formules.md @@ -0,0 +1,57 @@ +# Baffle fishways (or baffle fishways) calculation formulas + +For calculation of: + +- upstream head \(ha\); +- water level in the pass \(h\); +- flow \(Q\); +- flow velocity \(V\); +- upstream apron elevation \(Z_{r1}\); +- minimal rake height of upstream side walls \(Z_m\) + +Refer to the formulas specific to each baffle fishway type: + +- [plane baffles (Denil) fishway](theorie_plans.md); +- ["Fatou" baffle fishway](theorie_fatou.md); +- [superactive baffles fishway](theorie_suractif.md); +- [mixed / chevron baffles fishway](theorie_mixte.md). + +## Upstream water elevation \(Z_1\) + +$$Z_{1} = Z_{d1} + h_a$$ + +With \(Z_{d1}\) the spilling elevation of the first upstream baffle, \(h_a\) the upstream head. + +## Pass length + +Pass length along a water line parallel to the pass slope \(L_w\) equals + +$$L_w = (Z_1 - Z_2)\dfrac{\sqrt{1 + S^2}}{S}$$ + +with \(Z_1\) and \(Z_2\) the upstream and downstream water elevations, \(S\) the slope. + +Pass length along the slope \(L_S\) must be a multiple of the length between two baffles \(P\) rounded to the greater integer: + +$$L_S = \lceil (L_w - \epsilon) / P \rceil \times P $$ + +With \(\epsilon\) = 1 mm to leave a margin before adding an extra baffle. + +Horizontal projection of the pass length \(L_h\) thus equals: + +$$L_h = \dfrac{L_S}{\sqrt{1 + S^2}} $$ + +## Number of baffles \(N_b\) + +For plane and Fatou types: + +$$N_b = L_S / P + 1$$ + +For superactive and mixed types: + +$$N_b = L_S / P$$ + +## Downstream apron \(Z_{r2}\) and spilling \(Z_{d2}\) elevations: + +$$Z_{r2} = Z_{r1} - \dfrac{L_S \times S}{\sqrt{1 + S^2}}$$ + +$$Z_{d2} = Z_{r2} + Z_{d1} - Z_{r1}$$ diff --git a/docs/en/calculators/par/simulation.md b/docs/en/calculators/par/simulation.md new file mode 100644 index 0000000000000000000000000000000000000000..2bf0901af352fc66696a93a98418bd8d68464d60 --- /dev/null +++ b/docs/en/calculators/par/simulation.md @@ -0,0 +1,26 @@ +# Baffle fishway (or baffle fishway) simulation + +This module allows to calculate different hydraulic conditions on a baffle fishway with a known geometry. This geometry may come from topographical measurements or from the [result of a baffle fishway setup](calage.md). + +Supported baffle fishway types are: + +- [plane baffles (Denil) fishway](theorie_plans.md); +- ["Fatou" baffle fishway](theorie_fatou.md); +- [superactive baffles fishway](theorie_suractif.md); +- [mixed / chevron baffles fishway](theorie_mixte.md). + +See [all the formulas used for baffle fishways](formules.md). + +This tool allows to calculate one of the following values: + +- flow through the pass (m<sup>3</sup>/s); +- upstream water elevation (m); +- upstream spilling elevation (m). + +Given the following mandatory parameters: + +- pass type (Plane, Fatou, superactive, mixed); +- [slope (m/m)](../hsl/pente.md). +- pass width (m); +- upstream spilling or apron elevation (m); +- downstream spilling or apron elevation (m). diff --git a/docs/en/calculators/par/theorie_fatou.md b/docs/en/calculators/par/theorie_fatou.md new file mode 100644 index 0000000000000000000000000000000000000000..162db8256cb7b3b9600d13a7ecde306bd1844094 --- /dev/null +++ b/docs/en/calculators/par/theorie_fatou.md @@ -0,0 +1,91 @@ +# "Fatou" baffle fiwhway + +## Geometrical characteristics + + + +*Excerpt fromLarinier, 2002[^1]* + +## Hydraulic laws given by abacuses + +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(Q^*\): + +$$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ + + to upstream head \(ha\) and the average water level in the pass \(h\) : + + + +*Abacuses of a Fatou baffle fishway for a slope of 10% (Excerpt fromLarinier, 2002[^1])* + + + +*Abacuses of a Fatou baffle fishway for a slope of 15% (Excerpt fromLarinier, 2002[^1])* + + + +*Abacuses of a Fatou baffle fishway for a slope of 20% (Excerpt fromLarinier, 2002[^1])* + +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. + +We thus have: + +$$ ha/L = a_2(S) Q^{*2} + a_1(S) Q^* + a_0(S) $$ + +$$a_2(S) = - 783.592S^2 + 269.991S - 25.2637$$ + +$$a_1(S) = 302.623S^2 - 106.203S + 13.2957$$ + +$$a_0(S) = 15.8096S^2 - 5.19282S + 0.465827$$ + +And: + +$$ h/L = b_2(S) Q^{*2} + b_1(S) Q^* + b_0 $$ + +$$b_2(S) = - 73.4829S^2 + 54.6733S - 14.0622$$ + +$$b_1(S) = 42.4113S^2 - 24.4941S + 8.84146$$ + +$$b_0(S) = - 3.56494S^2 + 0.450262S + 0.0407576$$ + +## Calculation of \(ha\), \(h\) and \(Q\) + +We can then use those coefficients to calculate \(ha\), \(h\) and \(Q^*\): + +$$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ + +$$ h = L \left( b_2 (Q^*)^2 + b_1 Q^* + b_0 \right)$$ + +Using the positive inverse function, depending on \(ha/L\), we get: + +$$ Q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/L)}}{2 a_2}$$ + +And we finally have: + +$$ Q = Q^* \sqrt{g} L^{2,5} $$ + +Calculation limitations of \(Q^*\), \(ha/L\) and \(h/L\) are determined based on the extremities of the abacuses curves. + +## Flow velocity + +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : + +$$ V = \dfrac{Q}{A_w} $$ + +for Fatou baffle fishways using the notation of the schema above, we have: + +$$ A_w = B \times h $$ + +Which gives with standard proportions: + +$$ A_w = 0.6hL $$ + +## Upstream apron elevation \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} + \frac{0.3 S - 0.2}{\sqrt{1 + S^2}} $$ + +## Minimal rake height of upstream side walls \(Z_m\) + +$$ Z_m = Z_{r1} + \frac{4 L}{3 \sqrt{1 + S^2}} $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). diff --git a/docs/en/calculators/par/theorie_fatou_schema.png b/docs/en/calculators/par/theorie_fatou_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..36e32a67245d6a04746cfdd59638c267741f19e0 Binary files /dev/null and b/docs/en/calculators/par/theorie_fatou_schema.png differ diff --git a/docs/en/calculators/par/theorie_mixte.md b/docs/en/calculators/par/theorie_mixte.md new file mode 100644 index 0000000000000000000000000000000000000000..8c06d11ec148a6ad5e17c161a86d9464745d9916 --- /dev/null +++ b/docs/en/calculators/par/theorie_mixte.md @@ -0,0 +1,78 @@ +# Mixed / chevron baffles fishway + + + +*Excerpt from Larinier, 2002[^1]* + +## Hydraulic laws given by abacuses + +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(q^*\) : + +$$ q^* = \dfrac{Q/L}{\sqrt{2g}a^{1,5}} $$ + + to upstream head \(ha\) and the average water level in the pass \(h\) : + + + +*Abacuses of a mixed / chevron baffles fishway for a slope of 10% (Excerpt from Larinier, 2002[^1])* + + + +*Abacuses of a mixed / chevron baffles fishway for a slope of 15% (Excerpt from Larinier, 2002[^1])* + +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. + +We thus have: + +$$ ha/a = a_2(S) q^{*2} + a_1(S) q^* + a_0(S) $$ + +$$a_2(S) = 0.188324S - 0.0427461$$ + +$$a_1(S) = - 2.47998S + 1.25363$$ + +$$a_0(S) = 5.02138S + 0.709434$$ + +And: + +$$ h/a = b_2(S) q^{*2} + b_1(S) q^* + b_0 $$ + +$$b_2(S) = - 0.0733832S - 0.00839864$$ + +$$b_1(S) = 0.176261S + 0.661656$$ + +$$b_0(S) = - 4.97686S + 1.30546$$ + +## Calculation of \(ha\), \(h\) and \(Q\) + +We can then use those coefficients to calculate \(ha\), \(h\) and \(q^*\): + +$$ ha = a \left( a_2 (q^*)^2 + a_1 q^* + a_0 \right)$$ + +$$ h = a \left( b_2 (q^*)^2 + b_1 q^* + b_0 \right)$$ + +Using the positive inverse function, depending on \(ha/L\), we get: + +$$ q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/a)}}{2 a_2}$$ + +And we finally have: + +$$ Q = L q^* \sqrt{g} a^{1,5} $$ + +Calculation limitations of \(q^*\), \(ha/a\) and \(h/a\) are determined based on the extremities of the abacuses curves. + +## Flow velocity + +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : + +$$ V = \dfrac{Q}{A_w} $$ + +for mixed / chevron baffles fishways using the notation of the schema above, we have: + +$$ A_w = h \times L$$ + +## Upstream apron elevation \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} + \frac{3 a S - a}{\sqrt{1 + S^2}} $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). + diff --git a/docs/en/calculators/par/theorie_mixte_schema.png b/docs/en/calculators/par/theorie_mixte_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..400c43e8eaebe4fb753b91bc51276975adb24b8d Binary files /dev/null and b/docs/en/calculators/par/theorie_mixte_schema.png differ diff --git a/docs/en/calculators/par/theorie_plans.md b/docs/en/calculators/par/theorie_plans.md new file mode 100644 index 0000000000000000000000000000000000000000..6dd081beb68f9289b23a7a7c3d670453af53eafb --- /dev/null +++ b/docs/en/calculators/par/theorie_plans.md @@ -0,0 +1,91 @@ +# Plane baffles (Denil) fishway + +## Geometrical characteristics + + + +*Excerpt from Larinier, 2002[^1]* + +## Hydraulic laws given by abacuses + +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(Q^*\): + +$$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ + + to upstream head \(ha\) and the average water level in the pass \(h\) : + + + +*Abacuses of a plane baffles (Denil) fishway for a slope of 10% (Excerpt from Larinier, 2002[^1])* + + + +*Abacuses of a plane baffles (Denil) fishway for a slope of 15% (Excerpt from Larinier, 2002[^1])* + + + +*Abacuses of a plane baffles (Denil) fishway for a slope of 20% (Excerpt from Larinier, 2002[^1])* + +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. + +We thus have: + +$$ ha/L = a_2(S) Q^{*2} + a_1(S) Q^* + a_0(S) $$ + +$$a_2(S) = 315.110S^2 - 115.164S + 6.85371$$ + +$$a_1(S) = - 184.043S^2 + 59.7073S - 0.530737$$ + +$$a_0(S) = 15.2115S^2 - 5.22606S + 0.633654$$ + +And: + +$$ h/L = b_2(S) Q^{*2} + b_1(S) Q^* + b_0 $$ + +$$b_2(S) = 347.368S^2 - 130.698S + 8.14521$$ + +$$b_1(S) = - 139.382S^2 + 47.2186S + 0.0547598$$ + +$$b_0(S) = 16.7218S^2 - 6.09624S + 0.834851$$ + +## Calculation of \(ha\), \(h\) and \(Q\) + +We can then use those coefficients to calculate \(ha\), \(h\) and \(Q^*\): + +$$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ + +$$ h = L \left( b_2 (Q^*)^2 + b_1 Q^* + b_0 \right)$$ + +Using the positive inverse function, depending on \(ha/L\), we get: + +$$ Q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/L)}}{2 a_2}$$ + +And we finally have: + +$$ Q = Q^* \sqrt{g} L^{2,5} $$ + +Calculation limitations of \(Q^*\), \(ha/L\) and \(h/L\) are determined based on the extremities of the abacuses curves. + +## Flow velocity + +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : + +$$ V = \dfrac{Q}{A_w} $$ + +for plane baffles fishways using the notation of the schema above, we have: + +$$ A_w = B \times \left( h - \dfrac{C+D}{2} \sin(45°) \right)$$ + +Which gives with standard proportions: + +$$ A_w = L \left(0.583 h - 0.146L \right) $$ + +## Upstream apron elevation \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} - D \sin(45° + \arctan(S)) $$ + +## Minimal rake height of upstream side walls \(Z_m\) + +$$ Z_m = Z_{r1} + - H_{min} \sin(45° + \arctan(S)) $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). diff --git a/docs/en/calculators/par/theorie_plans_schema.png b/docs/en/calculators/par/theorie_plans_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..a25abf5b7a92c69db30199bdfb3daa19cd32be1f Binary files /dev/null and b/docs/en/calculators/par/theorie_plans_schema.png differ diff --git a/docs/en/calculators/par/theorie_suractif.md b/docs/en/calculators/par/theorie_suractif.md new file mode 100644 index 0000000000000000000000000000000000000000..31fcf38ecfb71f20a69baf7ecb363786134bb268 --- /dev/null +++ b/docs/en/calculators/par/theorie_suractif.md @@ -0,0 +1,77 @@ +# Superactive baffles fishway + + + +*Excerpt from Larinier, 2002[^1]* + +## Hydraulic laws given by abacuses + +Experiments conducted by Larinier, 2002[^1] allowed to establish abacuses that link adimensional flow \(q^*\) : + +$$ q^* = \dfrac{Q/L}{\sqrt{2g}a^{1,5}} $$ + + to upstream head \(ha\) and the average water level in the pass \(h\) : + + + +*Abacuses of a superactive baffles fishway for a slope of 10% (Excerpt from Larinier, 2002[^1])* + + + +*Abacuses of a superactive baffles fishway for a slope of 15% (Excerpt from Larinier, 2002[^1])* + +To run calculations for all slopes between 8% and 22%, polynomes coefficients of abacuses above are themelves adjusted in the form of slope \(S\) depending polynomes. + +We thus have: + +$$ ha/a = a_2(S) q^{*2} + a_1(S) q^* + a_0(S) $$ + +$$a_2(S) = - 0.354624S - 0.0153156$$ + +$$a_1(S) = 0.514953S + 1.25460$$ + +$$a_0(S) = - 2.22434S + 0.596682$$ + +And: + +$$ h/a = b_2(S) q^{*2} + b_1(S) q^* + b_0 $$ + +$$b_2(S) = - 0.559218S + 0.000504060$$ + +$$b_1(S) = 1.15807S + 1.07554$$ + +$$b_0(S) = - 2.62712S + 0.601348$$ + +## Calculation of \(ha\), \(h\) and \(Q\) + +We can then use those coefficients to calculate \(ha\), \(h\) and \(q^*\): + +$$ ha = a \left( a_2 (q^*)^2 + a_1 q^* + a_0 \right)$$ + +$$ h = a \left( b_2 (q^*)^2 + b_1 q^* + b_0 \right)$$ + +Using the positive inverse function, depending on \(ha/L\), we get: + +$$ q^* = \dfrac{-a_1 + \sqrt{a_1^2 - 4 a_2 (a_0 - h_a/a)}}{2 a_2}$$ + +And we finally have: + +$$ Q = L q^* \sqrt{g} a^{1,5} $$ + +Calculation limitations of \(q^*\), \(ha/a\) and \(h/a\) are determined based on the extremities of the abacuses curves. + +## Flow velocity + +Flow velocity \(V\) corresponds to the minimum flow speed given the flow section \(A_w\) at the perpendicular of the baffle : + +$$ V = \dfrac{Q}{A_w} $$ + +for superactive baffles fishways using the notation of the schema above, we have: + +$$ A_w = h \times L$$ + +## Upstream apron elevation \(Z_{r1}\) + +$$ Z_{r1} = Z_{d1} + \frac{2.6 a S - a}{\sqrt{1 + S^2}} $$ + +[^1]: Larinier, M. 2002. “BAFFLE FISHWAYS.†Bulletin Français de La Pêche et de La Pisciculture, no. 364: 83–101. doi:[10.1051/kmae/2002109](https://doi.org/10.1051/kmae/2002109). diff --git a/docs/en/calculators/par/theorie_suractif_schema.png b/docs/en/calculators/par/theorie_suractif_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..53898288de611721cfc3fa08d5a8cd5a34f6521b Binary files /dev/null and b/docs/en/calculators/par/theorie_suractif_schema.png differ diff --git a/docs/en/calculators/verif/especes_predefinies.md b/docs/en/calculators/verif/especes_predefinies.md new file mode 100644 index 0000000000000000000000000000000000000000..a8c0bde15a6c5c57fa9244453fe0277d850c725c --- /dev/null +++ b/docs/en/calculators/verif/especes_predefinies.md @@ -0,0 +1,26 @@ +# Crossability verification: Predefined species + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| ICE group | Species | +|-------------------------|----------------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | +| 2 | Mules (Chelon labrosus, Liza ramada) | +| 3a | Gread shad (Alosa alosa) | +| 3b | Shad (Alosa fallax fallax) | +| 3c | Sea lamprey (Petromyzon marinus) | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | +| 4b | River trout [15-30] (Salmo trutta) | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | +| 6 | Common grayling (Thymallus thymallus) | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | +| 7b | River lamprey (Lampetra fluviatilis) | +| 8a | Common carp (Cyprinus carpio) | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | +| 8d | Common dace (Leuciscus sp but Idus) | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | + +Table: List of predefined group species diff --git a/docs/en/calculators/verif/macrorugo.md b/docs/en/calculators/verif/macrorugo.md new file mode 100644 index 0000000000000000000000000000000000000000..bb41fb93f9b19b7dfd7eacfcc5c0d17505fd021e --- /dev/null +++ b/docs/en/calculators/verif/macrorugo.md @@ -0,0 +1,46 @@ +# Crossability verification: Rock-ramp fishpasses + +## Compound rock-ramp fishpasses + +In the case of compound rock-ramp fishpasses, each apron (reminder: inclined apron are discretised) is verified like an independent rock-ramp fishpass. + +If at least one apron is crossable, the pass is considered crossable. + +Maximum crossable width, wich is the maximum of the sums of the widths of contiguous crossable aprons, is given at the end of the verification. + +## Criteria + +### Minimum water level \(YMin\), in m + +Water level \(Y\) in the pass should be greater than minimum water level. + +### Limit maximum flow velocity \(VeMax\), in m/s + +Maximum flow velocity \(VMax\) in the pass should be lower than limit maximum flow velocity. + +## Criteria values for predefined species groups + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| ICE group | Species | Minimum water level (m) | Limit maximum flow velocity (m/s) | +|-------------------------|----------------|----------------|----------------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.4 | 2.5 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.3 | 2.5 | +| 3a | Gread shad (Alosa alosa) | 0.4 | 2 | +| 3b | Shad (Alosa fallax fallax) | 0.4 | 2 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.15 | 2 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.3 | 2 | +| 4b | River trout [15-30] (Salmo trutta) | 0.2 | 2 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.3 | 2 | +| 6 | Common grayling (Thymallus thymallus) | 0.3 | 2 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.3 | 2 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.15 | 2 | +| 8a | Common carp (Cyprinus carpio) | 0.3 | 1.5 | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | 0.3 | 1.5 | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | 0.3 | 1.5 | +| 8d | Common dace (Leuciscus sp but Idus) | 0.3 | 1.5 | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | 0.2 | 1.5 | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | 0.2 | 1.5 | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | 0.2 | 1.5 | + +Table: List of predefined values for crossing criteria of a rock-ramp fishpass diff --git a/docs/en/calculators/verif/pab.md b/docs/en/calculators/verif/pab.md new file mode 100644 index 0000000000000000000000000000000000000000..6d5a7e7ca0f7e791b088535a412ac44c2378427d --- /dev/null +++ b/docs/en/calculators/verif/pab.md @@ -0,0 +1,105 @@ +# Crossability verification: Fish ladders + +When verifying a fish ladder, basins and walls are sequentially tested, as well as every device of each wall. If at least one basin is not crossable, then the pass is not crossable. + +Criteria differ depending on the jet type generated by the device being verified. If a wall has several devices, it will be considered crossable if at least one device is crossable. + +Orifices are considered uncrossable. + +## Criteria + +### Diving jet support + +Some species do not support diving jets. For such species, each device leading to a diving jet is marked as not crossable. + +### Maximum fall \(DHMaxS\) and \(DHMaxP\), in m + +Basin fall \(DH\) must be lower than maximum fall. + +### Minimum slot width \(BMin\), in m (surface jet only) + +Slot width \(L\) must be greater than minimum width. For orifices, surface \(S\) must be greater than minimum width squared. + +### Minimum head on weir \(HMin\), in m + +Head \(h1\) on weir must be greater than minimum head. + +### Minimum basin depth \(PMinS\) and \(PMinP\), in m + +Basin depth \(YMOY\) must be greater than minimum depth. For diving jets, depth must be greater than twice the basin fall \(DH\). + +### Minimum basin length \(LMinS\) and \(LMinP\), in m + +Basin length \(LB\) must be greater than minimum length. + +### Recommanded maximum dissipated power \(PVMaxPrec\) and limit maximum dissipated power \(PVMaxLim\), in W/m³ + +Maximal dissipated power \(PVMax\) in the basin must be lower than limit maximum dissipated power. If it is greater than recommanded maximum dissipated power, a warning is thrown. + +**Important:** maximum dissipated power verification is **disabled** in the current Cassiopée version. + +## Criteria values for predefined species groups + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_, and D. Courret. + +### Common values for surface jet and diving jet + +| ICE group | Species | Minimum head on weir (m) | Recommanded maximum dissipated power (W/m³) | Limit maximum dissipated power (W/m³) | +|------------|---------|---------|---------|---------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.3 | 200 | 250 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.2 | 200 | 250 | +| 3a | Gread shad (Alosa alosa) | 0.4 | 150 | 200 | +| 3b | Shad (Alosa fallax fallax) | 0.4 | 150 | 200 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.15 | 200 | 250 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.2 | 200 | 250 | +| 4b | River trout [15-30] (Salmo trutta) |0.2 | 200 | 250 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.2 | 150 | 200 | +| 6 | Common grayling (Thymallus thymallus) | 0.2 | 200 | 250 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.2 | 150 | 200 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.15 | 130 | 150 | +| 8a | Common carp (Cyprinus carpio) | 0.2 | - | - | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | 0.2 | 150 | 200 | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | 0.2 | 130 | 150 | +| 8d | Common dace (Leuciscus sp but Idus) | 0.2 | 150 | 200 | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | 0.2 | 130 | 150 | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | 0.2 | 130 | 150 | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | 0.2 | 100 | 150 | + +Table: List of predefined values for crossing criteria of a fish ladder + +### Surface jet + +| ICE group | Species | Maximum fall (m) | Minimum slot width (m) | Minimum basin depth (m) | Minimum basin length (m) | +|------------|---------|---------|---------|--------------|----------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.35 | 0.3 | 1 | 2.5 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.35 | 0.2 | 1 | 1.75 | +| 3a | Gread shad (Alosa alosa) | 0.3 | 0.4 | 1 | 3.5 | +| 3b | Shad (Alosa fallax fallax) | 0.3 | 0.4 | 1 | 3.5 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.3 | 0.15 | 1 | 1.25 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.35 | 0.2 | 1 | 1.75 | +| 4b | River trout [15-30] (Salmo trutta) | 0.3 | 0.15 | 0.75 | 1.75 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.3 | 0.3 | 0.75 | 2.5 | +| 6 | Common grayling (Thymallus thymallus) | 0.3 | 0.2 | 0.75 | 1.75 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.3 | 0.25 | 0.75 | 2 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.3 | 0.15 | 0.75 | 1.25 | +| 8a | Common carp (Cyprinus carpio) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8b | Common bream (Abramis brama)<br>Pike-perch (Sander lucioperca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8c | White bream (Blicca bjoerkna)<br>Ide (Leuciscus idus)<br>Burbot (Lota lota)<br>Perch (Perca fluviatilis)<br>Tench (Tinca tinca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8d | Common dace (Leuciscus sp but Idus) | 0.25 | 0.3 | 0.75 | 2.5 | +| 9a | Bleak (Alburnus alburnus)<br>Sprirlin (Alburnoides bipunctatus)<br>Mediterranean barbel (Barbus meridionalis)<br>Souffia (Telestes souffia)<br>Crucian carp (Carassius carassius)<br>Prussian carp (Carassius gibelio)<br>Roach (Rutilus rutilus)<br>Common rudd (Scardinius erythrophthalmus)<br>South-west european nase (Parachondrostoma toxostoma) | 0.25 | 0.25 | 0.75 | 2 | +| 9b | Apron (Zingel asper)<br>Cottus sp<br>Gobio sp<br>Ruffe (Gymnocephalus cernuus)<br>Brook lamprey (Lampetra planeri)<br>Stone loach ( Barbatula barbatula)<br>Spined loach (Cobitis taenia) | 0.2 | 0.15 | 0.5 | 1.25 | +| 10 | Sunbleak (Leucaspius delineatus)<br>European bitterling (Rhodeus amarus)<br>Three-spined stickleback (Gasterosteus gymnurus)<br>Ninespine stickleback (Pungitius laevis)<br>Minnows (Phoxinus sp) | 0.2 | 0.15 | 0.5 | 1.25 | + +Table: List of predefined values for crossing criteria of a fish ladder, with surface jet + +### Diving jet + +| ICE Group | Species | Maximum fall (m) | Minimum basin depth (m) | Minimum basin length (m) | +|------------|---------|---------|-----------|--------------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.75 | 1 | 2 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.6 | 0.75 | 1.25 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.4 | 0.75 | 1.25 | +| 4b | River trout [15-30] (Salmo trutta) | 0.3 | 0.75 | 1 | +| 6 | Common grayling (Thymallus thymallus) | 0.3 | 0.75 | 1 | + +Table: List of predefined values for crossing criteria of a fish ladder, with diving jet diff --git a/docs/en/calculators/verif/par.md b/docs/en/calculators/verif/par.md new file mode 100644 index 0000000000000000000000000000000000000000..9340ef55d7d28882e45ac7620b032881d0f19547 --- /dev/null +++ b/docs/en/calculators/verif/par.md @@ -0,0 +1,36 @@ +# Crossability verification: Baffle fishways (simulation) + +## Criteria + +### Incompatible and discouraged species + +Species groups 3a, 3b and 7b are discouraged for crossing baffle fishways. This leads to a warning, but does not make the pass not crossable. + +Species groups 8a, 8b, 8c, 8d, 9a, 9b and 10 are unable to cross baffle fishways. + +### Minimum water level \(YMinPB\) and \(YMinSB\), in m + +Water level \(h\) in the pass must be greater than the minimum water level, depending on baffles type: + + * plane and Fatou baffles: \(YMinPB\) + * superactive and chevron baffles: \(YMinSB\) + +## Criteria values for predefined species groups + +From _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| ICE group | Species | Minimum water level on plane baffles (m) | Minimum water level on superactive baffles (m) | +|------------|---------|---------|-----------| +| 1 | Atlantic salmon (Salmo salar)<br>Sea or river trout [50-100] (Salmo trutta) | 0.3 | 0.2 | +| 2 | Mules (Chelon labrosus, Liza ramada) | 0.25 | 0.15 | +| 3a | Gread shad (Alosa alosa) | 0.3 | 0.2 | +| 3b | Shad (Alosa fallax fallax) | 0.25 | 0.15 | +| 3c | Sea lamprey (Petromyzon marinus) | 0.1 | 0.1 | +| 4a | River trout or sea trout [25-55] (Salmo trutta) | 0.25 | 0.15 | +| 4b | River trout [15-30] (Salmo trutta) | 0.2 | 0.1 | +| 5 | Aspe (Aspius aspius)<br>Pike (Esox lucius) | 0.3 | 0.2 | +| 6 | Common grayling (Thymallus thymallus) | 0.25 | 0.15 | +| 7a | Common barbel (Barbus barbus)<br>Chub (Squalius cephalus)<br>Nase (Chondrostoma nasus) | 0.25 | 0.15 | +| 7b | River lamprey (Lampetra fluviatilis) | 0.1 | 0.1 | + +Table: List of predefined values for crossing criteria of a baffle fishway diff --git a/docs/en/calculators/verif/principe.md b/docs/en/calculators/verif/principe.md new file mode 100644 index 0000000000000000000000000000000000000000..a26143330cb43dfc28981a92406f739f2d771a14 --- /dev/null +++ b/docs/en/calculators/verif/principe.md @@ -0,0 +1,29 @@ +# Crossability verification + +This module allows to verify the capacity of different fish species to cross the following types of fish passes: + +- [fish ladders](pab.md) +- [baffle fishways](par.md) +- [rock-ramp fishpasses](macrorugo.md) + +## Principle + +For each pass type, several crossability criteria are checked, expressed as threshold values (ex: minimal basin depth, for a fish ladder). + +Exceeding the threshold value of a criterion leads to an explicit error mentioning the quantity concerned and the threshold value, and results in the pass not being crossable. + +Some criteria such as maximal dissipated power have both an alert value (crossability is possible but not guaranteed) and a limit value (crossing the pass is impossible). + +For a given pass, one can check at once the crossing capabilities of several species, over multiple modalities (variation of one or more parameters in the pass). + +## Predefined species + +[Several common species groups](especes_predefinies.md) are predefined: default values are associated to crossability criteria. + +Default values for some of those criteria might be missing for a species group, when the latter is considered unabled to cross the pass type the criterion is related to. + +## Custom species + +The `Fish species characteristics` module allows to define custom values for all criteria, before running a pass verification. + +If a criterion is applicable to the pass that is being checked, but no value was given, an error will be triggered when running the verification, leading to the pass being not crossable. diff --git a/docs/fr/calculators/par/calage.md b/docs/fr/calculators/par/calage.md index 905f051dc779caf15b8963bde204d8cacde7c13e..85c66ef929946ec5064248808edc997385bb763c 100644 --- a/docs/fr/calculators/par/calage.md +++ b/docs/fr/calculators/par/calage.md @@ -22,7 +22,7 @@ Compte tenu des paramètres obligatoires suivants : - le type de passe (Plans, Fatou, fonds suractifs ou mixtes) ; - [la pente (m/m)](../hsl/pente.md). -Le paramètre "Espacement entre les ralentisseurs (m)" est facultatif. S'il n'est pas renseigné, Sa valeur standard est alors calculée. S'il est fourni, si sa valeur s'écarte de plus de 10% de la valeur standard, une erreur est générée. +Le paramètre "Espacement entre les ralentisseurs (m)" est facultatif. S'il n'est pas renseigné, sa valeur standard est alors calculée. S'il est fourni, si sa valeur s'écarte de plus de 10% de la valeur standard, une erreur est générée. ## Calage altimétrique de la passe diff --git a/docs/fr/calculators/par/theorie_plans.md b/docs/fr/calculators/par/theorie_plans.md index c6905b2eff881e21d95eda68c2374ac7d9c54a5c..83f5b528de68c02df55041f0f94b953abbc2939d 100644 --- a/docs/fr/calculators/par/theorie_plans.md +++ b/docs/fr/calculators/par/theorie_plans.md @@ -26,7 +26,7 @@ $$ Q^* = \dfrac{Q}{\sqrt{g}L^{2,5}} $$ *Abaques d'une passe à ralentisseurs plans (Denil) pour une pente de 20% (Extrait de Larinier, 2002[^1])* -Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous le forme de polynômes dépendant de la pente \(S\). +Pour effectuer les calculs pour toutes les pentes entre 8% et 22%, les coefficients de polynômes des abaques ci-dessus sont eux-mêmes ajustés sous la forme de polynômes dépendant de la pente \(S\). On a donc : @@ -50,7 +50,7 @@ $$b_0(S) = 16.7218S^2 - 6.09624S + 0.834851$$ ## Calcul de \(ha\), \(h\) et \(Q\) -On peut ensuite utilise ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : +On peut ensuite utiliser ces coefficients pour calculer \(ha\), \(h\) et \(Q^*\) : $$ ha = L \left( a_2 (Q^*)^2 + a_1 Q^* + a_0 \right)$$ @@ -72,7 +72,7 @@ La vitesse débitante \(V\) va correspondre à la vitesse moyenne d'écoulement $$ V = \dfrac{Q}{A_w} $$ -pour les passes à ralentisseurs plans en utilisation les notations du schéma ci-dessus, on aura : +pour les passes à ralentisseurs plans en utilisant les notations du schéma ci-dessus, on aura : $$ A_w = B \times \left( h - \dfrac{C+D}{2} \sin(45°) \right)$$ diff --git a/docs/fr/calculators/par/theorie_suractif.md b/docs/fr/calculators/par/theorie_suractif.md index b5cb6167d684b02f43dfcbc3b43dab9658655134..ed3cc6233cc5260a42f86b50fc0c19dc22da3c44 100644 --- a/docs/fr/calculators/par/theorie_suractif.md +++ b/docs/fr/calculators/par/theorie_suractif.md @@ -1,4 +1,4 @@ -# Passe à ralentisseurs à fonds suractif +# Passe à ralentisseurs à fond suractif  diff --git a/docs/fr/calculators/verif/especes_predefinies.md b/docs/fr/calculators/verif/especes_predefinies.md new file mode 100644 index 0000000000000000000000000000000000000000..dbb388400e083c6546757023d69eea7f04fe791f --- /dev/null +++ b/docs/fr/calculators/verif/especes_predefinies.md @@ -0,0 +1,26 @@ +# Vérification des critères de franchissement : Espèces prédéfinies + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| Groupe ICE | Espèces | +|-------------------------|----------------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | +| 2 | Mulets (Chelon labrosus, Liza ramada) | +| 3a | Grande alose (Alosa alosa) | +| 3b | Alose feinte (Alosa fallax fallax) | +| 3c | Lamproie marine (Petromyzon marinus) | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | +| 4b | Truite de rivière [15-30] (Salmo trutta) | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | +| 6 | Ombre commun (Thymallus thymallus) | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | +| 8a | Carpe commune (Cyprinus carpio) | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | +| 8d | Vandoises (Leuciscus sp hors Idus) | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | + +Table: Liste des groupe d'espèces prédéfinis diff --git a/docs/fr/calculators/verif/macrorugo.md b/docs/fr/calculators/verif/macrorugo.md new file mode 100644 index 0000000000000000000000000000000000000000..4cab10c41a0766454bb23c81950470a13af6cc49 --- /dev/null +++ b/docs/fr/calculators/verif/macrorugo.md @@ -0,0 +1,46 @@ +# Vérification des critères de franchissement : Passes à macrorugosités + +## Passes à macrorugosités complexes + +Dans le cas des pases à macrorugosités complexes, chaque radier (rappel : les radiers inclinés sont discrétisés) est vérifié comme une passe à macrorugosités indépendante. + +Si au moins un radier est franchissable, la passe est considérée comme franchissable. + +La largeur maximale franchissable, maximum des sommes des largeurs des radiers franchissables contigus, est indiquée à l'issue de la vérification. + +## Critères + +### Tirant d'eau minimal \(YMin\), en m + +Le tirant d'eau \(Y\) dans la passe doit être supérieur au tirant d'eau minimal. + +### Vitesse d'écoulement maximale limite \(VeMax\), en m/s + +La vitesse d'écoulement maximale \(VMax\) dans la passe doit être inférieure à la vitesse d'écoulement maximale limite. + +## Valeurs des critères pour les groupes d'espèces prédéfinis + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| Groupe ICE | Espèces | Tirant d'eau minimal (m) | Vitesse d'écoulement maximale limite (m/s) | +|-------------------------|----------------|----------------|----------------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.4 | 2.5 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.3 | 2.5 | +| 3a | Grande alose (Alosa alosa) | 0.4 | 2 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.4 | 2 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.15 | 2 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.3 | 2 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.2 | 2 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.3 | 2 | +| 6 | Ombre commun (Thymallus thymallus) | 0.3 | 2 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.3 | 2 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.15 | 2 | +| 8a | Carpe commune (Cyprinus carpio) | 0.3 | 1.5 | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | 0.3 | 1.5 | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | 0.3 | 1.5 | +| 8d | Vandoises (Leuciscus sp hors Idus) | 0.3 | 1.5 | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | 0.2 | 1.5 | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | 0.2 | 1.5 | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | 0.2 | 1.5 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à macrorugosités diff --git a/docs/fr/calculators/verif/pab.md b/docs/fr/calculators/verif/pab.md new file mode 100644 index 0000000000000000000000000000000000000000..b86c8b8642998d34debd5196c879fad57a3a9a92 --- /dev/null +++ b/docs/fr/calculators/verif/pab.md @@ -0,0 +1,105 @@ +# Vérification des critères de franchissement : Passes à bassins + +Lors de la vérification d'une passe à bassins, les bassins et les cloisons sont testés séquentiellement, ainsi que tous les ouvrages de chaque cloison. Si au moins un bassin est infranchissable, alors la passe est infranchissable. + +Les critères diffèrent selon que l'ouvrage considéré donne lieu à un jet plongeant ou à un jet de surface. Si une cloison possède plusieurs ouvrages, elle sera considérée comme franchissable si au moins un ouvrage est franchissable. + +Les orifices sont considérés comme infranchissables. + +## Critères + +### Jet plongeant + +Certaines espèces ne supportent pas les jets plongeants. Pour ces espèces, chaque ouvrage donnant lieu à un jet plongeant est marqué comme infranchissable. + +### Chute maximale \(DHMaxS\) et \(DHMaxP\), en m + +La chute \(DH\) du bassin doit être inférieure à la chute maximale. + +### Largeur minimale de fente ou échancrure latérale \(BMin\), en m (jet de surface seulement) + +La largeur \(L\) de la fente ou échancrure doit être supérieure à la largeur minimale. Dans le cas d'un orifice, la surface \(S\) de l'orifice doit être supérieure à la largeur minimale au carré. + +### Charge minimale sur l'échancrure \(HMin\), en m + +La charge \(h1\) sur l'échancrure doit être supérieure à la charge minimale. + +### Profondeur minimale de bassin \(PMinS\) et \(PMinP\), en m + +La profondeur \(YMOY\) du bassin doit être supérieure à la profondeur minimale. Dans le cas d'un jet plongeant, la profondeur doit être supérieure au double de la chute \(DH\) du bassin. + +### Longueur minimale de bassin \(LMinS\) et \(LMinP\), en m + +La longueur \(LB\) du bassin doit être supérieure à la longueur minimale. + +### Puissance dissipée maximale préconisée \(PVMaxPrec\) et maximale limite \(PVMaxLim\), en W/m³ + +La puissance dissipée maximale \(PVMax\) dans le bassin doit être inférieure à la puissance dissipée maximale limite. Si elle est supérieure à la puissance dissipée maximale préconisée, un avertissement est émis. + +**Important :** la vérification de la puissance dissipée maximale est **désactivée** dans la version actuelle de Cassiopée + +## Valeurs des critères pour les groupes d'espèces prédéfinis + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_, et D. Courret. + +### Valeurs communes pour jet de surface et jet plongeant + +| Groupe ICE | Espèces | Charge minimale sur l'échancrure (m) | Puissance dissipée maximale préconisée (W/m³) | Puissance dissipée maximale limite (W/m³) | +|------------|---------|---------|---------|---------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.3 | 200 | 250 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.2 | 200 | 250 | +| 3a | Grande alose (Alosa alosa) | 0.4 | 150 | 200 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.4 | 150 | 200 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.15 | 200 | 250 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.2 | 200 | 250 | +| 4b | Truite de rivière [15-30] (Salmo trutta) |0.2 | 200 | 250 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.2 | 150 | 200 | +| 6 | Ombre commun (Thymallus thymallus) | 0.2 | 200 | 250 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.2 | 150 | 200 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.15 | 130 | 150 | +| 8a | Carpe commune (Cyprinus carpio) | 0.2 | - | - | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | 0.2 | 150 | 200 | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | 0.2 | 130 | 150 | +| 8d | Vandoises (Leuciscus sp hors Idus) | 0.2 | 150 | 200 | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | 0.2 | 130 | 150 | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | 0.2 | 130 | 150 | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | 0.2 | 100 | 150 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à bassins + +### Jet de surface + +| Groupe ICE | Espèces | Chute maximale (m) | Largeur minimale de fente ou échancrure latérale (m) | Profondeur minimale de bassin (m) | Longueur minimale de bassin (m) | +|------------|---------|---------|---------|--------------|----------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.35 | 0.3 | 1 | 2.5 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.35 | 0.2 | 1 | 1.75 | +| 3a | Grande alose (Alosa alosa) | 0.3 | 0.4 | 1 | 3.5 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.3 | 0.4 | 1 | 3.5 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.3 | 0.15 | 1 | 1.25 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.35 | 0.2 | 1 | 1.75 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.3 | 0.15 | 0.75 | 1.75 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.3 | 0.3 | 0.75 | 2.5 | +| 6 | Ombre commun (Thymallus thymallus) | 0.3 | 0.2 | 0.75 | 1.75 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.3 | 0.25 | 0.75 | 2 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.3 | 0.15 | 0.75 | 1.25 | +| 8a | Carpe commune (Cyprinus carpio) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8b | Brème commune (Abramis brama)<br>Sandre (Sander lucioperca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8c | Brème bordelière (Blicca bjoerkna)<br>Ide melanote (Leuciscus idus)<br>Lotte de rivière (Lota lota)<br>Perche (Perca fluviatilis)<br>Tanche (Tinca tinca) | 0.25 | 0.3 | 0.75 | 2.5 | +| 8d | Vandoises (Leuciscus sp hors Idus) | 0.25 | 0.3 | 0.75 | 2.5 | +| 9a | Ablette commune (Alburnus alburnus)<br>Ablette sprirlin (Alburnoides bipunctatus)<br>Barbeau méridional (Barbus meridionalis)<br>Blageon (Telestes souffia)<br>Carassin commun (Carassius carassius)<br>Carassin argenté (Carassius gibelio)<br>Gardon (Rutilus rutilus)<br>Rotengle (Scardinius erythrophthalmus)<br>Toxostome (Parachondrostoma toxostoma) | 0.25 | 0.25 | 0.75 | 2 | +| 9b | Apron (Zingel asper)<br>Chabots (Cottus sp)<br>Goujons (Gobio sp)<br>Grémille (Gymnocephalus cernuus)<br>Lamproie de Planer (Lampetra planeri)<br>Loche franche ( Barbatula barbatula)<br>Loche de rivière (Cobitis taenia) | 0.2 | 0.15 | 0.5 | 1.25 | +| 10 | Able de Heckel (Leucaspius delineatus)<br>Bouvière (Rhodeus amarus)<br>Epinoche (Gasterosteus gymnurus)<br>Epinochette (Pungitius laevis)<br>Vairons (Phoxinus sp) | 0.2 | 0.15 | 0.5 | 1.25 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à bassins, en jet de surface + +### Jet plongeant + +| Groupe ICE | Espèces | Chute maximale (m) | Profondeur minimale de bassin (m) | Longueur minimale de bassin (m) | +|------------|---------|---------|-----------|--------------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.75 | 1 | 2 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.6 | 0.75 | 1.25 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.4 | 0.75 | 1.25 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.3 | 0.75 | 1 | +| 6 | Ombre commun (Thymallus thymallus) | 0.3 | 0.75 | 1 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à bassins, en jet plongeant diff --git a/docs/fr/calculators/verif/par.md b/docs/fr/calculators/verif/par.md new file mode 100644 index 0000000000000000000000000000000000000000..e053af8fadde2ac22b2f90f49741ca355eaad8bc --- /dev/null +++ b/docs/fr/calculators/verif/par.md @@ -0,0 +1,36 @@ +# Vérification des critères de franchissement : Passes à ralentisseurs (simulation) + +## Critères + +### Espèces déconseillées et incompatibles + +Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour le franchissement d'une passe à ralentisseurs. Cela donne lieu à un avertissement, sans pour autant entraîner l'infranchissabilité de la passe. + +Les groupes d'espèces 8a, 8b, 8c, 8d, 9a, 9b et 10 sont incapables de franchir des passes à ralentisseurs. + +### Tirant d'eau minimal \(YMinPB\) et \(YMinSB\), en m + +Le tirant d'eau \(h\) dans la passe doit être supérieur au tirant d'eau minimal, selon le type de ralentisseurs : + + * ralentisseurs plans et Fatou : \(YMinPB\) + * ralentisseurs suractifs et chevrons : \(YMinSB\) + +## Valeurs des critères pour les groupes d'espèces prédéfinis + +D'après _"Informations sur la Continuité Écologique - ICE, Onema 2014"_. + +| Groupe ICE | Espèces | Tirant d'eau minimal sur les ralentisseurs plans (m) | Tirant d'eau minimal sur les ralentisseurs suractifs (m) | +|------------|---------|---------|-----------| +| 1 | Saumon atlantique (Salmo salar)<br>Truite de mer ou de rivière [50-100] (Salmo trutta) | 0.3 | 0.2 | +| 2 | Mulets (Chelon labrosus, Liza ramada) | 0.25 | 0.15 | +| 3a | Grande alose (Alosa alosa) | 0.3 | 0.2 | +| 3b | Alose feinte (Alosa fallax fallax) | 0.25 | 0.15 | +| 3c | Lamproie marine (Petromyzon marinus) | 0.1 | 0.1 | +| 4a | Truite de rivière ou truite de mer [25-55] (Salmo trutta) | 0.25 | 0.15 | +| 4b | Truite de rivière [15-30] (Salmo trutta) | 0.2 | 0.1 | +| 5 | Aspe (Aspius aspius)<br>Brochet (Esox lucius) | 0.3 | 0.2 | +| 6 | Ombre commun (Thymallus thymallus) | 0.25 | 0.15 | +| 7a | Barbeau fluviatile (Barbus barbus)<br>Chevaine (Squalius cephalus)<br>Hotu (Chondrostoma nasus) | 0.25 | 0.15 | +| 7b | Lamproie fluviatile (Lampetra fluviatilis) | 0.1 | 0.1 | + +Table: Liste des valeurs prédéfinies pour les critères de franchissement d'une passe à ralentisseurs diff --git a/docs/fr/calculators/verif/principe.md b/docs/fr/calculators/verif/principe.md new file mode 100644 index 0000000000000000000000000000000000000000..bce6ec0e923b97c3b668134b04ca54afcd9e15fd --- /dev/null +++ b/docs/fr/calculators/verif/principe.md @@ -0,0 +1,29 @@ +# Vérification des critères de franchissement + +Cet outil permet de vérifier la capacité des différentes espèces de poissons à franchir les types de passes suivants : + +- [passes à bassins](pab.md) +- [passes à ralentisseurs](par.md) +- [passes à macrorugosités](macrorugo.md) + +## Principe + +Pour chaque type de passe, on contrôle plusieurs critères de franchissabilité, exprimés sous forme de valeurs limites (ex: profondeur minimale de bassin, pour une passe à bassins). + +Tout dépassement de la valeur limite d'un critère donne lieu à une erreur explicite mentionnant la grandeur concernée et la valeur limite, et entraîne la non franchissabilité de la passe. + +Certains critères comme la puissance maximale dissipée possèdent à la fois une valeur d'alerte (la franchissabilité n'est pas garantie mais reste possible) et une valeur limite (le franchissement est impossible). + +Pour une même passe, on peut verifier simultanément la capacité de franchissement de plusieurs espèces, sur plusieurs modalités (variation d'un ou plusieurs paramètres de la passe). + +## Espèces prédéfinies + +[Plusieurs groupes d'espèces communes](especes_predefinies.md) sont prédéfinis : des valeurs par défaut sont associées aux critères de franchissement. + +Les valeurs par défaut de certains critères peuvent être absentes pour un groupe d'espèces, lorsque celui-ci est considéré comme incapable de franchir le type de passes auquel le critère est rattaché. + +## Espèces personnalisées + +Le module `Espèce` permet de définir des valeurs personnalisées pour tous les critères, avant de lancer la vérification d'une passe. + +Si un critère est applicable à la passe à vérifier mais aucune valeur n'a été saisie, une erreur sera affichée lors de la vérification, entraînant la non franchissabilité de la passe. diff --git a/docs/mathjax.config.js b/docs/mathjax.config.js new file mode 100644 index 0000000000000000000000000000000000000000..14555b5815c854167f0daad81e0997e544df136b --- /dev/null +++ b/docs/mathjax.config.js @@ -0,0 +1,12 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; \ No newline at end of file diff --git a/e2e/app.e2e-spec.ts b/e2e/app.e2e-spec.ts index 67303435373ba06522f814d17ff0947601bc6ad5..66fc56982414a0e7df933c7c27896a33b30b9c37 100644 --- a/e2e/app.e2e-spec.ts +++ b/e2e/app.e2e-spec.ts @@ -5,15 +5,15 @@ import { browser } from "protractor"; * Start app */ describe("ngHyd − start page", () => { - let page: AppPage; + let page: AppPage; - beforeEach(() => { - page = new AppPage(); - }); + beforeEach(() => { + page = new AppPage(); + }); - it("when app starts, user should be redirected to /list page", async () => { - await page.navigateTo(); - const url = await browser.driver.getCurrentUrl(); - expect(url).toContain("/list"); - }); + it("when app starts, user should be redirected to /list page", async () => { + await page.navigateTo(); + const url = await browser.driver.getCurrentUrl(); + expect(url).toContain("/list"); + }); }); diff --git a/e2e/app.po.ts b/e2e/app.po.ts index 8a58a9466d2ad766bee7fbf651100e2db215fd44..308423637dc316fe97b25d984a7cea399bf35c81 100644 --- a/e2e/app.po.ts +++ b/e2e/app.po.ts @@ -1,7 +1,7 @@ import { browser } from "protractor"; export class AppPage { - navigateTo() { - return browser.get("/"); - } + navigateTo() { + return browser.get("/"); + } } diff --git a/e2e/calc-all-examples.e2e-spec.ts b/e2e/calc-all-examples.e2e-spec.ts index 31a63bbabd460eb3642394a59963e16ac00ee999..957364fc618f302066ce5c416ea3f1341d7148f1 100644 --- a/e2e/calc-all-examples.e2e-spec.ts +++ b/e2e/calc-all-examples.e2e-spec.ts @@ -6,52 +6,52 @@ import { browser, by, element } from "protractor"; /** * Calculate all modules of all examples */ -describe("ngHyd − calculate all modules of all examples −", async () => { - - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - - beforeAll(() => { - jasmine.DEFAULT_TIMEOUT_INTERVAL = 100 * 1000; - }); - - it("calcul de tous les modules de tous les exemples −", async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - listPage = new ListPage(); - - // for each calculator - let lastExampleFound = true; - let i = 0; - while (lastExampleFound) { - await listPage.navigateTo(); - - const examples = await element.all(by.css("#examples-list .load-example")); - if (examples.length > i) { - // click example #i - await examples[i].click(); - await browser.sleep(50); - - const nbModules = await navbar.getCalculatorEntriesCount(); - for (let j = 0; j < nbModules; j++) { - // select module - await navbar.openNthCalculator(j); - await browser.sleep(50); - // calculate module - await calcPage.getCalculateButton().click(); - // check results - const hasResults = await calcPage.hasValidResults(); - expect(hasResults).toBe(true, `example ${i + 1}, module ${j + 1} (starting at 1)`); +describe("ngHyd − example sessions −", async () => { + + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + + beforeAll(() => { + jasmine.DEFAULT_TIMEOUT_INTERVAL = 100 * 1000; + }); + + it("calcul de tous les modules de tous les exemples −", async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + listPage = new ListPage(); + + // for each calculator + let lastExampleFound = true; + let i = 0; + while (lastExampleFound) { + await listPage.navigateTo(); + + const examples = await element.all(by.css("#examples-list .load-example")); + if (examples.length > i) { + // click example #i + await examples[i].click(); + await browser.sleep(50); + + const nbModules = await navbar.getCalculatorEntriesCount(); + for (let j = 0; j < nbModules; j++) { + // select module + await navbar.openNthCalculator(j); + await browser.sleep(50); + // calculate module + await calcPage.getCalculateButton().click(); + // check results + const hasResults = await calcPage.hasValidResults(); + expect(hasResults).toBe(true, `example ${i + 1}, module ${j + 1} (starting at 1)`); + } + } else { + // no more examples + lastExampleFound = false; + } + i++; } - } else { - // no more examples - lastExampleFound = false; - } - i++; - } - - }); + + }); }); diff --git a/e2e/calculate-all-params.e2e-spec.ts b/e2e/calculate-all-params.e2e-spec.ts index e250d6aac3df00edf9843f4509f22668d66fb1d1..d8fafc252971c87066a93b11695868d897b691c4 100644 --- a/e2e/calculate-all-params.e2e-spec.ts +++ b/e2e/calculate-all-params.e2e-spec.ts @@ -10,80 +10,80 @@ import { testedCalcTypes } from "./tested_calctypes"; * is set to CAL mode, trigger the calculation, check that result is not empty */ describe("ngHyd − calculate all parameters of all calculators", async () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; - beforeEach(() => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - prefPage = new PreferencesPage(); - navBar = new Navbar(); - }); + beforeEach(() => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + prefPage = new PreferencesPage(); + navBar = new Navbar(); + }); - // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ - const calcTypes = testedCalcTypes; + // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ + const calcTypes = testedCalcTypes; - beforeAll(async () => { - prefPage = new PreferencesPage(); - navBar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); + beforeAll(async () => { + prefPage = new PreferencesPage(); + navBar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); - // for each calculator - for (const ct of calcTypes) { - if (ct === 22) { - // omit 22 - Solveur is not calculated here because it is not independent - continue; - } - describe(" − calculate all parameters of calculator type [" + ct + "]", async () => { - it("", async () => { - // go to list page - await navBar.clickNewCalculatorButton(); + // for each calculator + for (const ct of calcTypes) { + if (ct === 22) { + // omit 22 - Solveur is not calculated here because it is not independent + continue; + } + describe(" − calculate all parameters of calculator type [" + ct + "]", async () => { + it("", async () => { + // go to list page + await navBar.clickNewCalculatorButton(); - // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); - // get all parameters IDs - const inputs = await calcPage.getParamInputsHavingCalcMode(); + // click calculator button (instanciate) + await listPage.clickMenuEntryForCalcType(ct); + // get all parameters IDs + const inputs = await calcPage.getParamInputsHavingCalcMode(); - if (inputs.length > 0) { - // for each param - for (let i = 0; i < inputs.length; i++) { - // grab input again because calculating the module just refreshed all the fieldsets - const input = (await calcPage.getParamInputsHavingCalcMode())[i]; - // click "calc" mode button for this parameter - await calcPage.setParamMode(input, "cal"); - // check that only 1 button is in "calc" state - const nbParamsCalc = await calcPage.getCheckedCalcModeButtons().count(); - expect(nbParamsCalc).toBe(1); - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - } else { - // module has no calculable params, just click the "compute" button - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - }); - }); - } + if (inputs.length > 0) { + // for each param + for (let i = 0; i < inputs.length; i++) { + // grab input again because calculating the module just refreshed all the fieldsets + const input = (await calcPage.getParamInputsHavingCalcMode())[i]; + // click "calc" mode button for this parameter + await calcPage.setParamMode(input, "cal"); + // check that only 1 button is in "calc" state + const nbParamsCalc = await calcPage.getCheckedCalcModeButtons().count(); + expect(nbParamsCalc).toBe(1); + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + } else { + // module has no calculable params, just click the "compute" button + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + }); + }); + } }); diff --git a/e2e/calculate-linked-params.e2e-spec.ts b/e2e/calculate-linked-params.e2e-spec.ts index a10a97ebe091ffbee3a93d0fd173c80b82b19930..443e7939b4bc4f031c1d7a28e10159183489e3c1 100644 --- a/e2e/calculate-linked-params.e2e-spec.ts +++ b/e2e/calculate-linked-params.e2e-spec.ts @@ -22,288 +22,288 @@ import { PreferencesPage } from "./preferences.po"; * is also a linked parameter) */ describe("ngHyd − calculate with linked parameters", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - prefPage = new PreferencesPage(); - sidenav = new SideNav(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - async function computeAndCheckPresenceOfResults() { - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - - it(" − direct links : parameter linked to a single parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y, "link"); - const sel = await calcPage.getLinkedValueSelect(Y); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single parameter, plus local variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y, "link"); - const sel = await calcPage.getLinkedValueSelect(Y); - await calcPage.changeSelectValue(sel, 0); - // vary W - const W = calcPage.getInputById("W"); - await calcPage.setParamMode(W, "var"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // vary Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "var"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // calculate Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "cal"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single result, plus local variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // calculate Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "cal"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - // vary W - const W = calcPage.getInputById("W"); - await calcPage.setParamMode(W, "var"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a variated result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // vary Q - const Q = calcPage.getInputById("Q"); - await calcPage.setParamMode(Q, "var"); - // calculate Y - const Y1 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y1, "cal"); - - // create a PAB : dimensions - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - // link Y to Y (R uniforme) - const Y2 = calcPage.getInputById("Y"); - await calcPage.setParamMode(Y2, "link"); - const sel = await calcPage.getLinkedValueSelect(Y2); - await calcPage.changeSelectValue(sel, 0); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single extra result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); - // link V0 to V (Régime uniforme) - const V0 = calcPage.getInputById("V0"); - await calcPage.setParamMode(V0, "link"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a single extra result, plus local variated parameter", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - - // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); - // link V0 to V (Régime uniforme) - const V0 = calcPage.getInputById("V0"); - await calcPage.setParamMode(V0, "link"); - // vary ZJ - const ZJ = calcPage.getInputById("ZJ"); - await calcPage.setParamMode(ZJ, "var"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − direct links : parameter linked to a variated extra result", async () => { - // create a Régime uniforme - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(3); - // vary LargeurBerge - const LargeurBerge = calcPage.getInputById("LargeurBerge"); - await calcPage.setParamMode(LargeurBerge, "var"); - - // create a Jet - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(18); - // link V0 to V (Régime uniforme) - const V0 = calcPage.getInputById("V0"); - await calcPage.setParamMode(V0, "link"); - - await computeAndCheckPresenceOfResults(); - }); - - it(" − multiple variated parameters, including a linked one (#253)", async () => { - // load session file - await navBar.clickNewCalculatorButton(); - await navBar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-multivar-link.json"); - await browser.sleep(500); - expect(await navBar.getAllCalculatorTabs().count()).toBe(2); - - // calculate - await navBar.clickCalculatorTab(0); - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check that there are 6 parameters columns in the variated results table : - // Q, Z2, Z1, + 4 for device #1 - expect(await calcPage.getAllVariatedResultsTableHeaders().count()).toBe(7); - - // check that number of rows in the variated results table equals number of variated values - const varRows = calcPage.getAllVariatedResultsRows(); - const nbRows = await varRows.count(); - expect(nbRows).toBe(191); // boundaries are included - - // check that all parameters have values for all iterations (Z2 might miss some if repeat strategy is not applied) - const lastRow = varRows.get(nbRows - 1); - const tds = await lastRow.all(by.css("td")); - tds.forEach((td) => { - expect(td.getText()).not.toBe(""); + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + prefPage = new PreferencesPage(); + sidenav = new SideNav(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + async function computeAndCheckPresenceOfResults() { + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + it(" − direct links : parameter linked to a single parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y, "link"); + const sel = await calcPage.getLinkedValueSelect(Y); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single parameter, plus local variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y, "link"); + const sel = await calcPage.getLinkedValueSelect(Y); + await calcPage.changeSelectValue(sel, 0); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // vary Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "var"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single result, plus local variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + // vary W + const W = calcPage.getInputById("W"); + await calcPage.setParamMode(W, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // vary Q + const Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(Q, "var"); + // calculate Y + const Y1 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y1, "cal"); + + // create a PAB : dimensions + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + // link Y to Y (R uniforme) + const Y2 = calcPage.getInputById("Y"); + await calcPage.setParamMode(Y2, "link"); + const sel = await calcPage.getLinkedValueSelect(Y2); + await calcPage.changeSelectValue(sel, 0); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single extra result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a Jet + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(18); + // link V0 to V (Régime uniforme) + const V0 = calcPage.getInputById("V0"); + await calcPage.setParamMode(V0, "link"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a single extra result, plus local variated parameter", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + + // create a Jet + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(18); + // link V0 to V (Régime uniforme) + const V0 = calcPage.getInputById("V0"); + await calcPage.setParamMode(V0, "link"); + // vary ZJ + const ZJ = calcPage.getInputById("ZJ"); + await calcPage.setParamMode(ZJ, "var"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − direct links : parameter linked to a variated extra result", async () => { + // create a Régime uniforme + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(3); + // vary LargeurBerge + const LargeurBerge = calcPage.getInputById("LargeurBerge"); + await calcPage.setParamMode(LargeurBerge, "var"); + + // create a Jet + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(18); + // link V0 to V (Régime uniforme) + const V0 = calcPage.getInputById("V0"); + await calcPage.setParamMode(V0, "link"); + + await computeAndCheckPresenceOfResults(); + }); + + it(" − multiple variated parameters, including a linked one (#253)", async () => { + // load session file + await navBar.clickNewCalculatorButton(); + await navBar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-multivar-link.json"); + await browser.sleep(500); + expect(await navBar.getAllCalculatorTabs().count()).toBe(2); + + // calculate + await navBar.clickCalculatorTab(0); + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check that there are 6 parameters columns in the variated results table : + // Q, Z2, Z1, + 4 for device #1 + expect(await calcPage.getAllVariatedResultsTableHeaders().count()).toBe(7); + + // check that number of rows in the variated results table equals number of variated values + const varRows = calcPage.getAllVariatedResultsRows(); + const nbRows = await varRows.count(); + expect(nbRows).toBe(191); // boundaries are included + + // check that all parameters have values for all iterations (Z2 might miss some if repeat strategy is not applied) + const lastRow = varRows.get(nbRows - 1); + const tds = await lastRow.all(by.css("td")); + tds.forEach((td) => { + expect(td.getText()).not.toBe(""); + }); + }); + + it(" − bug nghyd#329 : unexpected ERR in results table", async () => { + await navBar.clickNewCalculatorButton(); + // load session + await navBar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-pab-chain-nghyd-329.json"); + await browser.sleep(200); + expect(await navBar.getAllCalculatorTabs().count()).toBe(3); + + // calculate PAB-Dimensions + await navBar.clickCalculatorTab(2); + await browser.sleep(200); + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + expect(await calcPage.hasResults()).toBe(true); + + // check that ERR is not present in Volume line of results table + let frt = calcPage.getFixedResultsTable(); + let volumeRow = calcPage.getNthRow(frt, 3); + let volumeCol = calcPage.getNthColumn(volumeRow, 2); + let volume = await volumeCol.getText(); + expect(Number(volume)).toBeCloseTo(44.565, 3); + + // click PAB-Nombre tab + await navBar.clickCalculatorTab(0); + await browser.sleep(200); + + // go back to PAB-Dimensions + await navBar.clickCalculatorTab(2); + await browser.sleep(200); + + // check that ERR is not present in Volume line of results table + frt = calcPage.getFixedResultsTable(); + volumeRow = calcPage.getNthRow(frt, 3); + volumeCol = calcPage.getNthColumn(volumeRow, 2); + volume = await volumeCol.getText(); + expect(Number(volume)).toBeCloseTo(44.565, 3); }); - }); - - it(" − bug nghyd#329 : unexpected ERR in results table", async () => { - await navBar.clickNewCalculatorButton(); - // load session - await navBar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-pab-chain-nghyd-329.json"); - await browser.sleep(200); - expect(await navBar.getAllCalculatorTabs().count()).toBe(3); - - // calculate PAB-Dimensions - await navBar.clickCalculatorTab(2); - await browser.sleep(200); - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - expect(await calcPage.hasResults()).toBe(true); - - // check that ERR is not present in Volume line of results table - let frt = calcPage.getFixedResultsTable(); - let volumeRow = calcPage.getNthRow(frt, 3); - let volumeCol = calcPage.getNthColumn(volumeRow, 2); - let volume = await volumeCol.getText(); - expect(Number(volume)).toBeCloseTo(44.565, 3); - - // click PAB-Nombre tab - await navBar.clickCalculatorTab(0); - await browser.sleep(200); - - // go back to PAB-Dimensions - await navBar.clickCalculatorTab(2); - await browser.sleep(200); - - // check that ERR is not present in Volume line of results table - frt = calcPage.getFixedResultsTable(); - volumeRow = calcPage.getNthRow(frt, 3); - volumeCol = calcPage.getNthColumn(volumeRow, 2); - volume = await volumeCol.getText(); - expect(Number(volume)).toBeCloseTo(44.565, 3); - }); }); diff --git a/e2e/calculator.e2e-spec.ts b/e2e/calculator.e2e-spec.ts index 835e71536eef3a94b2414014c6f3b9de913291df..3c42955ec425f517b45919e36763cb9aa21b40a4 100644 --- a/e2e/calculator.e2e-spec.ts +++ b/e2e/calculator.e2e-spec.ts @@ -5,26 +5,26 @@ import { ListPage } from "./list.po"; * Create a random calculator */ describe("ngHyd − calculator page", () => { - let page: CalculatorPage; - let listPage: ListPage; + let page: CalculatorPage; + let listPage: ListPage; - beforeEach(() => { - page = new CalculatorPage(); - listPage = new ListPage(); - }); + beforeEach(() => { + page = new CalculatorPage(); + listPage = new ListPage(); + }); - it("when a calculator name is clicked on list page, a calculator should be opened", async () => { - await listPage.navigateTo(); - await listPage.clickRandomCalculatorMenuEntry(); - const text = await page.getHeader1().getText(); - expect(text.length).toBeGreaterThan(0); - }); + it("when a calculator name is clicked on list page, a calculator should be opened", async () => { + await listPage.navigateTo(); + await listPage.clickRandomCalculatorMenuEntry(); + const text = await page.getHeader1().getText(); + expect(text.length).toBeGreaterThan(0); + }); - it("when a calculator is open, no active label should be empty", async () => { - const labels = page.getInputLabels(); - await labels.each(async (l) => { - const label = await l.getText(); - expect(label.length).toBeGreaterThan(0); + it("when a calculator is open, no active label should be empty", async () => { + const labels = page.getInputLabels(); + await labels.each(async (l) => { + const label = await l.getText(); + expect(label.length).toBeGreaterThan(0); + }); }); - }); }); diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts index 1edff79f83ad3391330cd1fa6f4453999dd5a94b..7fe9dfb7a0a373789920b7cfc7e7762d0f4e0405 100644 --- a/e2e/calculator.po.ts +++ b/e2e/calculator.po.ts @@ -2,292 +2,299 @@ import { by, element, ElementFinder, browser } from "protractor"; export class CalculatorPage { - getInputLabels() { - return element.all(by.css("ngparam-input input:not([disabled]) label")); - } - - getParamInputs() { - return element.all(by.css("ngparam-input input.form-control")); - } - - async getParamInputsHavingCalcMode() { - const ret = []; - const inputs = this.getParamInputs(); - await inputs.each(async (i) => { - if (await this.inputHasCalcModeButton(i)) { - ret.push(i); - } - }); - return ret; - } - - getHeader1() { - return element(by.css("h1")); - } - - getSelectById(id: string) { - return element(by.id(id)); - } - - async getSelectValueText(select: ElementFinder) { - return await select.element(by.css(".mat-select-value-text > span")).getText(); - } - - async isSelectEmpty(select: ElementFinder) { - try { - const text = select.element(by.css(".mat-select-value-text > span")); - await text.getAttribute("outerHTML"); // await anything trigger the error - return false; - } catch (e) { // should be NoSuchElementError - return true; - } - } - - getInputById(id: string) { - return element(by.id(id)); - } - - getSaveSessionButton() { - return element(by.css("dialog-save-session button[type=submit]")); - } - - getCalculateButton() { - return element(by.css("button#trigger-calculate")); - } - - getGeneratePabButton() { - return element(by.css("button#generate-pab")); - } - - getCheckedCalcModeButtons() { - return element.all(by.css(`mat-button-toggle.radio_cal[ng-reflect-checked="true"]`)); - } - - getAddStructureButton() { - return element(by.css("fieldset-container .hyd-window-btns button.add-structure")); - } - - getAllLinkButtons() { - return element.all(by.css("mat-button-toggle.radio_link")); - } - - getPabResultsTable() { - return element(by.css(".pab-results-table-inner-container table")); - } - - getVariatedResultsTable() { - return element(by.css(".var-results-inner-container table")); - } - - getAllVariatedResultsTableHeaders() { - return element.all(by.css("var-results table thead th")); - } - - getAllVariatedResultsRows() { - return element.all(by.css("var-results table tbody tr")); - } - - scrollTo(elt: ElementFinder) { - browser.controlFlow().execute(function() { - browser.executeScript("arguments[0].scrollIntoView(true)", elt.getWebElement()); - }); - } - - getFixedResultsTable() { - return element(by.css(".fixed-results-inner-container table")); - } - - getAllFixedResultsRows() { - return element.all(by.css("fixed-results table tbody tr")); - } - - /** return nth <tr> of given <table>, starting at 1 */ - getNthRow(table: ElementFinder, n: number) { - return table.element(by.css("tbody > tr:nth-of-type(" + n + ")")); - } - - /** return nth <td> of given <tr>, starting at 1 */ - getNthColumn(tr: ElementFinder, n: number) { - return tr.element(by.css("td:nth-of-type(" + n + ")")); - } - - async inputHasCalcModeButton(input: ElementFinder) { - // get parent (div.container) - const container = await this.findParentContainer(input); - // find radio buttons - const button: ElementFinder = container.element(by.css("mat-button-toggle.radio_cal > button")); - return await button.isPresent(); - } - - async hasResults() { - return ( - await element(by.css("fixedvar-results fixed-results > .fixed-results-container")).isPresent() - || - await element(by.css("fixedvar-results results-chart > chart-results-container")).isPresent() - || - await element(by.css("remous-results #main-chart")).isPresent() - || - await element(by.css("pab-results pab-results-table")).isPresent() - || - await element(by.css("macrorugo-compound-results macrorugo-compound-results-table")).isPresent() - || - await element(by.css("jet-results .fixed-results-container")).isPresent() - ); - } - - /** - * For a given <table> element, check that values of all cells of all rows in <tbody> are - * different from "NaN", "ERR" and optionally "" - * @param table a <table> ElementFinder - * @param allowEmpty if true, empty "" values will be considered valid - */ - async allRowsHaveValidResults(table: ElementFinder, allowEmpty: boolean = false): Promise<boolean> { - let n = 0; - let ok = true; - const invalidValues = [ "ERR", "NaN" ]; - if (! allowEmpty) { - invalidValues.push(""); - } - - const nbCols = await table.all(by.css("thead th")).count(); - const rows = await table.all(by.css("tbody tr")); - - for (const row of rows) { - for (let i = 0; i < nbCols; i++) { - // get i_th column of n_th row - const val = await row.element(by.css("td:nth-of-type(" + (i + 1) + ")")).getText(); - // console.log(`TABLE VAL ${n}/${i}=>`, val); - ok = ok && ! invalidValues.includes(val); - } - n++; - } - return ok; - } - - /** - * Returns true if this.hasResults() is true, and if results table are - * not empty and contain only valid values (no "NaN", no "", no "ERR") - */ - async hasValidResults(): Promise<boolean> { - let ok = false; - if (await this.hasResults()) { - ok = true; - // check fixed results - const frt = this.getFixedResultsTable(); - if (await frt.isPresent() && await frt.isDisplayed()) { - ok = ok && await this.allRowsHaveValidResults(frt); - } - // check variated results - const vrt = this.getVariatedResultsTable(); - if (await vrt.isPresent() && await vrt.isDisplayed()) { - ok = ok && await this.allRowsHaveValidResults(vrt); - } - // check PAB results - const prt = this.getPabResultsTable(); - if (await prt.isPresent() && await prt.isDisplayed()) { - ok = ok && await this.allRowsHaveValidResults(prt, true); - } - } - return ok; - } - - async hasLog() { - return await this.nbLogEntries() > 0; - } - - async nbLogEntries() { - return await element.all(by.css("log-entry")).count(); - } - - async clickSaveCalcButton() { - return await element(by.css("#save-calc")).click(); - } - - async clickCloneCalcButton() { - const cloneButton = element(by.css("#clone-calc")); - return await cloneButton.click(); - } - - async changeSelectValue(elt: ElementFinder, index: number) { - await elt.click(); - const options = (await elt.getAttribute("aria-owns")).split(" "); - const optId = options[index]; - const option = element(by.id(optId)); - await option.click(); - } - - // find parent element of elt having class "container" - async findParentContainer(elt: ElementFinder): Promise<ElementFinder> { - let i = 8; // garde fous - while ((await elt.getAttribute("class") !== "container") && (i >= 0)) { - elt = elt.element(by.xpath("..")); - i--; - } - return elt; - } - - /** - * @param elt an <input> element - * @param mode "fix", "var", "cal" or "link" - */ - async setParamMode(elt: ElementFinder, mode: string) { - // get parent (div.container) - const container = await this.findParentContainer(elt); - // find radio buttons - const button = container.element(by.css("mat-button-toggle.radio_" + mode + " > button")); - await browser.executeScript("window.scrollTo(0, 0);"); // sometimes button slides behind navbar and click() fails - await button.click(); - // for "var" mode, close the modal - if (mode === "var") { - await browser.sleep(500); // wait for the modal to appear - await element(by.css("dialog-edit-param-values .mat-dialog-actions button")).click(); - await browser.sleep(500); // wait for the navbar to reappear after modal dismissal - } - } - - /** - * @param elt an <input> element - */ - async getLinkedValueSelect(elt: ElementFinder): Promise<ElementFinder> { - // get parent (div.container) - const container = await this.findParentContainer(elt) as ElementFinder; - // find <select> - const select = container.element(by.css("param-link mat-select")); - return select; - } - - /** - * Returns an object containing all the calculator's inputs values, indexed - * by parameter ID - */ - async storeAllInputValues() { - const inputs = this.getParamInputs(); - const values = {}; - await inputs.each(async (i) => { - const inputId = await i.getAttribute("id"); - const inputValue = await i.getAttribute("value"); - values[inputId] = +inputValue; // cast to number to avoid false negative (integers starting with 0) - }); - return values; - } - - /** - * Modifies all the calculator's editable inputs values by adding a random digit other than 0 at the end - */ - async modifyAllInputValues() { - const inputs = this.getParamInputs(); - await inputs.each(async (i) => { - if (await i.isDisplayed()) { - // N in YAXN child of SPP module must not be float - const isN = (await i.getAttribute("id")).includes("_N"); // @TODO strengthen this clodo test - const hasDot = (await i.getAttribute("value")).includes("."); - const hasExponent = (await i.getAttribute("value")).includes("e"); - let keys = "" + Math.floor(Math.random() * 9) + 1; - if (! hasDot && ! hasExponent && ! isN) { - keys = "." + keys; + getInputLabels() { + return element.all(by.css("ngparam-input input:not([disabled]) label")); + } + + getParamInputs() { + return element.all(by.css("ngparam-input input.form-control")); + } + + async getParamInputsHavingCalcMode() { + const ret = []; + const inputs = this.getParamInputs(); + await inputs.each(async (i) => { + if (await this.inputHasCalcModeButton(i)) { + ret.push(i); + } + }); + return ret; + } + + getHeader1() { + return element(by.css("h1")); + } + + getSelectById(id: string) { + return element(by.id(id)); + } + + async getSelectValueText(select: ElementFinder) { + return await select.element(by.css(".mat-select-value-text > span")).getText(); + } + + async isSelectEmpty(select: ElementFinder) { + try { + const text = select.element(by.css(".mat-select-value-text > span")); + await text.getAttribute("outerHTML"); // await anything trigger the error + return false; + } catch (e) { // should be NoSuchElementError + return true; } - await i.sendKeys(keys); - } - }); - } + } + + getInputById(id: string) { + return element(by.id(id)); + } + + getSaveSessionButton() { + return element(by.css("dialog-save-session button[type=submit]")); + } + + getCalculateButton() { + return element(by.css("button#trigger-calculate")); + } + + getGeneratePabButton() { + return element(by.css("button#generate-pab")); + } + + getCheckedCalcModeButtons() { + return element.all(by.css(`mat-button-toggle.radio_cal[ng-reflect-checked="true"]`)); + } + + getAddStructureButton() { + return element(by.css("fieldset-container .hyd-window-btns button.add-structure")); + } + + getAllLinkButtons() { + return element.all(by.css("mat-button-toggle.radio_link")); + } + + getPabResultsTable() { + return element(by.css(".pab-results-table-inner-container table")); + } + + getVariatedResultsTable() { + return element(by.css(".var-results-inner-container table")); + } + + getAllVariatedResultsTableHeaders() { + return element.all(by.css("var-results table thead th")); + } + + getAllVariatedResultsRows() { + return element.all(by.css("var-results table tbody tr")); + } + + scrollTo(elt: ElementFinder) { + browser.controlFlow().execute(function () { + browser.executeScript("arguments[0].scrollIntoView(true)", elt.getWebElement()); + }); + } + + getFixedResultsTable() { + return element(by.css(".fixed-results-inner-container table")); + } + + getAllFixedResultsRows() { + return element.all(by.css("fixed-results table tbody tr")); + } + + /** return nth <tr> of given <table>, starting at 1 */ + getNthRow(table: ElementFinder, n: number) { + return table.element(by.css("tbody > tr:nth-of-type(" + n + ")")); + } + + /** return nth <td> of given <tr>, starting at 1 */ + getNthColumn(tr: ElementFinder, n: number) { + return tr.element(by.css("td:nth-of-type(" + n + ")")); + } + + async inputHasCalcModeButton(input: ElementFinder) { + // get parent (div.container) + const container = await this.findParentContainer(input); + // find radio buttons + const button: ElementFinder = container.element(by.css("mat-button-toggle.radio_cal > button")); + return await button.isPresent(); + } + + async hasResults() { + return ( + await this.presentAndVisible("fixedvar-results fixed-results > .fixed-results-container") + || + await this.presentAndVisible("fixedvar-results results-chart > chart-results-container") + || + await this.presentAndVisible("section-results fixed-results > .fixed-results-container") + || + await this.presentAndVisible("remous-results #main-chart") + || + await this.presentAndVisible("pab-results pab-results-table") + || + await this.presentAndVisible("macrorugo-compound-results macrorugo-compound-results-table") + || + await this.presentAndVisible("jet-results .fixed-results-container") + ); + } + + async presentAndVisible(selector: string): Promise<boolean> { + const elt = element(by.css(selector)); + return await elt.isPresent() && await elt.isDisplayed(); + } + + /** + * For a given <table> element, check that values of all cells of all rows in <tbody> are + * different from "NaN", "ERR" and optionally "" + * @param table a <table> ElementFinder + * @param allowEmpty if true, empty "" values will be considered valid + */ + async allRowsHaveValidResults(table: ElementFinder, allowEmpty: boolean = false): Promise<boolean> { + let n = 0; + let ok = true; + const invalidValues = ["ERR", "NaN"]; + if (!allowEmpty) { + invalidValues.push(""); + } + + const nbCols = await table.all(by.css("thead th")).count(); + const rows = await table.all(by.css("tbody tr")); + + for (const row of rows) { + for (let i = 0; i < nbCols; i++) { + // get i_th column of n_th row + const val = await row.element(by.css("td:nth-of-type(" + (i + 1) + ")")).getText(); + // console.log(`TABLE VAL ${n}/${i}=>`, val); + ok = ok && !invalidValues.includes(val); + } + n++; + } + return ok; + } + + /** + * Returns true if this.hasResults() is true, and if results table are + * not empty and contain only valid values (no "NaN", no "", no "ERR") + */ + async hasValidResults(): Promise<boolean> { + let ok = false; + if (await this.hasResults()) { + ok = true; + // check fixed results + const frt = this.getFixedResultsTable(); + if (await frt.isPresent() && await frt.isDisplayed()) { + ok = ok && await this.allRowsHaveValidResults(frt); + } + // check variated results + const vrt = this.getVariatedResultsTable(); + if (await vrt.isPresent() && await vrt.isDisplayed()) { + ok = ok && await this.allRowsHaveValidResults(vrt); + } + // check PAB results + const prt = this.getPabResultsTable(); + if (await prt.isPresent() && await prt.isDisplayed()) { + ok = ok && await this.allRowsHaveValidResults(prt, true); + } + } + return ok; + } + + async hasLog() { + return await this.nbLogEntries() > 0; + } + + async nbLogEntries() { + return await element.all(by.css("log-entry")).count(); + } + + async clickSaveCalcButton() { + return await element(by.css("#save-calc")).click(); + } + + async clickCloneCalcButton() { + const cloneButton = element(by.css("#clone-calc")); + return await cloneButton.click(); + } + + async changeSelectValue(elt: ElementFinder, index: number) { + await elt.click(); + const options = (await elt.getAttribute("aria-owns")).split(" "); + const optId = options[index]; + const option = element(by.id(optId)); + await option.click(); + } + + // find parent element of elt having class "container" + async findParentContainer(elt: ElementFinder): Promise<ElementFinder> { + let i = 8; // garde fous + while ((await elt.getAttribute("class") !== "container") && (i >= 0)) { + elt = elt.element(by.xpath("..")); + i--; + } + return elt; + } + + /** + * @param elt an <input> element + * @param mode "fix", "var", "cal" or "link" + */ + async setParamMode(elt: ElementFinder, mode: string) { + // get parent (div.container) + const container = await this.findParentContainer(elt); + // find radio buttons + const button = container.element(by.css("mat-button-toggle.radio_" + mode + " > button")); + await browser.executeScript("window.scrollTo(0, 0);"); // sometimes button slides behind navbar and click() fails + await button.click(); + // for "var" mode, close the modal + if (mode === "var") { + await browser.sleep(500); // wait for the modal to appear + await element(by.css("dialog-edit-param-values .mat-dialog-actions button")).click(); + await browser.sleep(500); // wait for the navbar to reappear after modal dismissal + } + } + + /** + * @param elt an <input> element + */ + async getLinkedValueSelect(elt: ElementFinder): Promise<ElementFinder> { + // get parent (div.container) + const container = await this.findParentContainer(elt) as ElementFinder; + // find <select> + const select = container.element(by.css("param-link mat-select")); + return select; + } + + /** + * Returns an object containing all the calculator's inputs values, indexed + * by parameter ID + */ + async storeAllInputValues() { + const inputs = this.getParamInputs(); + const values = {}; + await inputs.each(async (i) => { + const inputId = await i.getAttribute("id"); + const inputValue = await i.getAttribute("value"); + values[inputId] = +inputValue; // cast to number to avoid false negative (integers starting with 0) + }); + return values; + } + + /** + * Modifies all the calculator's editable inputs values by adding a random digit other than 0 at the end + */ + async modifyAllInputValues() { + const inputs = this.getParamInputs(); + await inputs.each(async (i) => { + if (await i.isDisplayed()) { + // N in YAXN child of SPP module must not be float + const isN = (await i.getAttribute("id")).includes("_N"); // @TODO strengthen this clodo test + const hasDot = (await i.getAttribute("value")).includes("."); + const hasExponent = (await i.getAttribute("value")).includes("e"); + let keys = "" + Math.floor(Math.random() * 9) + 1; + if (!hasDot && !hasExponent && !isN) { + keys = "." + keys; + } + await i.sendKeys(keys); + } + }); + } } diff --git a/e2e/check-translations.e2e-spec.ts b/e2e/check-translations.e2e-spec.ts index ddcd763d363899deed0de4c3cd7bfcab52bc40ce..ee07f746eee2f7af6095f1038d1fe99011599931 100644 --- a/e2e/check-translations.e2e-spec.ts +++ b/e2e/check-translations.e2e-spec.ts @@ -11,87 +11,83 @@ import { testedCalcTypes } from "./tested_calctypes"; * is set to CAL mode, trigger the calculation, check that result is not empty */ describe("ngHyd − check translation of all calculators", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; - let sideNav: SideNav; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; + let sideNav: SideNav; - beforeAll(() => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - prefPage = new PreferencesPage(); - sideNav = new SideNav(); - }); + beforeAll(() => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + prefPage = new PreferencesPage(); + sideNav = new SideNav(); + }); - // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ - const calcTypes = testedCalcTypes; + // get calculators list (IDs) @TODO read it from config, but can't import jalhyd here :/ + const calcTypes = testedCalcTypes; - // options of "Language" selector on preferences page - const langs = [ "English", "Français" ]; + // options of "Language" selector on preferences page + const langs = ["English", "Français"]; - // for each language - for (let i = 0; i < langs.length; i++) { - describe("language " + langs[i] + " − ", async () => { + // for each language + for (let i = 0; i < langs.length; i++) { + describe("language " + langs[i] + " − ", async () => { - beforeAll(async () => { - await prefPage.navigateTo(); - await prefPage.changeLanguage(i); - await browser.sleep(200); - await navBar.clickNewCalculatorButton(); - }); + beforeAll(async () => { + await prefPage.navigateTo(); + await prefPage.changeLanguage(i); + await browser.sleep(200); + await navBar.clickNewCalculatorButton(); + }); - beforeEach(function () { - jasmine.addMatchers({ - toContain: function () { - return { - compare: function (actual, expected) { - const result = { - pass: actual.includes(expected), - message: "error" // short message to avoid whole page source being dumped on expect() failure - }; - return result; - } - }; - } - }); - }); + beforeEach(function () { + jasmine.addMatchers({ + toContain: function () { + return { + compare: function (actual, expected) { + const result = { + pass: actual.includes(expected), + message: "error" // short message to avoid whole page source being dumped on expect() failure + }; + return result; + } + }; + } + }); + }); - // for each calculator - for (const ct of calcTypes) { - it(" − check translations of calculator type [" + ct + "]", async () => { - // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); + // for each calculator + for (const ct of calcTypes) { + it(" − check translations of calculator type [" + ct + "]", async () => { + // click calculator button (instanciate) + await listPage.clickMenuEntryForCalcType(ct); - // just click the "compute" button with default values - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - if (! disabledState) { - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } + // just click the "compute" button with default values + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + if (!disabledState) { + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } - // check absence of "*** message not found" in whole DOM - const ps = await browser.getPageSource(); - expect(ps).not.toContain("*** message not found"); - /* const pos = ps.indexOf("*** message not found"); - const bout = ps.substring(pos - 50, pos + 50); - console.log("------------ BOUT ---------------", bout); */ + // check absence of "*** message not found" in whole DOM + expect(await browser.getPageSource()).not.toContain("*** message not found", "missing translations found"); - // empty session - await navBar.clickMenuButton(); - await browser.sleep(200); - await sideNav.clickNewSessionButton(); - browser.sleep(200); - }); - } + // empty session + await navBar.clickMenuButton(); + await browser.sleep(200); + await sideNav.clickNewSessionButton(); + browser.sleep(200); + }); + } - }); - } + }); + } }); diff --git a/e2e/cloisons.e2e-spec.ts b/e2e/cloisons.e2e-spec.ts index eb6b07ff7ba1882cfb7d696872528d0588eabda3..2febdc57e4263fb9d97e1466736b8e2699942cf9 100644 --- a/e2e/cloisons.e2e-spec.ts +++ b/e2e/cloisons.e2e-spec.ts @@ -8,50 +8,50 @@ import { PreferencesPage } from "./preferences.po"; * Cloisons - différents tests qui n'ont pas tant de rapport que ça avec les cloisons :) */ describe("ngHyd − cloisons", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; - - beforeEach(async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - prefPage = new PreferencesPage(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - it("when all parent Nub parameters are linked, Structure parameter modes should be alterable without problem", async () => { - await navBar.clickNewCalculatorButton(); - - // 1. create target module for linked parameters - await listPage.clickMenuEntryForCalcType(10); // Cloisons - await browser.sleep(300); - // 2. create module to test - await calcPage.clickCloneCalcButton(); - await browser.sleep(300); - - // 3. link every parameter except Structure ones - await calcPage.setParamMode(calcPage.getInputById("calc_Q"), "link"); - await calcPage.setParamMode(calcPage.getInputById("Z1"), "link"); - await calcPage.setParamMode(calcPage.getInputById("LB"), "link"); - await calcPage.setParamMode(calcPage.getInputById("BB"), "link"); - await calcPage.setParamMode(calcPage.getInputById("PB"), "link"); - await calcPage.setParamMode(calcPage.getInputById("DH"), "link"); - await browser.sleep(300); - - // 4. change LoiDebit - await calcPage.changeSelectValue(calcPage.getSelectById("select_loidebit"), 1); - await browser.sleep(300); - - // 5. check number of inputs in CALC mode - expect(await calcPage.getCheckedCalcModeButtons().count()).toBe(1); - - // 6. try calculating the module - await calcPage.getCalculateButton().click(); - expect(calcPage.hasResults()).toBe(true); - }); + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; + + beforeEach(async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + prefPage = new PreferencesPage(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("when all parent Nub parameters are linked, Structure parameter modes should be alterable without problem", async () => { + await navBar.clickNewCalculatorButton(); + + // 1. create target module for linked parameters + await listPage.clickMenuEntryForCalcType(10); // Cloisons + await browser.sleep(300); + // 2. create module to test + await calcPage.clickCloneCalcButton(); + await browser.sleep(300); + + // 3. link every parameter except Structure ones + await calcPage.setParamMode(calcPage.getInputById("calc_Q"), "link"); + await calcPage.setParamMode(calcPage.getInputById("Z1"), "link"); + await calcPage.setParamMode(calcPage.getInputById("LB"), "link"); + await calcPage.setParamMode(calcPage.getInputById("BB"), "link"); + await calcPage.setParamMode(calcPage.getInputById("PB"), "link"); + await calcPage.setParamMode(calcPage.getInputById("DH"), "link"); + await browser.sleep(300); + + // 4. change LoiDebit + await calcPage.changeSelectValue(calcPage.getSelectById("select_loidebit"), 1); + await browser.sleep(300); + + // 5. check number of inputs in CALC mode + expect(await calcPage.getCheckedCalcModeButtons().count()).toBe(1); + + // 6. try calculating the module + await calcPage.getCalculateButton().click(); + expect(calcPage.hasResults()).toBe(true); + }); }); diff --git a/e2e/clone-all-calc.e2e-spec.ts b/e2e/clone-all-calc.e2e-spec.ts index 3373fe3a397204cf17e8015fa3bbf1c866770693..e55c8b3f461791ffad1b8207ee81070e7c2b8879 100644 --- a/e2e/clone-all-calc.e2e-spec.ts +++ b/e2e/clone-all-calc.e2e-spec.ts @@ -9,61 +9,61 @@ import { testedCalcTypes } from "./tested_calctypes"; * Clone calculators */ describe("ngHyd − clone all calculators with all possible <select> values", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let prefPage: PreferencesPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let prefPage: PreferencesPage; - beforeEach(async () => { - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - prefPage = new PreferencesPage(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); + beforeEach(async () => { + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + prefPage = new PreferencesPage(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); - const calcTypes = testedCalcTypes; + const calcTypes = testedCalcTypes; - // for each calculator - for (const ct of calcTypes) { - if (ct === 22) { - // omit 22 - Solveur is not tested here because it is not independent - continue; - } - describe(" − clone all variations of calculator type [" + ct + "]", async () => { - it("", async () => { - await navbar.clickNewCalculatorButton(); - // click calculator button (instanciate) - await listPage.clickMenuEntryForCalcType(ct); + // for each calculator + for (const ct of calcTypes) { + if (ct === 22) { + // omit 22 - Solveur is not tested here because it is not independent + continue; + } + describe(" − clone all variations of calculator type [" + ct + "]", async () => { + it("", async () => { + await navbar.clickNewCalculatorButton(); + // click calculator button (instanciate) + await listPage.clickMenuEntryForCalcType(ct); - // get all select IDs outside Structures - // get select IDs inside Structures - // @TODO set configuration to every combination of <select> options + // get all select IDs outside Structures + // get select IDs inside Structures + // @TODO set configuration to every combination of <select> options - // modify all <input> values and store them - await calcPage.modifyAllInputValues(); - const sourceValues = await calcPage.storeAllInputValues(); + // modify all <input> values and store them + await calcPage.modifyAllInputValues(); + const sourceValues = await calcPage.storeAllInputValues(); - // clone calculator - await browser.executeScript("window.scrollTo(0, 0);"); - await calcPage.clickCloneCalcButton(); - await browser.sleep(300); + // clone calculator + await browser.executeScript("window.scrollTo(0, 0);"); + await calcPage.clickCloneCalcButton(); + await browser.sleep(300); - // check existence of the cloned module - expect(await navbar.getAllCalculatorTabs().count()).toBe(2); + // check existence of the cloned module + expect(await navbar.getAllCalculatorTabs().count()).toBe(2); - // @TODO check <select> values + // @TODO check <select> values - // read all <input> values and compare them to stored ones - const cloneValues = await calcPage.storeAllInputValues(); - for (const k in cloneValues) { - expect(cloneValues[k]).toBeCloseTo(sourceValues[k]); - } - }); - }); - } + // read all <input> values and compare them to stored ones + const cloneValues = await calcPage.storeAllInputValues(); + for (const k in cloneValues) { + expect(cloneValues[k]).toBeCloseTo(sourceValues[k]); + } + }); + }); + } }); diff --git a/e2e/clone-calc.e2e-spec.ts b/e2e/clone-calc.e2e-spec.ts index 599d3cf9a9a6b77488983720eb001b6399367c84..c09edd3c8681301af749ec21aeda27dc34e51a54 100644 --- a/e2e/clone-calc.e2e-spec.ts +++ b/e2e/clone-calc.e2e-spec.ts @@ -9,79 +9,79 @@ import { PreferencesPage } from "./preferences.po"; * Clone calculators */ describe("ngHyd − clone a calculator", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let prefPage: PreferencesPage; + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let prefPage: PreferencesPage; - beforeEach(() => { - startPage = new AppPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - }); + beforeEach(() => { + startPage = new AppPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + }); + + beforeAll(async () => { + prefPage = new PreferencesPage(); + navbar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); - beforeAll(async () => { - prefPage = new PreferencesPage(); - navbar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); + it("when cloning a calculator, the clone should have the same values for all parameters", async () => { + await navbar.clickNewCalculatorButton(); + // 1. create target modules for linked parameter + await listPage.clickMenuEntryForCalcType(3); // Régime uniforme + await browser.sleep(500); + const debitRU = calcPage.getInputById("calc_Q"); // "Débit" is calculated by default + await calcPage.setParamMode(debitRU, "fix"); + await browser.sleep(500); - it("when cloning a calculator, the clone should have the same values for all parameters", async () => { - await navbar.clickNewCalculatorButton(); - // 1. create target modules for linked parameter - await listPage.clickMenuEntryForCalcType(3); // Régime uniforme - await browser.sleep(500); - const debitRU = calcPage.getInputById("calc_Q"); // "Débit" is calculated by default - await calcPage.setParamMode(debitRU, "fix"); - await browser.sleep(500); + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(4); // Courbe de remous + await browser.sleep(500); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(4); // Courbe de remous - await browser.sleep(500); + // 2. create source module to clone + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(2); // Section paramétrée + await browser.sleep(500); - // 2. create source module to clone - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(2); // Section paramétrée - await browser.sleep(500); + // 3. change and store source parameter values + const sourceValues = { + k: 0.6, + Ks: 42 + }; + await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 3); // mode "parabolique" + await calcPage.getInputById("k").clear(); + await calcPage.getInputById("k").sendKeys(sourceValues["k"]); + await calcPage.getInputById("Ks").clear(); + await calcPage.getInputById("Ks").sendKeys(sourceValues["Ks"]); + // link "Débit" to "Courbe de remous" + const debitSP = calcPage.getInputById("Q"); + await calcPage.setParamMode(debitSP, "link"); + await browser.sleep(500); + await calcPage.changeSelectValue(calcPage.getSelectById("linked_Q"), 1); // "Courbe de remous" + await browser.sleep(500); - // 3. change and store source parameter values - const sourceValues = { - k: 0.6, - Ks: 42 - }; - await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 3); // mode "parabolique" - await calcPage.getInputById("k").clear(); - await calcPage.getInputById("k").sendKeys(sourceValues["k"]); - await calcPage.getInputById("Ks").clear(); - await calcPage.getInputById("Ks").sendKeys(sourceValues["Ks"]); - // link "Débit" to "Courbe de remous" - const debitSP = calcPage.getInputById("Q"); - await calcPage.setParamMode(debitSP, "link"); - await browser.sleep(500); - await calcPage.changeSelectValue(calcPage.getSelectById("linked_Q"), 1); // "Courbe de remous" - await browser.sleep(500); + // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" + await browser.executeScript("window.scrollTo(0, 0);"); + await calcPage.clickCloneCalcButton(); + await browser.sleep(500); - // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" - await browser.executeScript("window.scrollTo(0, 0);"); - await calcPage.clickCloneCalcButton(); - await browser.sleep(500); + // 4. check existence of the cloned module + expect(await navbar.getAllCalculatorTabs().count()).toBe(4); + await navbar.clickCalculatorTab(3); // n°3 should be the latest + await browser.sleep(500); - // 4. check existence of the cloned module - expect(await navbar.getAllCalculatorTabs().count()).toBe(4); - await navbar.clickCalculatorTab(3); // n°3 should be the latest - await browser.sleep(500); + // 5. compare values + Object.keys(sourceValues).forEach(async (k) => { + const v = sourceValues[k]; + const displayedVal = await calcPage.getInputById(k).getAttribute("value"); + expect(displayedVal).toBe("" + v); + }); - // 5. compare values - Object.keys(sourceValues).forEach(async (k) => { - const v = sourceValues[k]; - const displayedVal = await calcPage.getInputById(k).getAttribute("value"); - expect(displayedVal).toBe("" + v); + // @TODO check linked value (see above) }); - - // @TODO check linked value (see above) - }); }); diff --git a/e2e/compute-reset-chained-links.e2e-spec.ts b/e2e/compute-reset-chained-links.e2e-spec.ts index c0ba8e5f462edf7d4da0bb623c778c089eefe02c..2767c9d968cf36f944d012f4ccd6212414ef8d4a 100644 --- a/e2e/compute-reset-chained-links.e2e-spec.ts +++ b/e2e/compute-reset-chained-links.e2e-spec.ts @@ -12,172 +12,173 @@ import { browser } from "protractor"; * linked to results. */ describe("ngHyd − compute then reset chained results − ", () => { - let startPage: AppPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - - function init() { - startPage = new AppPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - } - beforeEach(init); - - it("when loading session-cascade-params.json, computation should not be chained, but results reset should be", async () => { - // load session file - await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-cascade-params.json"); - await browser.sleep(500); - expect(await navbar.getAllCalculatorTabs().count()).toBe(3); - - // 1. get down-most module - await navbar.clickCalculatorTabForUid("Y2l2Y3"); - - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - - // down-most module should have results - let hasResults = await calcPage.hasResults(); - // up-most should not - await navbar.clickCalculatorTabForUid("ZTFxeW"); - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(false); - await navbar.clickCalculatorTabForUid("Z3EwY2"); - // middle one should - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // 2. get up-most module - await navbar.clickCalculatorTabForUid("ZTFxeW"); - - // modify an input that is not linked - await calcPage.getInputById("Ks").clear(); - await calcPage.getInputById("Ks").sendKeys("42"); - - // other 2 modules should still have their results - for (let i = 1; i < 3; i++) { - await navbar.clickCalculatorTab(i); - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); + let startPage: AppPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + + function init() { + startPage = new AppPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); } - - // 3. get up-most module again - await navbar.clickCalculatorTabForUid("ZTFxeW"); - - // modify input that is linked - await calcPage.getInputById("LargeurBerge").clear(); - await calcPage.getInputById("LargeurBerge").sendKeys("2.6"); - - // check all 3 modules for absence of results - for (let i = 0; i < 3; i++) { - await navbar.clickCalculatorTab(i); - hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(false); - } - }); - - it("when loading session-cascade-results.json, computation and results reset should be chained", async () => { - // load session file - await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-cascade-results.json"); - await browser.sleep(500); - expect(await navbar.getAllCalculatorTabs().count()).toBe(3); - - // dirty hack : get unwanted module first to prevent Calc button - // of PAB Dimensions to be greyed-out @WTF - await navbar.clickCalculatorTabForUid("Y2s1cG"); - // 1. get down-most module (PAB Dimensions) - await navbar.clickCalculatorTabForUid("eHh5YX"); - - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - - // check all 3 modules for results - for (let i = 0; i < 3; i++) { - await navbar.clickCalculatorTab(i); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - } - - // 2. get up-most module (Macro-rugo) - await navbar.clickCalculatorTabForUid("MGg5OH"); - - // modify any input (for ex. "Ks") - await calcPage.getInputById("Ks").clear(); - await calcPage.getInputById("Ks").sendKeys("42"); - - // check all 3 modules for absence of results - for (let i = 0; i < 3; i++) { - await navbar.clickCalculatorTab(i); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(false); - } - }); - - it("when loading session-results-invalidation.json, results reset should not be triggered on calculation", async () => { - // load session file - await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-results-invalidation.json"); - await browser.sleep(500); - expect(await navbar.getAllCalculatorTabs().count()).toBe(2); - - // get down-most module (Ouvrages) - await navbar.clickCalculatorTabForUid("amd2OG"); - - // click "compute" button - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // 2. get up-most module (Ouvrages 1) - await navbar.clickCalculatorTabForUid("aTgwMm"); - - // modify an input that is not linked - await calcPage.getInputById("Z2").clear(); - await calcPage.getInputById("Z2").sendKeys("101.8"); - - // the down-most module should still have its results - await navbar.clickCalculatorTabForUid("amd2OG"); - const hasResults2 = await calcPage.hasResults(); - expect(hasResults2).toBe(true); - - // calculate the upmost module - await navbar.clickCalculatorTabForUid("aTgwMm"); - const calcButton2 = calcPage.getCalculateButton(); - await calcButton2.click(); - - // the down-most module should still have its results - await navbar.clickCalculatorTabForUid("amd2OG"); - const hasResults3 = await calcPage.hasResults(); - expect(hasResults3).toBe(true); - - // modify an input that is linked - await navbar.clickCalculatorTabForUid("aTgwMm"); - await calcPage.getInputById("0_ZDV").clear(); - await calcPage.getInputById("0_ZDV").sendKeys("101"); - - // the down-most module should not have its results anymore - await navbar.clickCalculatorTabForUid("amd2OG"); - const hasResults4 = await calcPage.hasResults(); - expect(hasResults4).toBe(false); - - }); + beforeEach(init); + + it("when loading session-cascade-params.json, computation should not be chained, but results reset should be", async () => { + // load session file + await startPage.navigateTo(); + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-cascade-params.json"); + await browser.sleep(500); + expect(await navbar.getAllCalculatorTabs().count()).toBe(3); + + // 1. get down-most module + await navbar.clickCalculatorTabForUid("Y2l2Y3"); + + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + + // down-most module should have results + let hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + // up-most should not + await navbar.clickCalculatorTabForUid("ZTFxeW"); + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(false); + await navbar.clickCalculatorTabForUid("Z3EwY2"); + // middle one should + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // 2. get up-most module + await navbar.clickCalculatorTabForUid("ZTFxeW"); + + // modify an input that is not linked + await calcPage.getInputById("Ks").clear(); + await calcPage.getInputById("Ks").sendKeys("42"); + + // other 2 modules should still have their results + for (let i = 1; i < 3; i++) { + await navbar.clickCalculatorTab(i); + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + // 3. get up-most module again + await navbar.clickCalculatorTabForUid("ZTFxeW"); + + // modify input that is linked + await calcPage.getInputById("LargeurBerge").clear(); + await calcPage.getInputById("LargeurBerge").sendKeys("2.6"); + + // check all 3 modules for absence of results + for (let i = 0; i < 3; i++) { + await navbar.clickCalculatorTab(i); + hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(false); + } + }); + + it("when loading session-cascade-results.json, computation and results reset should be chained", async () => { + // load session file + await startPage.navigateTo(); + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-cascade-results.json"); + await browser.sleep(500); + expect(await navbar.getAllCalculatorTabs().count()).toBe(3); + + // dirty hack : get unwanted module first to prevent Calc button + // of PAB Dimensions to be greyed-out @WTF + await navbar.clickCalculatorTabForUid("Y2s1cG"); + // 1. get down-most module (PAB Dimensions) + await navbar.clickCalculatorTabForUid("eHh5YX"); + + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + + // check all 3 modules for results + for (let i = 0; i < 3; i++) { + await navbar.clickCalculatorTab(i); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + } + + // 2. get up-most module (Macro-rugo) + await navbar.clickCalculatorTabForUid("MGg5OH"); + + // modify any input (for ex. "Ks") + await calcPage.getInputById("Ks").clear(); + await calcPage.getInputById("Ks").sendKeys("42"); + + // check all 3 modules for absence of results + for (let i = 0; i < 3; i++) { + await navbar.clickCalculatorTab(i); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(false); + } + }); + + it("when loading session-results-invalidation.json, results reset should not be triggered on calculation", async () => { + // load session file + await startPage.navigateTo(); + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-results-invalidation.json"); + await browser.sleep(500); + expect(await navbar.getAllCalculatorTabs().count()).toBe(2); + + // get down-most module (Ouvrages) + await navbar.clickCalculatorTabForUid("amd2OG"); + + // click "compute" button + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // 2. get up-most module (Ouvrages 1) + await navbar.clickCalculatorTabForUid("aTgwMm"); + + // modify an input that is not linked + await calcPage.getInputById("Z2").clear(); + await calcPage.getInputById("Z2").sendKeys("101.8"); + + // the down-most module should still have its results + await navbar.clickCalculatorTabForUid("amd2OG"); + const hasResults2 = await calcPage.hasResults(); + expect(hasResults2).toBe(true); + + // calculate the upmost module + await navbar.clickCalculatorTabForUid("aTgwMm"); + const calcButton2 = calcPage.getCalculateButton(); + await calcButton2.click(); + + // the down-most module should still have its results + await navbar.clickCalculatorTabForUid("amd2OG"); + const hasResults3 = await calcPage.hasResults(); + expect(hasResults3).toBe(true); + + // modify an input that is linked + await navbar.clickCalculatorTabForUid("aTgwMm"); + await calcPage.getInputById("0_ZDV").clear(); + await calcPage.getInputById("0_ZDV").sendKeys("101"); + + // the down-most module should not have its results anymore + await navbar.clickCalculatorTabForUid("amd2OG"); + const hasResults4 = await calcPage.hasResults(); + expect(hasResults4).toBe(false); + + }); }); diff --git a/e2e/link-parallel-devices.e2e-spec.ts b/e2e/link-parallel-devices.e2e-spec.ts index d4b190c7a93f17bd709865ae84bf75f2369a4436..7d104289d097810bb09cc7d8df1453a5d6bfb085 100644 --- a/e2e/link-parallel-devices.e2e-spec.ts +++ b/e2e/link-parallel-devices.e2e-spec.ts @@ -5,45 +5,45 @@ import { PreferencesPage } from "./preferences.po"; import { Navbar } from "./navbar.po"; describe("ngHyd − parallel structures with multiple linked parameters − ", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let prefPage: PreferencesPage; - let navBar: Navbar; + let listPage: ListPage; + let calcPage: CalculatorPage; + let prefPage: PreferencesPage; + let navBar: Navbar; - async function init() { - calcPage = new CalculatorPage(); - listPage = new ListPage(); - prefPage = new PreferencesPage(); - navBar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - } - beforeEach(init); + async function init() { + calcPage = new CalculatorPage(); + listPage = new ListPage(); + prefPage = new PreferencesPage(); + navBar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + } + beforeEach(init); - it("when creating Parallel Structures, devices should be linkable to one another", async () => { - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(8); - await calcPage.getAddStructureButton().click(); - const nb1 = await calcPage.getAllLinkButtons().count(); - expect(nb1).toBe(8); // link buttons on children but not on parent - }); + it("when creating Parallel Structures, devices should be linkable to one another", async () => { + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(8); + await calcPage.getAddStructureButton().click(); + const nb1 = await calcPage.getAllLinkButtons().count(); + expect(nb1).toBe(8); // link buttons on children but not on parent + }); - it("when creating Cloisons, devices should be linkable to one another", async () => { - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await calcPage.getAddStructureButton().click(); - const nb2 = await calcPage.getAllLinkButtons().count(); - expect(nb2).toBe(6); // link buttons on children but not on parent - }); + it("when creating Cloisons, devices should be linkable to one another", async () => { + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + await calcPage.getAddStructureButton().click(); + const nb2 = await calcPage.getAllLinkButtons().count(); + expect(nb2).toBe(6); // link buttons on children but not on parent + }); - it("when creating Dever, devices should be linkable to one another", async () => { - await navBar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(9); - await calcPage.getAddStructureButton().click(); - const nb3 = await calcPage.getAllLinkButtons().count(); - expect(nb3).toBe(6); // link buttons on children but not on parent - }); + it("when creating Dever, devices should be linkable to one another", async () => { + await navBar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(9); + await calcPage.getAddStructureButton().click(); + const nb3 = await calcPage.getAllLinkButtons().count(); + expect(nb3).toBe(6); // link buttons on children but not on parent + }); }); diff --git a/e2e/list.e2e-spec.ts b/e2e/list.e2e-spec.ts index 3100e72748de99cbbbb4a403f8aec3ffd7679ce1..d53a34e99bf0158df2d9a5feb321a6743eecd8c3 100644 --- a/e2e/list.e2e-spec.ts +++ b/e2e/list.e2e-spec.ts @@ -4,15 +4,15 @@ import { ListPage } from "./list.po"; * Show calculators list (home page) */ describe("ngHyd − list page", () => { - let page: ListPage; + let page: ListPage; - beforeEach(() => { - page = new ListPage(); - }); + beforeEach(() => { + page = new ListPage(); + }); - it("when list is open, user should see the list of available compute nodes", async () => { - await page.navigateTo(); - expect(page.getThemesCardsLength()).toBeGreaterThan(4); - expect(page.getCalculatorsMenuLength()).toBeGreaterThan(8); - }); + it("when list is open, user should see the list of available compute nodes", async () => { + await page.navigateTo(); + expect(page.getThemesCardsLength()).toBeGreaterThan(4); + expect(page.getCalculatorsMenuLength()).toBeGreaterThan(8); + }); }); diff --git a/e2e/list.po.ts b/e2e/list.po.ts index ce64e022eaa6ca88072263944eb5127fd1738985..52c57457734eb907cc76330a001eb192a8b3670e 100644 --- a/e2e/list.po.ts +++ b/e2e/list.po.ts @@ -1,55 +1,55 @@ import { browser, by, element } from "protractor"; export class ListPage { - navigateTo() { - return browser.get("/#/list"); - } - - getThemesCards() { - return element.all(by.css("mat-card.compute-nodes-theme")); - } - - async getThemesCardsLength() { - return await this.getThemesCards().count(); - } - - getCalculatorsMenuEntries() { - return element.all(by.css("mat-card.compute-nodes-theme button.theme-calculator")); - } - - async getCalculatorsMenuLength() { - return await this.getCalculatorsMenuEntries().count(); - } - - async getAvailableCalcTypes() { - const ids = []; - const menuEntries = this.getCalculatorsMenuEntries(); - await menuEntries.each(async (elt, i) => { - const eltid = await elt.getAttribute("id"); - const ct = eltid.replace("create-calc-", ""); - const nct = Number(ct); - // remove duplicates - if (! ids.includes(nct)) { - ids.push(nct); - } - }); - return ids; - } - - async clickRandomCalculatorMenuEntry() { - const menuEntries = this.getCalculatorsMenuEntries(); - const l = await menuEntries.count(); - const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); - return menuEntries.get(r).click(); - } - - async clickMenuEntryForCalcType(type: number) { - const but = element(by.css("#create-calc-" + type)); - return but.click(); - } - - async getCalcMenuTextForCalcType(type: number): Promise<string> { - const but = element(by.css("#create-calc-" + type)); - return but.getText(); - } + navigateTo() { + return browser.get("/#/list"); + } + + getThemesCards() { + return element.all(by.css("mat-card.compute-nodes-theme")); + } + + async getThemesCardsLength() { + return await this.getThemesCards().count(); + } + + getCalculatorsMenuEntries() { + return element.all(by.css("mat-card.compute-nodes-theme button.theme-calculator")); + } + + async getCalculatorsMenuLength() { + return await this.getCalculatorsMenuEntries().count(); + } + + async getAvailableCalcTypes() { + const ids = []; + const menuEntries = this.getCalculatorsMenuEntries(); + await menuEntries.each(async (elt, i) => { + const eltid = await elt.getAttribute("id"); + const ct = eltid.replace("create-calc-", ""); + const nct = Number(ct); + // remove duplicates + if (!ids.includes(nct)) { + ids.push(nct); + } + }); + return ids; + } + + async clickRandomCalculatorMenuEntry() { + const menuEntries = this.getCalculatorsMenuEntries(); + const l = await menuEntries.count(); + const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); + return menuEntries.get(r).click(); + } + + async clickMenuEntryForCalcType(type: number) { + const but = element(by.css("#create-calc-" + type)); + return but.click(); + } + + async getCalcMenuTextForCalcType(type: number): Promise<string> { + const but = element(by.css("#create-calc-" + type)); + return but.getText(); + } } diff --git a/e2e/load-linked-params.e2e-spec.ts b/e2e/load-linked-params.e2e-spec.ts index 8df13e041a5d68ee21e54c8aec9ed201a291c63d..81a1651bddfeffac8d29b0327f37789413e7fb14 100644 --- a/e2e/load-linked-params.e2e-spec.ts +++ b/e2e/load-linked-params.e2e-spec.ts @@ -11,82 +11,82 @@ import { browser } from "protractor"; * @TODO les valeurs des Select sont comparées au français, pas très générique :/ */ describe("ngHyd − load session with multiple linked parameters − ", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - - function init() { - startPage = new AppPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - listPage = new ListPage(); - } - beforeEach(init); - - it("when loading session-liens-spaghetti.json, all links should point to the right target", async () => { - await startPage.navigateTo(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-liens-spaghetti.json"); - await browser.sleep(500); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(5); - - // 1. check Section paramétrée - await navbar.clickCalculatorTab(0); - await browser.sleep(500); - - // check target params values - const sp_lb = calcPage.getSelectById("linked_LargeurBerge"); - const sp_lbv = await calcPage.getSelectValueText(sp_lb); - expect(sp_lbv).toContain("Largeur du déversoir (Ouvrages, ouvrage 3)"); - - // 2. check Passe à macro-rugosités - await navbar.clickCalculatorTab(1); - await browser.sleep(500); - - // check target params values - const mr_zf1 = calcPage.getSelectById("linked_ZF1"); - const mr_zf1v = await calcPage.getSelectValueText(mr_zf1); - expect(mr_zf1v).toContain("Cote de l'eau amont (Ouvrages)"); - - const mr_q = calcPage.getSelectById("linked_Q"); - const mr_qv = await calcPage.getSelectValueText(mr_q); - expect(mr_qv).toContain("Débit (Sec. param., section)"); - - // 3. check Lois d'ouvrages - await navbar.clickCalculatorTab(2); - await browser.sleep(500); - - // check target params values - const lo_z2 = calcPage.getSelectById("linked_Z2"); - const lo_z2v = await calcPage.getSelectValueText(lo_z2); - expect(lo_z2v).toContain("Cote de fond aval (Macro-rugo.)"); - - const lo_l = calcPage.getSelectById("1_linked_L"); - const lo_lv = await calcPage.getSelectValueText(lo_l); - expect(lo_lv).toContain("Largeur au miroir (Sec. param.)"); - - const lo_w = calcPage.getSelectById("2_linked_W"); - const lo_wv = await calcPage.getSelectValueText(lo_w); - expect(lo_wv).toContain("Ouverture de vanne (Ouvrages, ouvrage 2)"); - - // 5. check Déver. dénoyés - await navbar.clickCalculatorTab(4); - await browser.sleep(500); - - // check target params values - const lo_br = calcPage.getSelectById("linked_BR"); - const lo_brv = await calcPage.getSelectValueText(lo_br); - expect(lo_brv).toContain("Largeur au miroir (Sec. param.)"); - }); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + + function init() { + startPage = new AppPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + listPage = new ListPage(); + } + beforeEach(init); + + it("when loading session-liens-spaghetti.json, all links should point to the right target", async () => { + await startPage.navigateTo(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-liens-spaghetti.json"); + await browser.sleep(500); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(5); + + // 1. check Section paramétrée + await navbar.clickCalculatorTab(0); + await browser.sleep(500); + + // check target params values + const sp_lb = calcPage.getSelectById("linked_LargeurBerge"); + const sp_lbv = await calcPage.getSelectValueText(sp_lb); + expect(sp_lbv).toContain("Largeur du déversoir (Ouvrages, ouvrage 3)"); + + // 2. check Passe à macro-rugosités + await navbar.clickCalculatorTab(1); + await browser.sleep(500); + + // check target params values + const mr_zf1 = calcPage.getSelectById("linked_ZF1"); + const mr_zf1v = await calcPage.getSelectValueText(mr_zf1); + expect(mr_zf1v).toContain("Cote de l'eau amont (Ouvrages)"); + + const mr_q = calcPage.getSelectById("linked_Q"); + const mr_qv = await calcPage.getSelectValueText(mr_q); + expect(mr_qv).toContain("Débit (Sec. param., section)"); + + // 3. check Lois d'ouvrages + await navbar.clickCalculatorTab(2); + await browser.sleep(500); + + // check target params values + const lo_z2 = calcPage.getSelectById("linked_Z2"); + const lo_z2v = await calcPage.getSelectValueText(lo_z2); + expect(lo_z2v).toContain("Cote de fond aval (Macro-rugo.)"); + + const lo_l = calcPage.getSelectById("1_linked_L"); + const lo_lv = await calcPage.getSelectValueText(lo_l); + expect(lo_lv).toContain("Largeur au miroir (Sec. param.)"); + + const lo_w = calcPage.getSelectById("2_linked_W"); + const lo_wv = await calcPage.getSelectValueText(lo_w); + expect(lo_wv).toContain("Ouverture de vanne (Ouvrages, ouvrage 2)"); + + // 5. check Déver. dénoyés + await navbar.clickCalculatorTab(4); + await browser.sleep(500); + + // check target params values + const lo_br = calcPage.getSelectById("linked_BR"); + const lo_brv = await calcPage.getSelectValueText(lo_br); + expect(lo_brv).toContain("Largeur au miroir (Sec. param.)"); + }); }); diff --git a/e2e/load-malformed-files.e2e-spec.ts b/e2e/load-malformed-files.e2e-spec.ts index d561129dc6aa6b7d142bce996cd14d0b95f24f3f..e022c902167b385d3fb38a8283d0712553e250ee 100644 --- a/e2e/load-malformed-files.e2e-spec.ts +++ b/e2e/load-malformed-files.e2e-spec.ts @@ -12,71 +12,71 @@ import { browser, element, by } from "protractor"; * @WARNING error messages are tested in french */ describe("ngHyd − load malformed session files − ", () => { - let startPage: AppPage; - let navbar: Navbar; - let sidenav: SideNav; + let startPage: AppPage; + let navbar: Navbar; + let sidenav: SideNav; - function init() { - startPage = new AppPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - } - beforeEach(init); + function init() { + startPage = new AppPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + } + beforeEach(init); - it("when loading session-bad-syntax.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-bad-syntax.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-bad-syntax.json"); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); - }); + await sidenav.loadSessionFile("./session/session-bad-syntax.json"); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); + }); - it("when loading session-missing-info.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-missing-info.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-missing-info.json"); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); - }); + await sidenav.loadSessionFile("./session/session-missing-info.json"); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("La syntaxe du fichier semble incorrecte"); + }); - it("when loading session-empty-modules-list.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-empty-modules-list.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-empty-modules-list.json"); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("Le fichier ne contient aucun module"); -}); + await sidenav.loadSessionFile("./session/session-empty-modules-list.json"); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("Le fichier ne contient aucun module"); + }); -it("when loading session-format-too-old.json, displayed error should be relevant", async () => { - await startPage.navigateTo(); + it("when loading session-format-too-old.json, displayed error should be relevant", async () => { + await startPage.navigateTo(); - await navbar.clickMenuButton(); - await browser.sleep(200); + await navbar.clickMenuButton(); + await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-format-too-old.json", false); - const err = element(by.css(".file-problem .mat-list-item-content")); - expect(await err.getText()).toContain("Mauvaise version du format de fichier"); -}); + await sidenav.loadSessionFile("./session/session-format-too-old.json", false); + const err = element(by.css(".file-problem .mat-list-item-content")); + expect(await err.getText()).toContain("Mauvaise version du format de fichier"); + }); }); diff --git a/e2e/load-save-session.e2e-spec.ts b/e2e/load-save-session.e2e-spec.ts index f8b6ef80c04b1154ed068dc4fd4f500fa145a502..6535d326565c835c536cb993be69d7025922ca9d 100644 --- a/e2e/load-save-session.e2e-spec.ts +++ b/e2e/load-save-session.e2e-spec.ts @@ -10,87 +10,87 @@ import { PreferencesPage } from "./preferences.po"; * Save and load (serialise and unserialise) calculators to/from JSON files */ describe("ngHyd − save and load sessions", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(() => { - startPage = new AppPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - prefPage = new PreferencesPage(); - }); - - it("when loading session-6-calc.test.json file from home page, 6 calculators should be loaded", async () => { - await startPage.navigateTo(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-6-calc.test.json"); - await browser.sleep(200); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(6); - }); - - it("when loading session-optional-params.test.json file from home page, the calculator should be loaded", async () => { - await startPage.navigateTo(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-optional-params.test.json"); - await browser.sleep(200); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(1); - }); - - it("when saving a calculator, the current parameter values should be found in the file", async () => { - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - await navbar.clickNewCalculatorButton(); - - await listPage.clickMenuEntryForCalcType(2); // Section paramétrée - await browser.sleep(500); - - await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 2); // mode "trapezoidal" - - await calcPage.getInputById("Ks").clear(); // coefficient de Strickler - await browser.sleep(1000); - await calcPage.getInputById("Ks").sendKeys("42"); - await browser.sleep(1000); - - await calcPage.clickSaveCalcButton(); - - // see: https://stackoverflow.com/questions/21935696/protractor-e2e-test-case-for-downloading-pdf-file - const fs = require("fs"); - const path = require("path"); - const os = require("os"); - const filename = path.resolve(os.homedir(), "Téléchargements/session.json"); - if (fs.existsSync(filename)) { - // Make sure the browser doesn't have to rename the download. - fs.unlinkSync(filename); - } - - await calcPage.getSaveSessionButton().click(); - await browser.sleep(1000); - const fileContent = fs.readFileSync(filename, { encoding: "utf8" }); - - expect(fileContent).toContain(`"nodeType":"SectionTrapeze"`); - expect(fileContent).toContain(`{"symbol":"Ks","mode":"SINGLE","value":42}`); - }); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(() => { + startPage = new AppPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + prefPage = new PreferencesPage(); + }); + + it("when loading session-6-calc.test.json file from home page, 6 calculators should be loaded", async () => { + await startPage.navigateTo(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-6-calc.test.json"); + await browser.sleep(200); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(6); + }); + + it("when loading session-optional-params.test.json file from home page, the calculator should be loaded", async () => { + await startPage.navigateTo(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-optional-params.test.json"); + await browser.sleep(200); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(1); + }); + + it("when saving a calculator, the current parameter values should be found in the file", async () => { + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + await navbar.clickNewCalculatorButton(); + + await listPage.clickMenuEntryForCalcType(2); // Section paramétrée + await browser.sleep(500); + + await calcPage.changeSelectValue(calcPage.getSelectById("select_section"), 2); // mode "trapezoidal" + + await calcPage.getInputById("Ks").clear(); // coefficient de Strickler + await browser.sleep(1000); + await calcPage.getInputById("Ks").sendKeys("42"); + await browser.sleep(1000); + + await calcPage.clickSaveCalcButton(); + + // see: https://stackoverflow.com/questions/21935696/protractor-e2e-test-case-for-downloading-pdf-file + const fs = require("fs"); + const path = require("path"); + const os = require("os"); + const filename = path.resolve(os.homedir(), "Téléchargements/session.json"); + if (fs.existsSync(filename)) { + // Make sure the browser doesn't have to rename the download. + fs.unlinkSync(filename); + } + + await calcPage.getSaveSessionButton().click(); + await browser.sleep(1000); + const fileContent = fs.readFileSync(filename, { encoding: "utf8" }); + + expect(fileContent).toContain(`"nodeType":"SectionTrapeze"`); + expect(fileContent).toContain(`{"symbol":"Ks","mode":"SINGLE","value":42}`); + }); }); diff --git a/e2e/monkey-test/monkey.e2e-spec.ts b/e2e/monkey-test/monkey.e2e-spec.ts index dba016217c2aa3892d34db70880f04cc26fd2f20..7166aca40e0287b9dfd41537191c7b4614fa3d50 100644 --- a/e2e/monkey-test/monkey.e2e-spec.ts +++ b/e2e/monkey-test/monkey.e2e-spec.ts @@ -11,8 +11,8 @@ let navBar: Navbar; describe("Monkey test with Gremlins.js −", async () => { beforeEach(() => { - prefPage = new PreferencesPage(); - navBar = new Navbar(); + prefPage = new PreferencesPage(); + navBar = new Navbar(); }); // keep greater than setTimeout() in GremlinHelper.ts (twice as much sounds good) diff --git a/e2e/navbar.po.ts b/e2e/navbar.po.ts index 05273efdee188484ce85ba4ebb3054287095000f..739d5bd0a2a2b67fc130de13ccf0a03fa75a0011 100644 --- a/e2e/navbar.po.ts +++ b/e2e/navbar.po.ts @@ -1,82 +1,82 @@ import { by, element, protractor } from "protractor"; export class Navbar { - getAllCalculatorTabs() { - return element.all(by.css("#tabs-container button.calculator-button")); - } + getAllCalculatorTabs() { + return element.all(by.css("#tabs-container button.calculator-button")); + } - /** - * Robust method that returns number of calculator entries, - * whether they are buttons or dropdown select options - */ - async getCalculatorEntriesCount() { - // if dropDown calculators select is visible - const dropDown = element(by.css("mat-select#selectCalculator")); - if (await dropDown.isPresent() && await dropDown.isDisplayed()) { - await dropDown.click(); - const options = (await dropDown.getAttribute("aria-owns")).split(" "); - await dropDown.sendKeys(protractor.Key.ESCAPE); // close dropdown - return options.length; - } else { - return (await element.all(by.css("#tabs-container button.calculator-button"))).length; + /** + * Robust method that returns number of calculator entries, + * whether they are buttons or dropdown select options + */ + async getCalculatorEntriesCount() { + // if dropDown calculators select is visible + const dropDown = element(by.css("mat-select#selectCalculator")); + if (await dropDown.isPresent() && await dropDown.isDisplayed()) { + await dropDown.click(); + const options = (await dropDown.getAttribute("aria-owns")).split(" "); + await dropDown.sendKeys(protractor.Key.ESCAPE); // close dropdown + return options.length; + } else { + return (await element.all(by.css("#tabs-container button.calculator-button"))).length; + } } - } - /** - * Robust method that opens the nth calculator, whether the - * calculator selector is a list of buttons or a dropdown select - */ - async openNthCalculator(n: number) { - // if dropDown calculators select is visible - const dropDown = element(by.css("mat-select#selectCalculator")); - if (await dropDown.isPresent() && await dropDown.isDisplayed()) { - await dropDown.click(); - const options = (await dropDown.getAttribute("aria-owns")).split(" "); - const optId = options[n]; - const option = element(by.id(optId)); - await option.click(); - } else { - const tabs = this.getAllCalculatorTabs(); - await tabs.get(n).click(); + /** + * Robust method that opens the nth calculator, whether the + * calculator selector is a list of buttons or a dropdown select + */ + async openNthCalculator(n: number) { + // if dropDown calculators select is visible + const dropDown = element(by.css("mat-select#selectCalculator")); + if (await dropDown.isPresent() && await dropDown.isDisplayed()) { + await dropDown.click(); + const options = (await dropDown.getAttribute("aria-owns")).split(" "); + const optId = options[n]; + const option = element(by.id(optId)); + await option.click(); + } else { + const tabs = this.getAllCalculatorTabs(); + await tabs.get(n).click(); + } } - } - getCalculatorTabForUid(uid: string) { - return element(by.css("#tabs-container button.calculator-button.calculator-uid-" + uid)); - } + getCalculatorTabForUid(uid: string) { + return element(by.css("#tabs-container button.calculator-button.calculator-uid-" + uid)); + } - getNewCalculatorButton() { - return element(by.css("#new-calculator")); - } + getNewCalculatorButton() { + return element(by.css("#new-calculator")); + } - getMenuButton() { - return element(by.css("#open-menu")); - } + getMenuButton() { + return element(by.css("#open-menu")); + } - async clickCalculatorTab(n: number) { - const tabs = this.getAllCalculatorTabs(); - await tabs.get(n).click(); - } + async clickCalculatorTab(n: number) { + const tabs = this.getAllCalculatorTabs(); + await tabs.get(n).click(); + } - async clickCalculatorTabForUid(uid: string) { - const tab = this.getCalculatorTabForUid(uid); - await tab.click(); - } + async clickCalculatorTabForUid(uid: string) { + const tab = this.getCalculatorTabForUid(uid); + await tab.click(); + } - async clickRandomCalculatorTab(n: number) { - const tabs = this.getAllCalculatorTabs(); - const l = await tabs.count(); - const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); - await tabs.get(r).click(); - } + async clickRandomCalculatorTab(n: number) { + const tabs = this.getAllCalculatorTabs(); + const l = await tabs.count(); + const r = Math.min((Math.floor(Math.random() * l)), (l - 1)); + await tabs.get(r).click(); + } - async clickNewCalculatorButton() { - const ncb = this.getNewCalculatorButton(); - await ncb.click(); - } + async clickNewCalculatorButton() { + const ncb = this.getNewCalculatorButton(); + await ncb.click(); + } - async clickMenuButton() { - const ncb = this.getMenuButton(); - await ncb.click(); - } + async clickMenuButton() { + const ncb = this.getMenuButton(); + await ncb.click(); + } } diff --git a/e2e/navigate-through-calculators.e2e-spec.ts b/e2e/navigate-through-calculators.e2e-spec.ts index ae2dd503fd2b0836cc646d969a7897833b9e954e..8383a74930687c2a176f2336900965cee3e71783 100644 --- a/e2e/navigate-through-calculators.e2e-spec.ts +++ b/e2e/navigate-through-calculators.e2e-spec.ts @@ -7,36 +7,36 @@ import { browser } from "protractor"; * Use navbar buttons to navigate from one open calculator to another */ describe("ngHyd − create calculators and navigate among them", () => { - let listPage: ListPage; - let calculatorPage: CalculatorPage; - let navbar: Navbar; + let listPage: ListPage; + let calculatorPage: CalculatorPage; + let navbar: Navbar; - beforeEach(() => { - listPage = new ListPage(); - calculatorPage = new CalculatorPage(); - navbar = new Navbar(); - }); + beforeEach(() => { + listPage = new ListPage(); + calculatorPage = new CalculatorPage(); + navbar = new Navbar(); + }); - it("when many calculators are open, navigating among them should not fail (all active labels should be visible)", async () => { - await listPage.navigateTo(); - // open 8 calculators - for (let i = 0; i < 6; i++) { - if (i > 0) { - await navbar.clickNewCalculatorButton(); - await browser.sleep(200); - } - await listPage.clickRandomCalculatorMenuEntry(); - } - // navigate among them - for (let i = 0; i < 10; i++) { - await navbar.clickRandomCalculatorTab(i); - // test all form labels - const labels = calculatorPage.getInputLabels(); - await labels.each(async (l) => { - const label = await l.getText(); - expect(label.length).toBeGreaterThan(0); - }); - } - // expect no error ? - }); + it("when many calculators are open, navigating among them should not fail (all active labels should be visible)", async () => { + await listPage.navigateTo(); + // open 8 calculators + for (let i = 0; i < 6; i++) { + if (i > 0) { + await navbar.clickNewCalculatorButton(); + await browser.sleep(200); + } + await listPage.clickRandomCalculatorMenuEntry(); + } + // navigate among them + for (let i = 0; i < 10; i++) { + await navbar.clickRandomCalculatorTab(i); + // test all form labels + const labels = calculatorPage.getInputLabels(); + await labels.each(async (l) => { + const label = await l.getText(); + expect(label.length).toBeGreaterThan(0); + }); + } + // expect no error ? + }); }); diff --git a/e2e/pab.e2e-spec.ts b/e2e/pab.e2e-spec.ts index 7d2e76faf5c5924915602abb60f531a451eb0652..2f75f8df9d326d084d4302160a18b7ff431de7ac 100644 --- a/e2e/pab.e2e-spec.ts +++ b/e2e/pab.e2e-spec.ts @@ -10,298 +10,298 @@ import { PreferencesPage } from "./preferences.po"; * Clone calculators */ describe("ngHyd − Passe à Bassins", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(() => { - startPage = new AppPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - prefPage = new PreferencesPage(); - }); - - describe("create PAB - ", async () => { - - beforeEach(async () => { - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(() => { + startPage = new AppPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + prefPage = new PreferencesPage(); }); - it("when PAB is created from scratch", async() => { - // create PAB - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(15); - // check that pab-table is present - const innerFieldsets = element.all(by.css(".pab-data-table")); - expect(await innerFieldsets.count()).toBe(1); - - // calculate PAB - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check absence of logs - expect(await calcPage.nbLogEntries()).toBe(0); - }); + describe("create PAB - ", async () => { + + beforeEach(async () => { + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("when PAB is created from scratch", async () => { + // create PAB + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(15); + // check that pab-table is present + const innerFieldsets = element.all(by.css(".pab-data-table")); + expect(await innerFieldsets.count()).toBe(1); + + // calculate PAB + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check absence of logs + expect(await calcPage.nbLogEntries()).toBe(0); + }); + + it("complete example of all PAB modules", async () => { + // PAB - chute + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(12); + const c_Z1 = calcPage.getInputById("Z1"); + await c_Z1.clear(); + await c_Z1.sendKeys("78.27"); + const c_Z2 = calcPage.getInputById("Z1"); + await c_Z2.clear(); + await c_Z2.sendKeys("74.86"); + + // PAB - nombre + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(13); + const n_DHT = calcPage.getInputById("DHT"); + await calcPage.setParamMode(n_DHT, "link"); + const n_DH = calcPage.getInputById("DH"); + await calcPage.setParamMode(n_DH, "cal"); + const n_N = calcPage.getInputById("N"); + await n_N.clear(); + await n_N.sendKeys("15"); + + // PAB - dimensions + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(5); + const d_V = calcPage.getInputById("V"); + await calcPage.setParamMode(d_V, "cal"); + const d_Y = calcPage.getInputById("Y"); + await d_Y.clear(); + await d_Y.sendKeys("1.5"); + const d_L = calcPage.getInputById("L"); + await d_L.clear(); + await d_L.sendKeys("3.100"); + const d_W = calcPage.getInputById("W"); + await d_W.clear(); + await d_W.sendKeys("2.5"); + + // PAB - puissance dissipée (volume) + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(6); + const p_DH = calcPage.getInputById("DH"); + await calcPage.setParamMode(p_DH, "link"); + const p_Q = calcPage.getInputById("Q"); + await calcPage.setParamMode(p_Q, "cal"); + const p_V = calcPage.getInputById("V"); + await calcPage.setParamMode(p_V, "link"); + const p_PV = calcPage.getInputById("PV"); + await p_PV.clear(); + await p_PV.sendKeys("150"); + + // PAB - cloisons + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + const cl_LB = calcPage.getInputById("LB"); + await calcPage.setParamMode(cl_LB, "link"); + const cl_BB = calcPage.getInputById("BB"); + await calcPage.setParamMode(cl_BB, "link"); + const cl_DH = calcPage.getInputById("DH"); + await calcPage.setParamMode(cl_DH, "link"); + const cl_Z1 = calcPage.getInputById("Z1"); + await calcPage.setParamMode(cl_Z1, "link"); + const cl_PB = calcPage.getInputById("PB"); + await cl_PB.clear(); + await cl_PB.sendKeys("1.5"); + + // calculate Cloisons + const calcButtonCl = calcPage.getCalculateButton(); + await calcButtonCl.click(); + + // make sure "Generate PAB" button is visible (it might be hidden behind navbar) + await browser.executeScript("window.scrollTo(0, 0);"); + // generate PAB + const genButton = calcPage.getGeneratePabButton(); + await genButton.isPresent(); + await genButton.isDisplayed(); + await genButton.click(); + const nbBassins = calcPage.getInputById("generatePabNbBassins"); + await nbBassins.clear(); + await nbBassins.sendKeys("9"); + + // click "Generate" + await element(by.css("dialog-generate-pab button#do-generate")).click(); + await browser.sleep(1000); + + // calculate PAB + const calcButtonPAB = calcPage.getCalculateButton(); + await calcButtonPAB.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + }); - it("complete example of all PAB modules", async() => { - // PAB - chute - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); - const c_Z1 = calcPage.getInputById("Z1"); - await c_Z1.clear(); - await c_Z1.sendKeys("78.27"); - const c_Z2 = calcPage.getInputById("Z1"); - await c_Z2.clear(); - await c_Z2.sendKeys("74.86"); - - // PAB - nombre - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(13); - const n_DHT = calcPage.getInputById("DHT"); - await calcPage.setParamMode(n_DHT, "link"); - const n_DH = calcPage.getInputById("DH"); - await calcPage.setParamMode(n_DH, "cal"); - const n_N = calcPage.getInputById("N"); - await n_N.clear(); - await n_N.sendKeys("15"); - - // PAB - dimensions - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(5); - const d_V = calcPage.getInputById("V"); - await calcPage.setParamMode(d_V, "cal"); - const d_Y = calcPage.getInputById("Y"); - await d_Y.clear(); - await d_Y.sendKeys("1.5"); - const d_L = calcPage.getInputById("L"); - await d_L.clear(); - await d_L.sendKeys("3.100"); - const d_W = calcPage.getInputById("W"); - await d_W.clear(); - await d_W.sendKeys("2.5"); - - // PAB - puissance dissipée (volume) - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(6); - const p_DH = calcPage.getInputById("DH"); - await calcPage.setParamMode(p_DH, "link"); - const p_Q = calcPage.getInputById("Q"); - await calcPage.setParamMode(p_Q, "cal"); - const p_V = calcPage.getInputById("V"); - await calcPage.setParamMode(p_V, "link"); - const p_PV = calcPage.getInputById("PV"); - await p_PV.clear(); - await p_PV.sendKeys("150"); - - // PAB - cloisons - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - const cl_LB = calcPage.getInputById("LB"); - await calcPage.setParamMode(cl_LB, "link"); - const cl_BB = calcPage.getInputById("BB"); - await calcPage.setParamMode(cl_BB, "link"); - const cl_DH = calcPage.getInputById("DH"); - await calcPage.setParamMode(cl_DH, "link"); - const cl_Z1 = calcPage.getInputById("Z1"); - await calcPage.setParamMode(cl_Z1, "link"); - const cl_PB = calcPage.getInputById("PB"); - await cl_PB.clear(); - await cl_PB.sendKeys("1.5"); - - // calculate Cloisons - const calcButtonCl = calcPage.getCalculateButton(); - await calcButtonCl.click(); - - // make sure "Generate PAB" button is visible (it might be hidden behind navbar) - await browser.executeScript("window.scrollTo(0, 0);"); - // generate PAB - const genButton = calcPage.getGeneratePabButton(); - await genButton.isPresent(); - await genButton.isDisplayed(); - await genButton.click(); - const nbBassins = calcPage.getInputById("generatePabNbBassins"); - await nbBassins.clear(); - await nbBassins.sendKeys("9"); - - // click "Generate" - await element(by.css("dialog-generate-pab button#do-generate")).click(); - await browser.sleep(1000); - - // calculate PAB - const calcButtonPAB = calcPage.getCalculateButton(); - await calcButtonPAB.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); }); - }); - - describe("generate PAB - ", async () => { + describe("generate PAB - ", async () => { + + beforeEach(async () => { + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("from a Cloisons among many", async () => { + // create many Cloisons + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(10); + // choose one of them and change its parameters + await navbar.clickCalculatorTab(1); + const Z1 = calcPage.getInputById("Z1"); + await Z1.clear(); + await Z1.sendKeys("114"); + const LB = calcPage.getInputById("LB"); + await LB.clear(); + await LB.sendKeys("11.5"); + const DH = calcPage.getInputById("DH"); + await DH.clear(); + await DH.sendKeys("0.72"); + + // calculate Cloisons + const calcButtonCl = calcPage.getCalculateButton(); + await calcButtonCl.click(); + + // make sure "Generate PAB" button is visible (it might be hidden behind navbar) + await browser.executeScript("window.scrollTo(0, 0);"); + // create PAB from it, changing modal parameters + const genButton = calcPage.getGeneratePabButton(); + await genButton.click(); + const debit = calcPage.getInputById("generatePabDebit"); + expect(await debit.getAttribute("value")).toBe("0.564"); + await debit.clear(); + await browser.sleep(300); + // send "1.6" in 3 movements, because "." triggers an error and Angular can't cope with the subsequent keys + await debit.sendKeys("1"); + await browser.sleep(300); + await debit.sendKeys("."); + await browser.sleep(300); + await debit.sendKeys("6"); + await browser.sleep(300); + const coteAmont = calcPage.getInputById("generatePabCoteAmont"); + expect(await coteAmont.getAttribute("value")).toBe("114"); + await coteAmont.clear(); + await coteAmont.sendKeys("115"); + const nbBassins = calcPage.getInputById("generatePabNbBassins"); + expect(await nbBassins.getAttribute("value")).toBe("6"); + await nbBassins.clear(); + await nbBassins.sendKeys("5"); + + // click "Generate" + await element(by.css("dialog-generate-pab button#do-generate")).click(); + await browser.sleep(1000); + + // check parameters values + const P_Q = calcPage.getInputById("Q"); + expect(await P_Q.getAttribute("value")).toBe("1.6"); + const P_Z2 = calcPage.getInputById("Z2"); + expect(await P_Z2.getAttribute("value")).toBe("111.4"); + + // check number of basins + const innerFieldsets = element.all(by.css("td.basin_number")); + expect(await innerFieldsets.count()).toBe(5); + + // calculate PAB + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + }); - beforeEach(async () => { - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); }); - it("from a Cloisons among many", async() => { - // create many Cloisons - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(10); - // choose one of them and change its parameters - await navbar.clickCalculatorTab(1); - const Z1 = calcPage.getInputById("Z1"); - await Z1.clear(); - await Z1.sendKeys("114"); - const LB = calcPage.getInputById("LB"); - await LB.clear(); - await LB.sendKeys("11.5"); - const DH = calcPage.getInputById("DH"); - await DH.clear(); - await DH.sendKeys("0.72"); - - // calculate Cloisons - const calcButtonCl = calcPage.getCalculateButton(); - await calcButtonCl.click(); - - // make sure "Generate PAB" button is visible (it might be hidden behind navbar) - await browser.executeScript("window.scrollTo(0, 0);"); - // create PAB from it, changing modal parameters - const genButton = calcPage.getGeneratePabButton(); - await genButton.click(); - const debit = calcPage.getInputById("generatePabDebit"); - expect(await debit.getAttribute("value")).toBe("0.564"); - await debit.clear(); - await browser.sleep(300); - // send "1.6" in 3 movements, because "." triggers an error and Angular can't cope with the subsequent keys - await debit.sendKeys("1"); - await browser.sleep(300); - await debit.sendKeys("."); - await browser.sleep(300); - await debit.sendKeys("6"); - await browser.sleep(300); - const coteAmont = calcPage.getInputById("generatePabCoteAmont"); - expect(await coteAmont.getAttribute("value")).toBe("114"); - await coteAmont.clear(); - await coteAmont.sendKeys("115"); - const nbBassins = calcPage.getInputById("generatePabNbBassins"); - expect(await nbBassins.getAttribute("value")).toBe("6"); - await nbBassins.clear(); - await nbBassins.sendKeys("5"); - - // click "Generate" - await element(by.css("dialog-generate-pab button#do-generate")).click(); - await browser.sleep(1000); - - // check parameters values - const P_Q = calcPage.getInputById("Q"); - expect(await P_Q.getAttribute("value")).toBe("1.6"); - const P_Z2 = calcPage.getInputById("Z2"); - expect(await P_Z2.getAttribute("value")).toBe("111.4"); - - // check number of basins - const innerFieldsets = element.all(by.css("td.basin_number")); - expect(await innerFieldsets.count()).toBe(5); - - // calculate PAB - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - }); + describe("load session files - ", async () => { + + it("complete example of all PAB modules", async () => { + await startPage.navigateTo(); + // load + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-pab-complete.json"); + await browser.sleep(500); + // check existence of the loaded modules + expect(await navbar.getAllCalculatorTabs().count()).toBe(6); + + // check parameters values + await navbar.clickCalculatorTab(5); + await browser.sleep(700); + const P_Q = calcPage.getInputById("Q"); + expect(await P_Q.getAttribute("value")).toBe("0.275"); + const P_Z2 = calcPage.getInputById("Z2"); + expect(await P_Z2.getAttribute("value")).toBe("74.865"); + // check number of basins + const innerFieldsets = element.all(by.css("td.basin_number")); + expect(await innerFieldsets.count()).toBe(15); + + // calculate PAB + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check absence of logs + expect(await calcPage.nbLogEntries()).toBe(0); + }); - }); - - describe("load session files - ", async () => { - - it("complete example of all PAB modules", async() => { - await startPage.navigateTo(); - // load - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-pab-complete.json"); - await browser.sleep(500); - // check existence of the loaded modules - expect(await navbar.getAllCalculatorTabs().count()).toBe(6); - - // check parameters values - await navbar.clickCalculatorTab(5); - await browser.sleep(700); - const P_Q = calcPage.getInputById("Q"); - expect(await P_Q.getAttribute("value")).toBe("0.275"); - const P_Z2 = calcPage.getInputById("Z2"); - expect(await P_Z2.getAttribute("value")).toBe("74.865"); - // check number of basins - const innerFieldsets = element.all(by.css("td.basin_number")); - expect(await innerFieldsets.count()).toBe(15); - - // calculate PAB - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check absence of logs - expect(await calcPage.nbLogEntries()).toBe(0); }); - }); - - describe("load regulated variated PAB with calc errors - ", async () => { - - it("should display logs", async() => { - await startPage.navigateTo(); - // load - await navbar.clickMenuButton(); - await browser.sleep(200); - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - await sidenav.loadSessionFile("./session/session-pab-regulee-variee.json"); - await browser.sleep(500); - // check existence of the loaded module - expect(await navbar.getAllCalculatorTabs().count()).toBe(1); - await navbar.clickCalculatorTab(0); - - // calculate - const calcButton = calcPage.getCalculateButton(); - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // check presence of logs - await browser.sleep(300); - expect(await calcPage.nbLogEntries()).toBe(2); - - // change iteration - const pve = calcPage.getSelectById("pab-variating-element"); - calcPage.changeSelectValue(pve, 3); - await browser.sleep(300); - // check absence of logs - expect(await calcPage.nbLogEntries()).toBe(2); - }); + describe("load regulated variated PAB with calc errors - ", async () => { + + it("should display logs", async () => { + await startPage.navigateTo(); + // load + await navbar.clickMenuButton(); + await browser.sleep(200); + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + await sidenav.loadSessionFile("./session/session-pab-regulee-variee.json"); + await browser.sleep(500); + // check existence of the loaded module + expect(await navbar.getAllCalculatorTabs().count()).toBe(1); + await navbar.clickCalculatorTab(0); + + // calculate + const calcButton = calcPage.getCalculateButton(); + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // check presence of logs + await browser.sleep(300); + expect(await calcPage.nbLogEntries()).toBe(2); + + // change iteration + const pve = calcPage.getSelectById("pab-variating-element"); + calcPage.changeSelectValue(pve, 3); + await browser.sleep(300); + // check absence of logs + expect(await calcPage.nbLogEntries()).toBe(2); + }); - }); + }); }); diff --git a/e2e/preferences.e2e-spec.ts b/e2e/preferences.e2e-spec.ts index dcd4234ef2c4853fd1c41f3646c96ea4cde0873f..e2ac77205912b6c15f1df6487843fbf61aef4658 100644 --- a/e2e/preferences.e2e-spec.ts +++ b/e2e/preferences.e2e-spec.ts @@ -5,67 +5,67 @@ import { browser } from "protractor"; * Open app preferences, check the default values, the validators, the language change */ describe("ngHyd − preferences page", () => { - let page: PreferencesPage; + let page: PreferencesPage; - beforeEach(() => { - page = new PreferencesPage(); - }); + beforeEach(() => { + page = new PreferencesPage(); + }); - it("when preferences are open, user should see a heading title", async () => { - await page.navigateTo(); - const text = await page.getHeader1().getText(); - expect(text.length).toBeGreaterThan(0); - }); + it("when preferences are open, user should see a heading title", async () => { + await page.navigateTo(); + const text = await page.getHeader1().getText(); + expect(text.length).toBeGreaterThan(0); + }); - it("when preferences are open, no label should be empty", async () => { - const labels = page.getInputLabels(); - await labels.each(async (l) => { - const label = await l.getText(); - expect(label.length).toBeGreaterThan(0); + it("when preferences are open, no label should be empty", async () => { + const labels = page.getInputLabels(); + await labels.each(async (l) => { + const label = await l.getText(); + expect(label.length).toBeGreaterThan(0); + }); }); - }); - it("when preferences are open, no input field should be empty", async () => { - const numericFields = page.getNumericFormFields(); - await numericFields.each(async (nf) => { - const input = page.getInputForField(nf); - const val = await input.getAttribute("value"); - expect(val).toBeTruthy(); + it("when preferences are open, no input field should be empty", async () => { + const numericFields = page.getNumericFormFields(); + await numericFields.each(async (nf) => { + const input = page.getInputForField(nf); + const val = await input.getAttribute("value"); + expect(val).toBeTruthy(); + }); }); - }); - it("when erroneous values are input, errors should appear", async () => { - const numericFields = page.getNumericFormFields(); - await numericFields.each(async (nf) => { - // add a letter after the numerical value - await page.getInputForField(nf).sendKeys("d"); - expect(page.getErrorsForField(nf).isPresent()).toBe(true); - // empty input - await page.getInputForField(nf).clear(); - expect(page.getErrorsForField(nf).isPresent()).toBe(true); - // send bad value - await page.getInputForField(nf).sendKeys("50000"); - expect(page.getErrorsForField(nf).isPresent()).toBe(true); + it("when erroneous values are input, errors should appear", async () => { + const numericFields = page.getNumericFormFields(); + await numericFields.each(async (nf) => { + // add a letter after the numerical value + await page.getInputForField(nf).sendKeys("d"); + expect(page.getErrorsForField(nf).isPresent()).toBe(true); + // empty input + await page.getInputForField(nf).clear(); + expect(page.getErrorsForField(nf).isPresent()).toBe(true); + // send bad value + await page.getInputForField(nf).sendKeys("50000"); + expect(page.getErrorsForField(nf).isPresent()).toBe(true); + }); }); - }); - it("when correct values are input, errors should disappear", async () => { - const numericFields = page.getNumericFormFields(); - await numericFields.each(async (nf) => { - // send correct value - await page.getInputForField(nf).clear(); - await page.getInputForField(nf).sendKeys("1"); - expect(page.getErrorsForField(nf).isPresent()).toBe(false); + it("when correct values are input, errors should disappear", async () => { + const numericFields = page.getNumericFormFields(); + await numericFields.each(async (nf) => { + // send correct value + await page.getInputForField(nf).clear(); + await page.getInputForField(nf).sendKeys("1"); + expect(page.getErrorsForField(nf).isPresent()).toBe(false); + }); }); - }); - it("when language is changed, language should change", async () => { - await page.changeLanguage(0); - await browser.sleep(200); - const val1 = await page.getHeader1().getText(); - await page.changeLanguage(1); - await browser.sleep(200); - const val2 = await page.getHeader1().getText(); - expect(val1).not.toEqual(val2); - }); + it("when language is changed, language should change", async () => { + await page.changeLanguage(0); + await browser.sleep(200); + const val1 = await page.getHeader1().getText(); + await page.changeLanguage(1); + await browser.sleep(200); + const val2 = await page.getHeader1().getText(); + expect(val1).not.toEqual(val2); + }); }); diff --git a/e2e/preferences.po.ts b/e2e/preferences.po.ts index f5fe84248c4b0f16c9462596db9d490edcb5363c..038b2d18db14d7a6e7d150eb6e96ce157b4b6933 100644 --- a/e2e/preferences.po.ts +++ b/e2e/preferences.po.ts @@ -1,52 +1,52 @@ import { browser, by, element, ElementFinder } from "protractor"; export class PreferencesPage { - navigateTo() { - return browser.get("/#/setup"); - } - - getHeader1() { - return element(by.css("h1")); - } - - getLanguageSelect() { - return element(by.css(`mat-select[data-testid="language-select"]`)); - } - - getEmptyFieldsCheckbox() { - return element(by.css(`mat-checkbox#cb_emptyFields`)); - } - - getInputLabels() { - return element.all(by.css("label.mat-form-field-label")); - } - - getNumericFormFields() { - return element.all(by.css(`mat-form-field[data-testclass="numeric-input"]`)); - } - - getInputForField(ff: ElementFinder) { - return ff.element(by.css("input")); - } - - getErrorsForField(ff: ElementFinder) { - return ff.element(by.css("mat-error")); - } - - async changeLanguage(index: number) { - const select = this.getLanguageSelect(); - await select.click(); - const options = (await select.getAttribute("aria-owns")).split(" "); - const optId = options[index]; - const option = element(by.id(optId)); - await option.click(); - } - - async disableEvilEmptyFields() { - const cb = this.getEmptyFieldsCheckbox(); - const underlyingCB = cb.element(by.css(`input.mat-checkbox-input`)); - if (underlyingCB.isSelected()) { - await cb.click(); - } - } + navigateTo() { + return browser.get("/#/setup"); + } + + getHeader1() { + return element(by.css("h1")); + } + + getLanguageSelect() { + return element(by.css(`mat-select[data-testid="language-select"]`)); + } + + getEmptyFieldsCheckbox() { + return element(by.css(`mat-checkbox#cb_emptyFields`)); + } + + getInputLabels() { + return element.all(by.css("label.mat-form-field-label")); + } + + getNumericFormFields() { + return element.all(by.css(`mat-form-field[data-testclass="numeric-input"]`)); + } + + getInputForField(ff: ElementFinder) { + return ff.element(by.css("input")); + } + + getErrorsForField(ff: ElementFinder) { + return ff.element(by.css("mat-error")); + } + + async changeLanguage(index: number) { + const select = this.getLanguageSelect(); + await select.click(); + const options = (await select.getAttribute("aria-owns")).split(" "); + const optId = options[index]; + const option = element(by.id(optId)); + await option.click(); + } + + async disableEvilEmptyFields() { + const cb = this.getEmptyFieldsCheckbox(); + const underlyingCB = cb.element(by.css(`input.mat-checkbox-input`)); + if (underlyingCB.isSelected()) { + await cb.click(); + } + } } diff --git a/e2e/remous.e2e-spec.ts b/e2e/remous.e2e-spec.ts index 2db4e234ad42d2ca3237934aafae9a91947a6831..5c4603946995d87a1e02285d0a1e2198cf8c7877 100644 --- a/e2e/remous.e2e-spec.ts +++ b/e2e/remous.e2e-spec.ts @@ -8,43 +8,43 @@ import { PreferencesPage } from "./preferences.po"; * Remous */ describe("ngHyd − remous", () => { - let listPage: ListPage; - let calcPage: CalculatorPage; - let navBar: Navbar; - let prefPage: PreferencesPage; - - beforeEach(async () => { - listPage = new ListPage(); - prefPage = new PreferencesPage(); - calcPage = new CalculatorPage(); - navBar = new Navbar(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - it("when leaving calculated remous page then coming back to it, logs should not be duplicated", async () => { - await navBar.clickNewCalculatorButton(); - - // 1. create new Remous - await listPage.clickMenuEntryForCalcType(4); - await browser.sleep(300); - - // 2. calculate it, there should be 6 messages in the log - await calcPage.getCalculateButton().click(); - expect(await calcPage.nbLogEntries()).toBe(6); - await browser.sleep(300); - - // 3. go to home page (simplest example) - await navBar.clickNewCalculatorButton(); - await browser.sleep(300); - - // 4. go back to Remous - await navBar.clickCalculatorTab(0); - await browser.sleep(300); - - // 5. there should still be 6 messages in the log - expect(await calcPage.nbLogEntries()).toBe(6); - }); + let listPage: ListPage; + let calcPage: CalculatorPage; + let navBar: Navbar; + let prefPage: PreferencesPage; + + beforeEach(async () => { + listPage = new ListPage(); + prefPage = new PreferencesPage(); + calcPage = new CalculatorPage(); + navBar = new Navbar(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("when leaving calculated remous page then coming back to it, logs should not be duplicated", async () => { + await navBar.clickNewCalculatorButton(); + + // 1. create new Remous + await listPage.clickMenuEntryForCalcType(4); + await browser.sleep(300); + + // 2. calculate it, there should be 6 messages in the log + await calcPage.getCalculateButton().click(); + expect(await calcPage.nbLogEntries()).toBe(6); + await browser.sleep(300); + + // 3. go to home page (simplest example) + await navBar.clickNewCalculatorButton(); + await browser.sleep(300); + + // 4. go back to Remous + await navBar.clickCalculatorTab(0); + await browser.sleep(300); + + // 5. there should still be 6 messages in the log + expect(await calcPage.nbLogEntries()).toBe(6); + }); }); diff --git a/e2e/sidenav.po.ts b/e2e/sidenav.po.ts index 8dc79467f5ad34f199f2a77e225845ff1f334198..970a1e5b60834538c7c5d542e2c0f83eb26302ee 100644 --- a/e2e/sidenav.po.ts +++ b/e2e/sidenav.po.ts @@ -3,47 +3,47 @@ import * as path from "path"; export class SideNav { - getLoadSessionButton() { - return element(by.css("#side-nav-load-session")); - } - - getNewSessionButton() { - return element(by.css("#side-nav-empty-session")); - } - - getFileInput() { - return element(by.css(`dialog-load-session input[type="file"]`)); - } - - getFileLoadButton() { - return element(by.css(`dialog-load-session button[type="submit"]`)); - } - - getConfirmNewSessionButton() { - return element(by.css(`button#confirm-new-session`)); - } - - async clickLoadSessionButton() { - const ncb = this.getLoadSessionButton(); - await browser.sleep(500); - await ncb.click(); - } - - async clickNewSessionButton() { - const ncb = this.getNewSessionButton(); - await browser.sleep(200); - await ncb.click(); - await browser.sleep(200); - await this.getConfirmNewSessionButton().click(); - } - - async loadSessionFile(file: string, click: boolean = true) { - const absolutePath = path.resolve(__dirname, file); - const input = this.getFileInput(); - await input.sendKeys(absolutePath); - await browser.sleep(500); - if (click) { - await this.getFileLoadButton().click(); - } - } + getLoadSessionButton() { + return element(by.css("#side-nav-load-session")); + } + + getNewSessionButton() { + return element(by.css("#side-nav-empty-session")); + } + + getFileInput() { + return element(by.css(`dialog-load-session input[type="file"]`)); + } + + getFileLoadButton() { + return element(by.css(`dialog-load-session button[type="submit"]`)); + } + + getConfirmNewSessionButton() { + return element(by.css(`button#confirm-new-session`)); + } + + async clickLoadSessionButton() { + const ncb = this.getLoadSessionButton(); + await browser.sleep(500); + await ncb.click(); + } + + async clickNewSessionButton() { + const ncb = this.getNewSessionButton(); + await browser.sleep(200); + await ncb.click(); + await browser.sleep(200); + await this.getConfirmNewSessionButton().click(); + } + + async loadSessionFile(file: string, click: boolean = true) { + const absolutePath = path.resolve(__dirname, file); + const input = this.getFileInput(); + await input.sendKeys(absolutePath); + await browser.sleep(500); + if (click) { + await this.getFileLoadButton().click(); + } + } } diff --git a/e2e/solveur.e2e-spec.ts b/e2e/solveur.e2e-spec.ts index 93adaae77f47d2670daf98ebaab6675e3240894d..334625f501e347474787d77ba72211a20224fa7c 100644 --- a/e2e/solveur.e2e-spec.ts +++ b/e2e/solveur.e2e-spec.ts @@ -10,133 +10,142 @@ import { PreferencesPage } from "./preferences.po"; * Clone calculators */ describe("Solveur - ", () => { - let startPage: AppPage; - let listPage: ListPage; - let calcPage: CalculatorPage; - let navbar: Navbar; - let sidenav: SideNav; - let prefPage: PreferencesPage; - - beforeEach(async () => { - startPage = new AppPage(); - prefPage = new PreferencesPage(); - listPage = new ListPage(); - calcPage = new CalculatorPage(); - navbar = new Navbar(); - sidenav = new SideNav(); - // disable evil option "empty fields on module creation" - await prefPage.navigateTo(); - await prefPage.disableEvilEmptyFields(); - await browser.sleep(200); - }); - - it("load > calculate", async () => { - await navbar.clickNewCalculatorButton(); - - await navbar.clickMenuButton(); - await browser.sleep(200); - - await sidenav.clickLoadSessionButton(); - await browser.sleep(200); - - await sidenav.loadSessionFile("./session/session-solveur-chutes.json"); - await browser.sleep(200); - - expect(await navbar.getAllCalculatorTabs().count()).toBe(4); - await navbar.clickCalculatorTab(3); // n°3 should be the latest - - // check input values - expect(await calcPage.getInputById("Xinit").getAttribute("value")).toBe("0.5"); - expect(await calcPage.getInputById("Ytarget").getAttribute("value")).toBe("252"); - // check Nub to calculate - const ntc = calcPage.getSelectById("select_target_nub"); - const ntcV = await calcPage.getSelectValueText(ntc); - expect(ntcV).toContain("PAB : puissance / Puissance dissipée (PV)"); - // check searched Parameter - const sp = calcPage.getSelectById("select_searched_param"); - const spV = await calcPage.getSelectValueText(sp); - expect(spV).toContain("Z2 - Cote aval (PAB : chute)"); - - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - }); - - it("create > feed > calculate > clone > calculate clone", async () => { - await navbar.clickNewCalculatorButton(); - - // 1. create empty Solveur - await listPage.clickMenuEntryForCalcType(22); // Solveur - await browser.sleep(500); - - // 2. create PAB:Chute, PAB:Nombre and PAB:Puissance linked to one another - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(12); // PAB:Chute - await browser.sleep(500); - await navbar.clickNewCalculatorButton(); - - await listPage.clickMenuEntryForCalcType(13); // PAB:Nombre - await browser.sleep(500); - // link DHT to PAB:Chute.DH - const dht = calcPage.getInputById("DHT"); - await calcPage.setParamMode(dht, "link"); - // Calculate DH - const dh_nombre = calcPage.getInputById("DH"); - await calcPage.setParamMode(dh_nombre, "cal"); - - await navbar.clickNewCalculatorButton(); - await listPage.clickMenuEntryForCalcType(6); // PAB:Puissance - await browser.sleep(500); - // link DH to PAB:Nombre.DH - const dh_puiss = calcPage.getInputById("DH"); - await calcPage.setParamMode(dh_puiss, "link"); - - // Go back to Solveur - await navbar.clickCalculatorTab(0); - - await calcPage.changeSelectValue(calcPage.getSelectById("select_target_nub"), 1); // "Puissance / PV" - await browser.sleep(500); - await calcPage.changeSelectValue(calcPage.getSelectById("select_searched_param"), 2); // "Chute / Z2" - await browser.sleep(500); - await calcPage.getInputById("Ytarget").sendKeys("318"); - - // check that "compute" button is active - const calcButton = calcPage.getCalculateButton(); - const disabledState = await calcButton.getAttribute("disabled"); - expect(disabledState).not.toBe("true"); - // click "compute" button - await calcButton.click(); - // check that result is not empty - const hasResults = await calcPage.hasResults(); - expect(hasResults).toBe(true); - - // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" - await browser.executeScript("window.scrollTo(0, 0);"); - await calcPage.clickCloneCalcButton(); - await browser.sleep(500); - - // 4. check existence of the cloned module - expect(await navbar.getAllCalculatorTabs().count()).toBe(5); - await navbar.clickCalculatorTab(4); // n°4 should be the latest - - // check that result is empty - const hasResultsClone1 = await calcPage.hasResults(); - expect(hasResultsClone1).toBe(false); - - // check that "compute" button is active - const calcButtonClone = calcPage.getCalculateButton(); - const disabledStateClone = await calcButtonClone.getAttribute("disabled"); - expect(disabledStateClone).not.toBe("true"); - // click "compute" button - await calcButtonClone.click(); - // check that result is not empty - const hasResultsClone2 = await calcPage.hasResults(); - expect(hasResultsClone2).toBe(true); - }); + let startPage: AppPage; + let listPage: ListPage; + let calcPage: CalculatorPage; + let navbar: Navbar; + let sidenav: SideNav; + let prefPage: PreferencesPage; + + beforeEach(async () => { + startPage = new AppPage(); + prefPage = new PreferencesPage(); + listPage = new ListPage(); + calcPage = new CalculatorPage(); + navbar = new Navbar(); + sidenav = new SideNav(); + // disable evil option "empty fields on module creation" + await prefPage.navigateTo(); + await prefPage.disableEvilEmptyFields(); + await browser.sleep(200); + }); + + it("load > calculate", async () => { + await navbar.clickNewCalculatorButton(); + + await navbar.clickMenuButton(); + await browser.sleep(200); + + await sidenav.clickLoadSessionButton(); + await browser.sleep(200); + + await sidenav.loadSessionFile("./session/session-solveur-chutes.json"); + await browser.sleep(200); + + expect(await navbar.getAllCalculatorTabs().count()).toBe(4); + await navbar.clickCalculatorTab(3); // n°3 should be the latest + + // check input values + expect(await calcPage.getInputById("Xinit").getAttribute("value")).toBe("0.5"); + expect(await calcPage.getInputById("Ytarget").getAttribute("value")).toBe("252"); + // check Nub to calculate + const ntc = calcPage.getSelectById("select_target_nub"); + const ntcV = await calcPage.getSelectValueText(ntc); + expect(ntcV).toContain("PAB : puissance / Puissance dissipée (PV)"); + // check targetted result + const ntt = calcPage.getSelectById("select_target_result"); + const nttV = await calcPage.getSelectValueText(ntt); + expect(nttV).toContain("Puissance dissipée (PV)"); + // check searched Parameter + const sp = calcPage.getSelectById("select_searched_param"); + const spV = await calcPage.getSelectValueText(sp); + expect(spV).toContain("Z2 - Cote aval (PAB : chute)"); + + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // change targetted Nub, check that targetted result changes too + await calcPage.changeSelectValue(ntc, 0); + const nttV2 = await calcPage.getSelectValueText(ntt); + expect(nttV2).not.toContain("Puissance dissipée (PV)"); + }); + + it("create > feed > calculate > clone > calculate clone", async () => { + await navbar.clickNewCalculatorButton(); + + // 1. create empty Solveur + await listPage.clickMenuEntryForCalcType(22); // Solveur + await browser.sleep(500); + + // 2. create PAB:Chute, PAB:Nombre and PAB:Puissance linked to one another + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(12); // PAB:Chute + await browser.sleep(500); + await navbar.clickNewCalculatorButton(); + + await listPage.clickMenuEntryForCalcType(13); // PAB:Nombre + await browser.sleep(500); + // link DHT to PAB:Chute.DH + const dht = calcPage.getInputById("DHT"); + await calcPage.setParamMode(dht, "link"); + // Calculate DH + const dh_nombre = calcPage.getInputById("DH"); + await calcPage.setParamMode(dh_nombre, "cal"); + + await navbar.clickNewCalculatorButton(); + await listPage.clickMenuEntryForCalcType(6); // PAB:Puissance + await browser.sleep(500); + // link DH to PAB:Nombre.DH + const dh_puiss = calcPage.getInputById("DH"); + await calcPage.setParamMode(dh_puiss, "link"); + + // Go back to Solveur + await navbar.clickCalculatorTab(0); + + await calcPage.changeSelectValue(calcPage.getSelectById("select_target_nub"), 1); // "Puissance / PV" + await browser.sleep(500); + await calcPage.changeSelectValue(calcPage.getSelectById("select_searched_param"), 2); // "Chute / Z2" + await browser.sleep(500); + await calcPage.getInputById("Ytarget").sendKeys("318"); + + // check that "compute" button is active + const calcButton = calcPage.getCalculateButton(); + const disabledState = await calcButton.getAttribute("disabled"); + expect(disabledState).not.toBe("true"); + // click "compute" button + await calcButton.click(); + // check that result is not empty + const hasResults = await calcPage.hasResults(); + expect(hasResults).toBe(true); + + // otherwise clickCloneCalcButton() fails with "Element is not clickable at point" + await browser.executeScript("window.scrollTo(0, 0);"); + await calcPage.clickCloneCalcButton(); + await browser.sleep(500); + + // 4. check existence of the cloned module + expect(await navbar.getAllCalculatorTabs().count()).toBe(5); + await navbar.clickCalculatorTab(4); // n°4 should be the latest + + // check that result is empty + const hasResultsClone1 = await calcPage.hasResults(); + expect(hasResultsClone1).toBe(false); + + // check that "compute" button is active + const calcButtonClone = calcPage.getCalculateButton(); + const disabledStateClone = await calcButtonClone.getAttribute("disabled"); + expect(disabledStateClone).not.toBe("true"); + // click "compute" button + await calcButtonClone.click(); + // check that result is not empty + const hasResultsClone2 = await calcPage.hasResults(); + expect(hasResultsClone2).toBe(true); + }); }); diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json index 801a822f4cfe1ac679c66be90206eb1997c969ef..6841529a944cda65f089319bb412599d6b13e946 100644 --- a/e2e/tsconfig.e2e.json +++ b/e2e/tsconfig.e2e.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../out-tsc/e2e", "baseUrl": "./", diff --git a/electron/icon.png b/electron/icon.png index 78fc8b7beb1e76071ffdbbc21007da6d45a24e07..eb1f1a84ff01216f30951b5f0df3aa64884b0c1f 120000 --- a/electron/icon.png +++ b/electron/icon.png @@ -1 +1 @@ -../src/android-chrome-512x512.png \ No newline at end of file +../src/assets/icons/android-chrome-512x512.png \ No newline at end of file diff --git a/jalhyd_branch b/jalhyd_branch index 1f7391f92b6a3792204e07e99f71f643cc35e7e1..f95555f7a46d0099a962879fa5b1ec791ca252ee 100644 --- a/jalhyd_branch +++ b/jalhyd_branch @@ -1 +1 @@ -master +204-ajout-de-la-fonctionnalite-respect-des-criteres-2 diff --git a/mkdocs-en.yml b/mkdocs-en.yml index 5adfe779a686e1ba9a6e46dee2f230dd3a5b0cff..dc49d2d4333afe4b07471add0f338f2f04fe5b56 100644 --- a/mkdocs-en.yml +++ b/mkdocs-en.yml @@ -10,12 +10,15 @@ theme: language: 'en' use_directory_urls: false extra_javascript: - - ../javascripts/mathjax/MathJax.js?config=TeX-AMS_CHTML + - ../javascripts/mathjax.config.js + - ../javascripts/mathjax/tex-mml-chtml.js - ../javascripts/matomo-tracking.js markdown_extensions: - mdx_math - footnotes - codehilite + - pymdownx.arithmatex: + generic: true nav: - Presentation of Cassiopée: - index.md @@ -64,6 +67,20 @@ nav: - calculators/pam/macrorugo_theorie.md - calculators/pam/macrorugo_complexe.md - calculators/pam/concentration.md + - Baffle fishways: + - Baffle fishway setup: calculators/par/calage.md + - Baffle fishway simulation: calculators/par/simulation.md + - Baffle fishways formulas: calculators/par/formules.md + - calculators/par/theorie_plans.md + - calculators/par/theorie_fatou.md + - calculators/par/theorie_suractif.md + - calculators/par/theorie_mixte.md + - Crossability verification: + - Principle: calculators/verif/principe.md + - Fish ladders: calculators/verif/pab.md + - Baffle fishways: calculators/verif/par.md + - Rock-ramp fishpasses: calculators/verif/macrorugo.md + - Predefined species: calculators/verif/especes_predefinies.md - Downstream migration: - Loss of charge, water grid: calculators/devalaison/grille.md - Jet impact: calculators/devalaison/jet.md diff --git a/mkdocs-fr.yml b/mkdocs-fr.yml index 20a6b9fa6902f91be1b4031ef37f57648e91346e..6b0870d906c13445c9d7697e7fcbde9f79fe2039 100644 --- a/mkdocs-fr.yml +++ b/mkdocs-fr.yml @@ -10,12 +10,15 @@ theme: language: 'fr' use_directory_urls: false extra_javascript: - - ../javascripts/mathjax/MathJax.js?config=TeX-AMS_CHTML + - ../javascripts/mathjax.config.js + - ../javascripts/mathjax/tex-mml-chtml.js - ../javascripts/matomo-tracking.js markdown_extensions: - mdx_math - footnotes - codehilite + - pymdownx.arithmatex: + generic: true nav: - Présentation de Cassiopée: - index.md @@ -72,6 +75,12 @@ nav: - calculators/par/theorie_fatou.md - calculators/par/theorie_suractif.md - calculators/par/theorie_mixte.md + - Vérification des critères de franchissement: + - Principe: calculators/verif/principe.md + - Passes à bassins: calculators/verif/pab.md + - Passes à ralentisseurs: calculators/verif/par.md + - Passes à macrorugosités: calculators/verif/macrorugo.md + - Espèces prédéfinies: calculators/verif/especes_predefinies.md - Dévalaison: - Perte de charge sur grille de prise d'eau: calculators/devalaison/grille.md - Impact de jet: calculators/devalaison/jet.md diff --git a/package-lock.json b/package-lock.json index b25fc3b995a0f1bf106b0bc09340a4da8899d9e7..16fb374d223243cff5ba827b1638699a1c0e4bb0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,171 +11,142 @@ "dev": true }, "@angular-devkit/architect": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.900.7.tgz", - "integrity": "sha512-hfiTVYc72kzbXrzK4tea6jnTDnSKpE1D+vEptBXN2tdXEVNEAQI5Qm5L1zVDtt16UdqoUTUypIgUc9jcNH1mUQ==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1000.7.tgz", + "integrity": "sha512-6pa98C5i+OrBumWobEjjGAeVNbv8m3h3LQQnXtihv9tjxCWceg25jtDhaNzeS6L8D/NsBnVb61MhTaOKUj7kUA==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "rxjs": "6.5.3" + "@angular-devkit/core": "10.0.7", + "rxjs": "6.5.5" }, "dependencies": { "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, "@angular-devkit/build-angular": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.900.7.tgz", - "integrity": "sha512-Yv2y3OEaYEd0fE0pKvtqBpmkQYs9xJws7thHnJYCwIfYO55RfolYsXkJgAXke/4NPLrD3EsIDqoPxF7l+uw2/Q==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.900.7", - "@angular-devkit/build-optimizer": "0.900.7", - "@angular-devkit/build-webpack": "0.900.7", - "@angular-devkit/core": "9.0.7", - "@babel/core": "7.7.7", - "@babel/generator": "7.7.7", - "@babel/preset-env": "7.7.7", - "@ngtools/webpack": "9.0.7", - "ajv": "6.10.2", - "autoprefixer": "9.7.1", - "babel-loader": "8.0.6", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1000.7.tgz", + "integrity": "sha512-EeA+X+pu4w8Io+SpmKBkvVUxuhzgcwaRBi42lKM3D4ot0MtrsSJi6E40t5E/Km6kohibRkDBYY32uT0eG4WHsw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1000.7", + "@angular-devkit/build-optimizer": "0.1000.7", + "@angular-devkit/build-webpack": "0.1000.7", + "@angular-devkit/core": "10.0.7", + "@babel/core": "7.9.6", + "@babel/generator": "7.9.6", + "@babel/plugin-transform-runtime": "7.9.6", + "@babel/preset-env": "7.9.6", + "@babel/runtime": "7.9.6", + "@babel/template": "7.8.6", + "@jsdevtools/coverage-istanbul-loader": "3.0.3", + "@ngtools/webpack": "10.0.7", + "ajv": "6.12.3", + "autoprefixer": "9.8.0", + "babel-loader": "8.1.0", "browserslist": "^4.9.1", - "cacache": "13.0.1", + "cacache": "15.0.3", "caniuse-lite": "^1.0.30001032", "circular-dependency-plugin": "5.2.0", - "copy-webpack-plugin": "5.1.1", + "copy-webpack-plugin": "6.0.3", "core-js": "3.6.4", - "coverage-istanbul-loader": "2.0.3", + "css-loader": "3.5.3", "cssnano": "4.1.10", - "file-loader": "4.2.0", - "find-cache-dir": "3.0.0", - "glob": "7.1.5", - "jest-worker": "24.9.0", + "file-loader": "6.0.0", + "find-cache-dir": "3.3.1", + "glob": "7.1.6", + "jest-worker": "26.0.0", "karma-source-map-support": "1.4.0", - "less": "3.10.3", - "less-loader": "5.0.0", - "license-webpack-plugin": "2.1.3", - "loader-utils": "1.2.3", - "magic-string": "0.25.4", - "mini-css-extract-plugin": "0.8.0", + "less-loader": "6.1.0", + "license-webpack-plugin": "2.2.0", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "0.9.0", "minimatch": "3.0.4", - "open": "7.0.0", + "open": "7.0.4", "parse5": "4.0.0", - "postcss": "7.0.21", + "pnp-webpack-plugin": "1.6.4", + "postcss": "7.0.31", "postcss-import": "12.0.1", "postcss-loader": "3.0.0", - "raw-loader": "3.1.0", - "regenerator-runtime": "0.13.3", - "rimraf": "3.0.0", - "rollup": "1.25.2", - "rxjs": "6.5.3", - "sass": "1.23.3", - "sass-loader": "8.0.0", - "semver": "6.3.0", + "raw-loader": "4.0.1", + "regenerator-runtime": "0.13.5", + "resolve-url-loader": "3.1.1", + "rimraf": "3.0.2", + "rollup": "2.10.9", + "rxjs": "6.5.5", + "sass": "1.26.5", + "sass-loader": "8.0.2", + "semver": "7.3.2", "source-map": "0.7.3", - "source-map-loader": "0.2.4", - "source-map-support": "0.5.16", - "speed-measure-webpack-plugin": "1.3.1", - "style-loader": "1.0.0", + "source-map-loader": "1.0.0", + "source-map-support": "0.5.19", + "speed-measure-webpack-plugin": "1.3.3", + "style-loader": "1.2.1", "stylus": "0.54.7", "stylus-loader": "3.0.2", - "terser": "4.5.1", - "terser-webpack-plugin": "2.3.3", + "terser": "4.7.0", + "terser-webpack-plugin": "3.0.1", "tree-kill": "1.2.2", - "webpack": "4.41.2", + "webpack": "4.43.0", "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.9.0", + "webpack-dev-server": "3.11.0", "webpack-merge": "4.2.2", "webpack-sources": "1.4.3", - "webpack-subresource-integrity": "1.3.4", - "worker-plugin": "3.2.0" + "webpack-subresource-integrity": "1.4.1", + "worker-plugin": "4.0.3" }, "dependencies": { - "@babel/generator": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", - "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", - "dev": true, - "requires": { - "@babel/types": "^7.7.4", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "@babel/runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.6.tgz", + "integrity": "sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "regenerator-runtime": "^0.13.4" } }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "glob": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz", - "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -186,70 +157,40 @@ "path-is-absolute": "^1.0.0" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", "dev": true }, "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "terser": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.5.1.tgz", - "integrity": "sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -265,182 +206,166 @@ } } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true - }, - "webpack-dev-server": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", - "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.4", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.25", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.4.0", - "spdy": "^4.0.1", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "12.0.5" - } - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } } } }, "@angular-devkit/build-optimizer": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.900.7.tgz", - "integrity": "sha512-gxin2oPNMN+PYo82At2JP1Q+uxnvwyDFWA1Wl+Ufuc5zHGhjKqxdQjkdMF7OT0ihtmkllN+t/NTB7rcx/Sx9Wg==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1000.7.tgz", + "integrity": "sha512-7vnj++astDMnsTPEiXgpXCTwo/zbFmJadKTIlHoU9VHxQNwSfPwSCtPuPlxynquJu5zxhs24CNUBLXXH8z9ztQ==", "dev": true, "requires": { - "loader-utils": "1.2.3", + "loader-utils": "2.0.0", "source-map": "0.7.3", - "tslib": "1.10.0", - "typescript": "3.6.4", + "tslib": "2.0.0", "webpack-sources": "1.4.3" }, "dependencies": { "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true - }, - "typescript": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz", - "integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz", + "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==", "dev": true } } }, "@angular-devkit/build-webpack": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.900.7.tgz", - "integrity": "sha512-Nwwqjo1ZpHFLavN+nXOmuBgGjhoMBZGelDCvHtiQlQ9N6i7k9cKnP7eU5pY7jbalBguS+gWg5wJIGnbqk1K9Rg==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1000.7.tgz", + "integrity": "sha512-+QYsEBcpZGVFFwrIlfH/NbChVdfIlnxtoTPjjR7xI5DOgl57sb79hOo4Ev0mPkbbgfn5tjSHvE3rmVQmlYqzcg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.7", - "@angular-devkit/core": "9.0.7", - "rxjs": "6.5.3" + "@angular-devkit/architect": "0.1000.7", + "@angular-devkit/core": "10.0.7", + "rxjs": "6.5.5" }, "dependencies": { "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, "@angular-devkit/core": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-9.0.7.tgz", - "integrity": "sha512-tMrz36sM1xrwvFf9Qm59GwALscVlMP7rQBjtd0fIR/QbsiOAIX4AQbV+vN6Vtwnzo5NIRZY1IXJUhesWms+h5w==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.0.7.tgz", + "integrity": "sha512-pXaZgsQ8LHpRx4QGAUYDE8GwBQLAtoqPh6oUCwRJwBExm5rl13OGPTBWewHiq0ysV/SnFXvOjxwAaHQvC1AgZw==", "dev": true, "requires": { - "ajv": "6.10.2", - "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.4", - "rxjs": "6.5.3", + "ajv": "6.12.3", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.5.5", "source-map": "0.7.3" }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, "@angular-devkit/schematics": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-9.0.7.tgz", - "integrity": "sha512-ryPC+l24f3gX5DFMTLkDM/q2Kp6LPzBn6400k7j4qVdb1cIrZx+JUQd7F4iAksTTkX15EQPanptQXeztUrl9Ng==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.0.7.tgz", + "integrity": "sha512-eyyYPgpjtr3h7WbnNbkDubJ/p+8TgKU6abWd+NmBfTvyeHrpVFUYZabNRcdXwUDSVzfTQKdmLynIkESj/KROrg==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "ora": "4.0.2", - "rxjs": "6.5.3" + "@angular-devkit/core": "10.0.7", + "ora": "4.0.4", + "rxjs": "6.5.5" }, "dependencies": { "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, "@angular/animations": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-9.0.7.tgz", - "integrity": "sha512-74gY7onajmmnksy5E0/32bFv3B9NuWxV64kqD15YjGrh8AWe1BHt5enQI+rJ2tO8m2DKnwZsctis6k0Kcy+YKQ==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.0.12.tgz", + "integrity": "sha512-SnY25jLtAkH0jZAH1vhnGUsIb/qeMvnO379gMdVTtRR2mMqQnyz+d4IwRd7qOb2gYVSKiXQOEiLFV8TGJbx5mQ==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/cdk": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-9.1.3.tgz", - "integrity": "sha512-K6XJzfqP+PE0ahyBUYrnoW+3ocwDpPN3dE9a+XRtZ0vM4P/FElweWj5zjNwWktb+uF9yal6oMPWXJNOAfonpPw==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-10.1.3.tgz", + "integrity": "sha512-xMV1M41mfuaQod4rtAG/duYiWffGIC2C87E1YuyHTh8SEcHopGVRQd2C8PWH+iwinPbes7AjU1uzCEvmOYikrA==", "requires": { - "parse5": "^5.0.0" + "parse5": "^5.0.0", + "tslib": "^2.0.0" }, "dependencies": { "parse5": { @@ -452,31 +377,31 @@ } }, "@angular/cli": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-9.0.7.tgz", - "integrity": "sha512-/9CUNSSVyTtTNUADZ/VXJDEdhineMN/rfd35w6VsHiob49tKkeOTggaoiSne3RY4VCTqlo7GGf4KhhVXEMGnDQ==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.0.7.tgz", + "integrity": "sha512-o7aLZ5tIndtWodAGjG58XoKqaQMRyTwxad7s/6LGulH/XPo0v7Nk6f+yopKe2HnZJaIh7sVLaBAUxEvp9F1vaQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.900.7", - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7", - "@schematics/angular": "9.0.7", - "@schematics/update": "0.900.7", + "@angular-devkit/architect": "0.1000.7", + "@angular-devkit/core": "10.0.7", + "@angular-devkit/schematics": "10.0.7", + "@schematics/angular": "10.0.7", + "@schematics/update": "0.1000.7", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", - "debug": "^4.1.1", + "debug": "4.1.1", "ini": "1.3.5", - "inquirer": "7.0.0", - "npm-package-arg": "6.1.1", - "npm-pick-manifest": "3.0.2", - "open": "7.0.0", - "pacote": "9.5.8", + "inquirer": "7.1.0", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.1.0", + "open": "7.0.4", + "pacote": "9.5.12", "read-package-tree": "5.3.1", - "rimraf": "3.0.0", - "semver": "6.3.0", + "rimraf": "3.0.2", + "semver": "7.3.2", "symbol-observable": "1.2.0", - "universal-analytics": "^0.4.20", - "uuid": "^3.3.2" + "universal-analytics": "0.4.20", + "uuid": "8.1.0" }, "dependencies": { "ansi-colors": { @@ -500,6 +425,26 @@ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -509,6 +454,15 @@ "restore-cursor": "^3.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -527,24 +481,39 @@ "escape-string-regexp": "^1.0.5" } }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "inquirer": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", - "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.15", "mute-stream": "0.0.8", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", "string-width": "^4.1.0", - "strip-ansi": "^5.1.0", + "strip-ansi": "^6.0.0", "through": "^2.3.6" } }, @@ -555,11 +524,20 @@ "dev": true }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -573,29 +551,20 @@ "dev": true }, "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", "dev": true, "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -612,18 +581,24 @@ } }, "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, "string-width": { @@ -635,34 +610,24 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "type-fest": { @@ -670,23 +635,55 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", "dev": true + }, + "uuid": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.1.0.tgz", + "integrity": "sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "@angular/common": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-9.0.7.tgz", - "integrity": "sha512-B58YgxZva1DBaeayOBsaUOOkoyR+GRibuNC3gfOMm2vXeW9eCNX+jvDtw767GnKm2yGzIq8wB3x6GHojN00dPw==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.0.12.tgz", + "integrity": "sha512-nIWXeLEWU3v4/GprKUtucFoVwNWpoD9DL1RWvOkyXT3tXm/Z8zGwXGKPJ13O2p6E22nChx3GauLKjSUmg1SWww==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/compiler": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.7.tgz", - "integrity": "sha512-hFpkuGpzxpK5h59LHHAjTFWsY6DCXZwgJFqvCuTPxWi/srvLGZRXrpC6Z1SlgHI9xxXaPfoa4uWw2VfA3BnqEg==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.0.12.tgz", + "integrity": "sha512-g7BBC69/LW8Qd98IKL+YAY8vSJyc1WHuMejdMq56hU4h8FzLUKJZeKfsDe9MbiIqoPr9DWcDu4dtcg/g4Rc5/w==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/compiler-cli": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-9.0.7.tgz", - "integrity": "sha512-+RXghex63v0Vi8vpQtDpWiqpAAnrTaN3bHT5fntRenq5+Ok5vL1MJ1mzbTmBXs2tuwTqNlwMm2AlZB7G/xcDMQ==", + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.0.12.tgz", + "integrity": "sha512-biFAxoQKxARpu/PMs8McS5flaPTnAFQ6y/xbBg8ItstzxdTjyuQSuYdvgK48Vd0c8eRv8mEgne3f/Cf7U43nDA==", "dev": true, "requires": { "canonical-path": "1.0.0", @@ -700,69 +697,54 @@ "semver": "^6.3.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "yargs": "13.1.0" + "tslib": "^2.0.0", + "yargs": "15.3.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "fill-range": "^7.0.1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "color-name": "~1.1.4" } }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "to-regex-range": "^5.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "fs-extra": { @@ -776,73 +758,42 @@ "universalify": "^0.1.0" } }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "dev": true, - "optional": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "binary-extensions": "^2.0.0" + "p-locate": "^4.1.0" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "p-limit": "^2.2.0" } }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", - "dev": true, - "requires": { - "picomatch": "^2.0.7" - } - }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -862,57 +813,65 @@ "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "is-number": "^7.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "yargs": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", - "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.0.0" + "yargs-parser": "^18.1.0" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -922,196 +881,165 @@ } }, "@angular/core": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.7.tgz", - "integrity": "sha512-E9XZH5Dl+9MWG3MDC6wrKllhA8Rljpz66HOIeqKv2fHPed8kzuJZU3WJWLtbhDAXFwtGTyTZ4c82ZLSmqwTorg==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.0.12.tgz", + "integrity": "sha512-qwnZ95HtWH2PBZs93iTXa9fvYCg203c/CnbzHNfMTZXcwaEBEEA7nuUBmjQt+VA8ib2BjO8CkepLNJI0pgo29w==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/flex-layout": { - "version": "9.0.0-beta.29", - "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-9.0.0-beta.29.tgz", - "integrity": "sha512-93sxR+kYfYMOdnlWL0Q77FZ428gg8XnBu0YZm6GsCdkw/vLggIT/G1ZAqHlCPIODt6pxmCJ5KXh4ShvniIYDsA==" + "version": "10.0.0-beta.32", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-10.0.0-beta.32.tgz", + "integrity": "sha512-JvuY4dUoy5jyCTIrFiq7n30Znakh1pD3nbg0h0hs2r3t1OiDQb0ZSI1wcumosG/vYHsuJQTuNhbfaIZzA1x8nA==", + "requires": { + "tslib": "^2.0.0" + } }, "@angular/forms": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-9.0.7.tgz", - "integrity": "sha512-PaHAmjMJDtg/3aGCPuq5BCRC1eZ/DBCpva9f7NrA1kqk0LcLdebm0v2uHwTOBtiz/VEgPvxiS4tXC4rjvUtfEg==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.0.12.tgz", + "integrity": "sha512-otFD0ASqD1RMlpnI1OGHCSSDBRsnnz+/Hp5TV7TzqqIsyN9n0SyRw1/ZHMTNLx9JQf+QWhq2pXOOGBYqSiG54Q==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/language-service": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-9.0.7.tgz", - "integrity": "sha512-IZG1kvw48JyFRy7bfMHqBixWrEHZmXmkP5DWsi5Tw6KusaczkMghI20BevCkodPcajXWHAUHNKyp1tlE3OnH0w==", + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-10.0.12.tgz", + "integrity": "sha512-zsEzFu5D1Wm14we625R5IsvYKxuLxCE0VkZVVB402vJFImJNUNrXt/prY5mEnqePnK8fAjJLtJfpn64q8IWXBg==", "dev": true }, "@angular/material": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-9.1.3.tgz", - "integrity": "sha512-tRdd5+z9XwsbN+4WCuH3goyEjqw1Q6vKeURCdas8bh5AVOrCt8pcFlj3yA3P/u4fdhfTeFc67PJRz8Zm0n3moQ==" + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-10.1.3.tgz", + "integrity": "sha512-6ygbCVcejFydmZUlOcNreiWQTvL4kOrEp/M51DV70hqffTnxajCzaRe2MQhxisENB/bR8mtMvf8YY3Rsys/HCw==", + "requires": { + "tslib": "^2.0.0" + } }, "@angular/platform-browser": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-9.0.7.tgz", - "integrity": "sha512-Por8omrEiSV2U/K2mm/Kuv+2R2rJkbAZ3ctEM6CWj9Y4Gz2akjOCxmEgWhhBeqdigcC3T1v707f52osf9jWBkg==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.0.12.tgz", + "integrity": "sha512-w6R81GGgYS+l221yvibomkf0gQTaiontBLzafJXHyHWIXd1A3oVAaNfLzVpHy5kAfd1YruExRJOjDZ6T4iIfyA==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/platform-browser-dynamic": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-9.0.7.tgz", - "integrity": "sha512-jwpyd93ofcRtchbayKD5v4GN4Lc7vbPe6dMUiwfnVnVAql0bOD/3YRI7w5qJ0Xx0sgQT+9Xo6jTXYnyUsZpEww==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.12.tgz", + "integrity": "sha512-izNbYVJiJOT90+Up58Y+E6WHP3CdrS94CZpFwkJFFgRfHu7uKvNrFnB3EkDr5+Lw+RZ8RN5O7QRzUPtG//AGEQ==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@angular/router": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-9.0.7.tgz", - "integrity": "sha512-uKru9F/Zju//gg6INl54abnlpLdEUUO/GpCfMk4zqu8LCZGNFta6OY7VT+9DK9Vdrh/XUD70oE9WoelcRwwTYA==" + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.0.12.tgz", + "integrity": "sha512-utBfsIiVsFNydGtJexvEskYYgQXAd4+1KVxr5wVfND+AfV9EjC7YhMNdySq72ZRNrtQDpDpSlTHvoz5iVeEraw==", + "requires": { + "tslib": "^2.0.0" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" + } + } }, "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", + "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", "dev": true, "requires": { - "@babel/highlight": "^7.0.0" + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" } }, "@babel/core": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", - "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.7", - "@babel/helpers": "^7.7.4", - "@babel/parser": "^7.7.7", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@babel/types": "^7.7.4", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.6.tgz", + "integrity": "sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.6", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.6", + "@babel/parser": "^7.9.6", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.6", + "@babel/types": "^7.9.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" + "@babel/highlight": "^7.10.4" } }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - } - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - } - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, "convert-source-map": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", @@ -1130,21 +1058,6 @@ "ms": "^2.1.1" } }, - "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1160,41 +1073,17 @@ } }, "@babel/generator": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", - "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.6.tgz", + "integrity": "sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ==", "dev": true, "requires": { - "@babel/types": "^7.5.5", + "@babel/types": "^7.9.6", "jsesc": "^2.5.1", "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "source-map": "^0.5.0" }, "dependencies": { - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.2.tgz", - "integrity": "sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ==", - "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" - } - }, - "rimraf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", - "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", - "requires": { - "glob": "^7.1.3" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -1204,1372 +1093,554 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "dev": true, "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", + "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.4", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" }, "dependencies": { - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true } } }, - "@babel/helper-call-delegate": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz", - "integrity": "sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ==", + "@babel/helper-explode-assignable-expression": { + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.7" + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" + "@babel/highlight": "^7.10.4" } }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/types": "^7.8.3" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + } + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/types": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + }, + "dependencies": { + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + } + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" + "@babel/highlight": "^7.10.4" } }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "ms": "^2.1.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "@babel/helper-replace-supers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-regex": "^7.8.3", - "regexpu-core": "^4.7.0" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" + "@babel/highlight": "^7.10.4" } }, - "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", - "dev": true + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } }, - "regjsparser": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", - "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "jsesc": "~0.5.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } } } }, - "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, + "@babel/helper-wrap-function": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/types": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } } } }, - "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "@babel/helpers": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "dev": true, "requires": { - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" }, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", - "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-transforms": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz", - "integrity": "sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-simple-access": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/template": "^7.8.6", - "@babel/types": "^7.8.6", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", - "dev": true - }, - "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", - "dev": true, - "requires": { - "lodash": "^4.17.13" - } - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-wrap-function": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", - "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.3", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helpers": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.4.tgz", - "integrity": "sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w==", - "dev": true, - "requires": { - "@babel/template": "^7.8.3", - "@babel/traverse": "^7.8.4", - "@babel/types": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" + "@babel/highlight": "^7.10.4" } }, "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "dev": true, "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "dev": true, "requires": { - "ms": "^2.1.1" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", - "dev": true, + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { + "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } } }, "@babel/parser": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz", - "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==", - "dev": true + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", + "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", - "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", + "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", - "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", + "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", - "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", + "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", + "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz", - "integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", + "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.8", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-async-generators": { @@ -2599,6 +1670,24 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", @@ -2617,569 +1706,428 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/plugin-syntax-top-level-await": { + "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", - "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", + "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-remap-async-to-generator": "^7.8.3" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "lodash": "^4.17.13" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz", - "integrity": "sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-define-map": "^7.8.3", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-optimise-call-expression": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.6", - "@babel/helper-split-export-declaration": "^7.8.3", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", - "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", + "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", - "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", + "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz", - "integrity": "sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", - "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", + "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", - "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-simple-access": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", - "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", + "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.8.3", - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", - "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", + "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", - "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", + "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4" } }, "@babel/plugin-transform-new-target": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", - "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", + "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-replace-supers": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } - }, - "@babel/plugin-transform-parameters": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz", - "integrity": "sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA==", - "dev": true, - "requires": { - "@babel/helper-call-delegate": "^7.8.7", - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" - }, - "dependencies": { - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", - "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", + "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.6.tgz", + "integrity": "sha512-qcmiECD0mYOjOIt8YHNsAP1SxPooC/rDmfmiSK9BNY72EitdSc7l44WTEklaWuFtbOEBjNhWWyph/kOImbNJ4w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3", - "@babel/helper-regex": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz", - "integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", + "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.8.3", - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", - "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", + "version": "7.9.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.6.tgz", + "integrity": "sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.7.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.7.4", - "@babel/plugin-proposal-dynamic-import": "^7.7.4", - "@babel/plugin-proposal-json-strings": "^7.7.4", - "@babel/plugin-proposal-object-rest-spread": "^7.7.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", - "@babel/plugin-syntax-async-generators": "^7.7.4", - "@babel/plugin-syntax-dynamic-import": "^7.7.4", - "@babel/plugin-syntax-json-strings": "^7.7.4", - "@babel/plugin-syntax-object-rest-spread": "^7.7.4", - "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", - "@babel/plugin-syntax-top-level-await": "^7.7.4", - "@babel/plugin-transform-arrow-functions": "^7.7.4", - "@babel/plugin-transform-async-to-generator": "^7.7.4", - "@babel/plugin-transform-block-scoped-functions": "^7.7.4", - "@babel/plugin-transform-block-scoping": "^7.7.4", - "@babel/plugin-transform-classes": "^7.7.4", - "@babel/plugin-transform-computed-properties": "^7.7.4", - "@babel/plugin-transform-destructuring": "^7.7.4", - "@babel/plugin-transform-dotall-regex": "^7.7.7", - "@babel/plugin-transform-duplicate-keys": "^7.7.4", - "@babel/plugin-transform-exponentiation-operator": "^7.7.4", - "@babel/plugin-transform-for-of": "^7.7.4", - "@babel/plugin-transform-function-name": "^7.7.4", - "@babel/plugin-transform-literals": "^7.7.4", - "@babel/plugin-transform-member-expression-literals": "^7.7.4", - "@babel/plugin-transform-modules-amd": "^7.7.5", - "@babel/plugin-transform-modules-commonjs": "^7.7.5", - "@babel/plugin-transform-modules-systemjs": "^7.7.4", - "@babel/plugin-transform-modules-umd": "^7.7.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", - "@babel/plugin-transform-new-target": "^7.7.4", - "@babel/plugin-transform-object-super": "^7.7.4", - "@babel/plugin-transform-parameters": "^7.7.7", - "@babel/plugin-transform-property-literals": "^7.7.4", - "@babel/plugin-transform-regenerator": "^7.7.5", - "@babel/plugin-transform-reserved-words": "^7.7.4", - "@babel/plugin-transform-shorthand-properties": "^7.7.4", - "@babel/plugin-transform-spread": "^7.7.4", - "@babel/plugin-transform-sticky-regex": "^7.7.4", - "@babel/plugin-transform-template-literals": "^7.7.4", - "@babel/plugin-transform-typeof-symbol": "^7.7.4", - "@babel/plugin-transform-unicode-regex": "^7.7.4", - "@babel/types": "^7.7.4", - "browserslist": "^4.6.0", - "core-js-compat": "^3.6.0", + "@babel/compat-data": "^7.9.6", + "@babel/helper-compilation-targets": "^7.9.6", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.5", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.9.5", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.6", + "@babel/plugin-transform-modules-commonjs": "^7.9.6", + "@babel/plugin-transform-modules-systemjs": "^7.9.6", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.9.5", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.6", + "browserslist": "^4.11.1", + "core-js-compat": "^3.6.2", "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", + "levenary": "^1.1.1", "semver": "^5.5.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" } }, "@babel/runtime": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.4.tgz", "integrity": "sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==", + "dev": true, "requires": { "regenerator-runtime": "^0.13.2" }, @@ -3187,86 +2135,127 @@ "regenerator-runtime": { "version": "0.13.3", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true } } }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.6", + "@babel/types": "^7.8.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + } } }, "@babel/traverse": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", - "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.5", - "@babel/types": "^7.5.5", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.13" + "lodash": "^4.17.19" }, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", + "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", + "requires": { + "@babel/types": "^7.11.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/highlight": "^7.0.0" + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, "@babel/types": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", - "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", - "dev": true, + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" }, "dependencies": { - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" } } }, @@ -3376,6 +2365,17 @@ "to-regex-range": "^5.0.1" } }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fsevents": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", @@ -3406,6 +2406,12 @@ "is-glob": "^4.0.1" } }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3440,9 +2446,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, "loglevel": { @@ -3549,13 +2555,33 @@ } }, "@develar/schema-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.1.0.tgz", - "integrity": "sha512-qjCqB4ctMig9Gz5bd6lkdFr3bO6arOdQqptdBSpF1ZpCnjofieCciEzkoS9ujY9cMGyllYSCSmBJ3x9OKHXzoA==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } } }, "@dsherret/to-absolute-glob": { @@ -3569,9 +2595,9 @@ } }, "@electron/get": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.9.0.tgz", - "integrity": "sha512-OBIKtF6ttIJotDXe4KJMUyTBO4xMii+mFjlA8R4CORuD4HvCUaCK3lPjhdTRCvuEv6gzWNbAvd9DNBv0v780lw==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", + "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", "dev": true, "requires": { "debug": "^4.1.1", @@ -3600,6 +2626,23 @@ "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", "dev": true }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3614,6 +2657,65 @@ "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, + "@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.3.tgz", + "integrity": "sha512-TAdNkeGB5Fe4Og+ZkAr1Kvn9by2sfL44IAHFtxlh1BA1XJ5cLpO9iSNki5opWESv3l3vSHsZ9BNKuqFKbEbFaA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.1", + "loader-utils": "^1.4.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.4" + }, + "dependencies": { + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -3624,26 +2726,65 @@ "glob-to-regexp": "^0.3.0" } }, + "@netflix/nerror": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", + "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", + "requires": { + "assert-plus": "^1.0.0", + "extsprintf": "^1.4.0", + "lodash": "^4.17.15" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=" + } + } + }, "@ngtools/webpack": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-9.0.7.tgz", - "integrity": "sha512-MvoMaErkjESefoIrbt8F2RpKDr9KavwvH4v3hwSAKooVNFdFKNsjJ7m3gCQehumEfsYFq2mrEK2sTW4/CpFlMQ==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.0.7.tgz", + "integrity": "sha512-yUjTDOgsuEJEtsyqb78jDm3Keo18x6j1AjmZUEeiCxShX2pBQTfErmxtBqxPUAkLa/gD7Wkf5cZM+3xcYyShRg==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", + "@angular-devkit/core": "10.0.7", "enhanced-resolve": "4.1.1", - "rxjs": "6.5.3", + "rxjs": "6.5.5", "webpack-sources": "1.4.3" }, "dependencies": { "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" } } }, @@ -3653,90 +2794,113 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@npmcli/move-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, "@schematics/angular": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-9.0.7.tgz", - "integrity": "sha512-3UCeexYx/YVo3kboyPZ8KgqBTduMA18AAm3s2yrC0qj41fBFVVZAZLa74uouTf4RYVgy9kR7J3uv6VLxrJPOnQ==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.0.7.tgz", + "integrity": "sha512-0SljGZjA68tOsn7OIps79lTy9Y96OZglLnBqO6pSLlmCkGMbjFY2ssKQXJzwR0jJ5+TWBjWjpn2U5mir4yzOuQ==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7" + "@angular-devkit/core": "10.0.7", + "@angular-devkit/schematics": "10.0.7" } }, "@schematics/update": { - "version": "0.900.7", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.900.7.tgz", - "integrity": "sha512-e9tX2DGNYfj/k9mVICpQt2bWIYyD92dlsip7LzPeZGt+R9zCp5w19uBLa8Z00OgEGzFR1krhRvkQE5OxkkAnVw==", + "version": "0.1000.7", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1000.7.tgz", + "integrity": "sha512-KEOtKu95np+jVxxs/JCQ8UNQ0v21BSZKe0sb+D/Nk3XVPMHXDS3ZvcavDh5OXGC2GucbZHkD2UNvEPTEHpLxMg==", "dev": true, "requires": { - "@angular-devkit/core": "9.0.7", - "@angular-devkit/schematics": "9.0.7", + "@angular-devkit/core": "10.0.7", + "@angular-devkit/schematics": "10.0.7", "@yarnpkg/lockfile": "1.1.0", "ini": "1.3.5", - "npm-package-arg": "^7.0.0", - "pacote": "9.5.8", - "rxjs": "6.5.3", - "semver": "6.3.0", + "npm-package-arg": "^8.0.0", + "pacote": "9.5.12", + "rxjs": "6.5.5", + "semver": "7.3.2", "semver-intersect": "1.4.0" }, "dependencies": { "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "lru-cache": "^6.0.0" } }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "yallist": "^3.0.2" + "yallist": "^4.0.0" } }, "npm-package-arg": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", - "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", "dev": true, "requires": { "hosted-git-info": "^3.0.2", - "osenv": "^0.1.5", - "semver": "^5.6.0", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } } }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -3768,12 +2932,6 @@ "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==", "dev": true }, - "@types/estree": { - "version": "0.0.43", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.43.tgz", - "integrity": "sha512-WfOySUnBpyKXbkC9QuZguwOGhGnugDXT2f2P6X8EIis7qlnd5NI1Nr4kRi357NtguxezyizIcaFlQe0wx23XnA==", - "dev": true - }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -3787,9 +2945,9 @@ "dev": true }, "@types/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-UoOfVEzAUpeSPmjm7h1uk5MH6KZma2z2O7a75onTGjnNvAvMVrPzPL/vBbT65iIGHWj6rokwfmYcmxmlSf2uwg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==", "dev": true, "requires": { "@types/node": "*" @@ -3807,9 +2965,9 @@ } }, "@types/jasmine": { - "version": "3.5.9", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.9.tgz", - "integrity": "sha512-KNL2Fq6GRmty2j6+ZmueT/Z/dkctLNH+5DFoGHNDtcgt7yME9NZd8x2p81Yuea1Xux/qAryDd3zVLUoKpDz1TA==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.13.tgz", + "integrity": "sha512-bVSrTEWdCNH2RHN+E0QlEr4pGPMRA6puKOmL/X13ZeZmUS0q12ZR1rkB9PVvJSX0zi/OXrMDNvUai+PC380+rQ==", "dev": true }, "@types/jasminewd2": { @@ -3821,10 +2979,16 @@ "@types/jasmine": "*" } }, + "@types/json-schema": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", + "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==", + "dev": true + }, "@types/marked": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.7.2.tgz", - "integrity": "sha512-A3EDyNaq6OCcpaOia2HQ/tu2QYt8DKuj4ExP21VU3cU3HTo2FLslvbqa2T1vux910RHvuSVqpwKnnykSFcRWOA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-1.1.0.tgz", + "integrity": "sha512-j8XXj6/l9kFvCwMyVqozznqpd/nk80krrW+QiIJN60Uu9gX5Pvn4/qPJ2YngQrR3QREPwmrE1f9/EWKVTFzoEw==" }, "@types/minimatch": { "version": "3.0.3", @@ -3838,9 +3002,9 @@ "integrity": "sha512-13gmo3M2qVvjQrWNseqM3+cR6S2Ss3grbR2NZltgMq94wOwqJYQdgn8qzwDshzgXqMlSUtyPZjysImmktu22ew==" }, "@types/node": { - "version": "13.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.2.tgz", - "integrity": "sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==", + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.0.tgz", + "integrity": "sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==", "dev": true }, "@types/pako": { @@ -3849,15 +3013,15 @@ "integrity": "sha512-GdZbRSJ3Cv5fiwT6I0SQ3ckeN2PWNqxd26W9Z2fCK1tGrrasGy4puvNFtnddqH9UJFMQYXxEuuB7B8UK+LLwSg==" }, "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, "@types/selenium-webdriver": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz", - "integrity": "sha512-lMC2G0ItF2xv4UCiwbJGbnJlIuUixHrioOhNGHSCsYCJ8l4t9hMCUimCytvFv7qy6AfSzRxhRHoGa+UqaqwyeA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", "dev": true }, "@types/source-list-map": { @@ -3872,9 +3036,9 @@ "integrity": "sha512-hkgzYF+qnIl8uTO8rmUSVSfQ8BIfMXC4yJAF4n8BE758YsKBZvFC4NumnAegj7KmylP0liEZNpb9RRGFMbFejA==" }, "@types/webpack-sources": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.6.tgz", - "integrity": "sha512-FtAWR7wR5ocJ9+nP137DV81tveD/ZgB1sadnJ/axUGM3BUVfRPx8oQNMtv3JNfTeHx3VP7cXiyfR/jmtEsVHsQ==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", + "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", "dev": true, "requires": { "@types/node": "*", @@ -3891,9 +3055,9 @@ } }, "@types/yargs": { - "version": "15.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz", - "integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz", + "integrity": "sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==", "dev": true, "requires": { "@types/yargs-parser": "*" @@ -3906,178 +3070,177 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -4109,6 +3272,12 @@ "through": ">=2.2.7 <3" } }, + "abab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", + "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -4125,9 +3294,9 @@ } }, "acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "acorn-node": { @@ -4155,6 +3324,53 @@ "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==", "dev": true }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, "adler-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", @@ -4165,9 +3381,9 @@ } }, "adm-zip": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", - "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "dev": true }, "after": { @@ -4195,9 +3411,9 @@ } }, "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -4351,7 +3567,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" }, @@ -4360,7 +3575,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -4368,8 +3582,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" } } }, @@ -4405,38 +3618,38 @@ "dev": true }, "app-builder-bin": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.5.tgz", - "integrity": "sha512-ZcHzJ9Xl+azPqdKzXZKdRZmkNmbxHHZyl4cbobNf8qMQpoPChpcov8riVrZSbu/0cT/JqJ8LOwJjy1OAwbChaQ==", + "version": "3.5.9", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.9.tgz", + "integrity": "sha512-NSjtqZ3x2kYiDp3Qezsgukx/AUzKPr3Xgf9by4cYt05ILWGAptepeeu0Uv+7MO+41o6ujhLixTou8979JGg2Kg==", "dev": true }, "app-builder-lib": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.4.1.tgz", - "integrity": "sha512-epwUzIM+2pcdy/If9koTP74CKx4v7xGPj75a2Z5cM4rrGN9yVZ3eDUBbfF0e0qE4Qmcv5pd0BAZJ26bGm8NWsQ==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.8.0.tgz", + "integrity": "sha512-RGaIRjCUrqkmh6QOGsyekQPEOaVynHfmeh8JZuyUymFYUOFdzBbPamkA2nhBVBTkkgfjRHsxK7LhedFKPzvWEQ==", "dev": true, "requires": { "7zip-bin": "~5.0.3", - "@develar/schema-utils": "~2.1.0", + "@develar/schema-utils": "~2.6.5", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "22.4.1", - "builder-util-runtime": "8.6.2", + "builder-util": "22.8.0", + "builder-util-runtime": "8.7.2", "chromium-pickle-js": "^0.2.0", "debug": "^4.1.1", - "ejs": "^3.0.1", - "electron-publish": "22.4.1", - "fs-extra": "^8.1.0", - "hosted-git-info": "^3.0.4", + "ejs": "^3.1.3", + "electron-publish": "22.8.0", + "fs-extra": "^9.0.1", + "hosted-git-info": "^3.0.5", "is-ci": "^2.0.0", - "isbinaryfile": "^4.0.4", - "js-yaml": "^3.13.1", + "isbinaryfile": "^4.0.6", + "js-yaml": "^3.14.0", "lazy-val": "^1.0.4", "minimatch": "^3.0.4", "normalize-package-data": "^2.5.0", - "read-config-file": "5.0.2", + "read-config-file": "6.0.0", "sanitize-filename": "^1.6.3", - "semver": "^7.1.3", + "semver": "^7.3.2", "temp-file": "^3.3.7" }, "dependencies": { @@ -4449,22 +3662,29 @@ "ms": "^2.1.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "hosted-git-info": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.4.tgz", - "integrity": "sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "lru-cache": "^5.1.1" + "lru-cache": "^6.0.0" } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { - "yallist": "^3.0.2" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "ms": { @@ -4474,34 +3694,19 @@ "dev": true }, "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", - "dev": true - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true } } }, "app-root-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", - "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", "dev": true }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -4533,6 +3738,12 @@ "commander": "^2.11.0" } }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -4575,11 +3786,6 @@ "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, - "array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=" - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -4629,48 +3835,38 @@ } }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "dev": true, "requires": { - "object-assign": "^4.1.1", "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } } }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -4776,6 +3972,11 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -4783,18 +3984,18 @@ "dev": true }, "autoprefixer": { - "version": "9.7.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.1.tgz", - "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", "dev": true, "requires": { - "browserslist": "^4.7.2", - "caniuse-lite": "^1.0.30001006", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.21", - "postcss-value-parser": "^4.0.2" + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" } }, "aws-sign2": { @@ -4818,16 +4019,40 @@ "ast-types-flow": "0.0.7" } }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" }, "dependencies": { "find-cache-dir": { @@ -4841,6 +4066,26 @@ "pkg-dir": "^3.0.0" } }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", @@ -4866,9 +4111,9 @@ } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -4970,9 +4215,9 @@ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true }, "basic-auth": { @@ -5015,9 +4260,9 @@ } }, "big-integer": { - "version": "1.6.43", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", - "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==" + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, "big.js": { "version": "5.2.2", @@ -5044,14 +4289,6 @@ "dev": true, "requires": { "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "bluebird": { @@ -5070,9 +4307,9 @@ } }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", "dev": true }, "body-parser": { @@ -5269,11 +4506,11 @@ } }, "bplist-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", - "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "requires": { - "big-integer": "^1.6.7" + "big-integer": "^1.6.44" } }, "brace-expansion": { @@ -5414,21 +4651,56 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "browserify-zlib": { @@ -5441,32 +4713,21 @@ } }, "browserslist": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", - "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz", + "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001035", - "electron-to-chromium": "^1.3.378", - "node-releases": "^1.1.52", - "pkg-up": "^3.1.0" - }, - "dependencies": { - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - } + "caniuse-lite": "^1.0.30001111", + "electron-to-chromium": "^1.3.523", + "escalade": "^3.0.2", + "node-releases": "^1.1.60" } }, "browserstack": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", - "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz", + "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==", "dev": true, "requires": { "https-proxy-agent": "^2.2.1" @@ -5483,20 +4744,10 @@ "isarray": "^1.0.0" } }, - "buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true }, "buffer-equal": { @@ -5505,12 +4756,6 @@ "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", "dev": true }, - "buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", - "dev": true - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -5529,23 +4774,23 @@ "dev": true }, "builder-util": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.4.1.tgz", - "integrity": "sha512-+ysLc7cC4w6P7rBxmZ5X2aU3QvcwFoWCl1us+mcUKdsGmJAtFUMPJqueeptdxjyPrPShIUOKHzA8uk5A3d1fHg==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.8.0.tgz", + "integrity": "sha512-H80P1JzVy3TGpi63x81epQDK24XalL034+jAZlrPb5IhLtYmnNNdxCCAVJvg3VjSISd73Y71O+uhqCxWpqbPHw==", "dev": true, "requires": { "7zip-bin": "~5.0.3", "@types/debug": "^4.1.5", - "@types/fs-extra": "^8.1.0", - "app-builder-bin": "3.5.5", + "@types/fs-extra": "^9.0.1", + "app-builder-bin": "3.5.9", "bluebird-lst": "^1.0.9", - "builder-util-runtime": "8.6.2", - "chalk": "^3.0.0", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", "debug": "^4.1.1", - "fs-extra": "^8.1.0", + "fs-extra": "^9.0.1", "is-ci": "^2.0.0", - "js-yaml": "^3.13.1", - "source-map-support": "^0.5.16", + "js-yaml": "^3.14.0", + "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", "temp-file": "^3.3.7" }, @@ -5561,9 +4806,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5588,34 +4833,34 @@ "ms": "^2.1.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -5628,9 +4873,9 @@ } }, "builder-util-runtime": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.6.2.tgz", - "integrity": "sha512-9QnIBISfhgQ2BxtRLidVqf/v5HD73vSKZDllpUmGd2L6VORGQk7cZAPmPtw4HQM3gPBelyVJ5yIjMNZ8xjmd1A==", + "version": "8.7.2", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.2.tgz", + "integrity": "sha512-xBqv+8bg6cfnzAQK1k3OGpfaHg+QkPgIgpEkXNhouZ0WiUkyZCftuRc2LYzQrLucFywpa14Xbc6+hTbpq83yRA==", "dev": true, "requires": { "debug": "^4.1.1", @@ -5679,28 +4924,27 @@ "dev": true }, "cacache": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", - "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.3.tgz", + "integrity": "sha512-bc3jKYjqv7k4pWh7I/ixIjfcjPul4V4jme/WbjvwGS5LzoPL/GzXr4C5EgPNLO/QEZl9Oi61iGitYEdwcrwLCQ==", "dev": true, "requires": { - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", + "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.2.2", "infer-owner": "^1.0.4", "lru-cache": "^5.1.1", - "minipass": "^3.0.0", + "minipass": "^3.1.1", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.2", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "p-map": "^3.0.0", + "mkdirp": "^1.0.3", + "move-file": "^2.0.0", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.7.1", - "ssri": "^7.0.0", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", "unique-filename": "^1.1.1" }, "dependencies": { @@ -5718,12 +4962,6 @@ "path-is-absolute": "^1.0.0" } }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5733,13 +4971,19 @@ "yallist": "^3.0.2" } }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "aggregate-error": "^3.0.0" + "glob": "^7.1.3" } }, "yallist": { @@ -5875,9 +5119,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001035", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz", - "integrity": "sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ==", + "version": "1.0.30001117", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001117.tgz", + "integrity": "sha512-4tY0Fatzdx59kYjQs+bNxUwZB03ZEBgVmJ1UkFPz/Q8OLiUUbjct2EdpnXj0fvFTPej2EkbPIG0w8BWsjAyk1Q==", "dev": true }, "canonical-path": { @@ -5886,12 +5130,6 @@ "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", "dev": true }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -5899,12 +5137,11 @@ "dev": true }, "cfb": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.4.tgz", - "integrity": "sha512-rwFkl3aFO3f+ljR27YINwC0x8vPjyiEVbYbrTCKzspEf7Q++3THdfHVgJYNUbxNcupJECrLX+L40Mjm9hm/Bgw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz", + "integrity": "sha512-sXMvHsKCICVR3Naq+J556K+ExBo9n50iKl6LGarlnvuA2035uMlGA/qVrc0wQtow5P1vJEw9UyrKLCbtIKz+TQ==", "requires": { "adler-32": "~1.2.0", - "commander": "^2.16.0", "crc-32": "~1.2.0", "printj": "~1.1.2" } @@ -5913,7 +5150,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5924,7 +5160,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -5964,9 +5199,9 @@ } }, "chartjs-plugin-zoom": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-0.7.5.tgz", - "integrity": "sha512-OGVQXlw5meOD7ac+CBNO7yKg4Tk06eBb5LUIgpK/qgv7SjVB/89pWMQY3pxWnzCMI8FsoV3iTKQ2ZCOvh4+q6w==", + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-0.7.7.tgz", + "integrity": "sha512-8fOHPPiZTT2+K0w278TQWYs/DtPg06s1OpTqdXxPpdfH7QQbl6Io/WuE1FjPehDWVCxpe3tSTts+dPbxgq2Z5g==", "requires": { "hammerjs": "^2.0.8" } @@ -5997,9 +5232,9 @@ } }, "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -6009,7 +5244,7 @@ "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.4.0" }, "dependencies": { "anymatch": { @@ -6047,16 +5282,16 @@ } }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -6093,12 +5328,20 @@ "dev": true }, "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + } } }, "to-regex-range": { @@ -6113,9 +5356,9 @@ } }, "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, "chrome-trace-event": { @@ -6125,6 +5368,14 @@ "dev": true, "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "chromium-pickle-js": { @@ -6215,9 +5466,9 @@ } }, "cli-spinners": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", - "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz", + "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==", "dev": true }, "cli-width": { @@ -6227,9 +5478,9 @@ "dev": true }, "clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "optional": true, "requires": { "good-listener": "^1.2.2", @@ -6238,45 +5489,29 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } @@ -6316,14 +5551,6 @@ "@types/q": "^1.5.1", "chalk": "^2.4.1", "q": "^1.1.2" - }, - "dependencies": { - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", - "dev": true - } } }, "code-block-writer": { @@ -6332,29 +5559,40 @@ "integrity": "sha512-3Jfe6ZmmGzvdQWFo3MUzobn3WdX++jc3Tj0rsviJWYPnP7NGMFEE4qheNeOXeJgB1TTgxYT8XuNvhS/u596yGg==", "dev": true }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "codelyzer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.2.1.tgz", - "integrity": "sha512-awBZXFcJUyC5HMYXiHzjr3D24tww2l1D1OqtfA9vUhEtYr32a65A+Gblm/OvsO+HuKLYzn8EDMw1inSM3VbxWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.0.tgz", + "integrity": "sha512-edJIQCIcxD9DhVSyBEdJ38AbLikm515Wl91t5RDGNT88uA6uQdTm4phTWfn9JhzAI8kXNUcfYyAE90lJElpGtA==", "dev": true, "requires": { - "app-root-path": "^2.2.1", + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", "aria-query": "^3.0.0", "axobject-query": "2.0.2", "css-selector-tokenizer": "^0.7.1", "cssauron": "^1.4.0", "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", "semver-dsl": "^1.0.1", "source-map": "^0.5.7", - "sprintf-js": "^1.1.2" + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" }, "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true + }, + "@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -6366,6 +5604,18 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==", + "dev": true } } }, @@ -6449,9 +5699,9 @@ "dev": true }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "combined-stream": { @@ -6474,31 +5724,6 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "compare-func": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz", - "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=", - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^3.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "requires": { - "is-obj": "^1.0.0" - } - } - } - }, - "compare-versions": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz", - "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==", - "dev": true - }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", @@ -6517,6 +5742,15 @@ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, "compressible": { "version": "2.0.17", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", @@ -6577,6 +5811,43 @@ "make-dir": "^1.0.0", "pkg-up": "^2.0.0", "write-file-atomic": "^2.3.0" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } } }, "config-chain": { @@ -6591,17 +5862,17 @@ } }, "configstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, "requires": { - "dot-prop": "^4.1.0", + "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" } }, "connect": { @@ -6714,57 +5985,85 @@ "dev": true }, "copy-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz", + "integrity": "sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA==", "dev": true, "requires": { - "cacache": "^12.0.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", + "cacache": "^15.0.4", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", "normalize-path": "^3.0.0", - "p-limit": "^2.2.1", - "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", - "webpack-log": "^2.0.0" + "p-limit": "^3.0.1", + "schema-utils": "^2.7.0", + "serialize-javascript": "^4.0.0", + "webpack-sources": "^1.4.3" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" } }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" } }, "glob": { @@ -6781,6 +6080,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -6790,554 +6098,805 @@ "is-extglob": "^2.1.1" } }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "yallist": "^3.0.2" + "yallist": "^4.0.0" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1" + "glob": "^7.1.3" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" } }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "cordova": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cordova/-/cordova-9.0.0.tgz", - "integrity": "sha512-zWEPo9uGj9KNcEhU2Lpo3r4HYK21tL+at496N2LLnuCWuWVndv6QWed8+EYl/08rrcNshrEtfzXj9Ux6vQm2PQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cordova/-/cordova-10.0.0.tgz", + "integrity": "sha512-00wMcj3X9ILhKtvRG2iEwO2qly4B+vgXFhH4WhVepWg2UVbD1opl1q9jSZ+j2AaI/vsBWW8e6M2M5FAHasnuWw==", "dev": true, "requires": { - "configstore": "^4.0.0", - "cordova-common": "^3.1.0", - "cordova-lib": "^9.0.0", + "configstore": "^5.0.1", + "cordova-common": "^4.0.2", + "cordova-create": "^3.0.0", + "cordova-lib": "^10.0.0", "editor": "^1.0.0", - "insight": "^0.10.1", - "loud-rejection": "^2.0.0", - "nopt": "^4.0.1", - "update-notifier": "^2.5.0" + "execa": "^4.0.3", + "fs-extra": "^9.0.1", + "insight": "^0.10.3", + "loud-rejection": "^2.2.0", + "nopt": "^4.0.3", + "semver": "^7.3.2", + "systeminformation": "^4.26.10", + "update-notifier": "^4.1.0" }, "dependencies": { - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "string-width": "^2.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", "dev": true, "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", "dev": true, "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" } }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "ci-info": "^1.5.0" + "path-key": "^3.0.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "package-json": "^4.0.0" + "shebang-regex": "^3.0.0" } }, - "loud-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-2.1.0.tgz", - "integrity": "sha512-g/6MQxUXYHeVqZ4PGpPL1fS1fOvlXoi7bay0pizmjAd/3JhyXwxzwrnr74yzdmhuerlslbRJ3x7IOXzFz0cE5w==", + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.2" + "isexe": "^2.0.0" } - }, - "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "dev": true, + } + } + }, + "cordova-android": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-9.0.0.tgz", + "integrity": "sha512-2ZEgApK4LPMYW0zh/mLAH3CabzCaKE0yxQTzA2wTf0Eo2HHTJnRtDCf9spGf3nPOkubyXS6+pvzz5QzNHpVTqQ==", + "requires": { + "android-versions": "^1.5.0", + "cordova-common": "^4.0.1", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "nopt": "^4.0.3", + "properties-parser": "^0.3.1", + "which": "^2.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "requires": { - "rc": "^1.0.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "ansi-regex": "^3.0.0" + "path-key": "^3.0.0" } }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "dev": true, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - } + "shebang-regex": "^3.0.0" } }, - "url-parse-lax": { + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "universalify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { - "prepend-http": "^1.0.1" - } - } - } - }, - "cordova-android": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-8.1.0.tgz", - "integrity": "sha512-eAY6g9q3raJ4P03wNdSWC5MOW1EfxoomWNXsPhi7T6Q9yAqmxqn0sLEUjLL1Ib0LCH3nKQWBXdxapQ5LgbHu+g==", - "requires": { - "android-versions": "^1.4.0", - "compare-func": "^1.3.2", - "cordova-common": "^3.2.0", - "nopt": "^4.0.1", - "properties-parser": "^0.3.1", - "q": "^1.5.1", - "shelljs": "^0.5.3" - }, - "dependencies": { - "cordova-common": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.2.1.tgz", - "integrity": "sha512-xg0EnjnA6EipxXG8cupdlYQYeDA6+ghbN+Pjq88xN1LInwP6Bo7IyGBdSV5QnfjOvzShF9BBwSxBAv0FOO0C2Q==", - "requires": { - "ansi": "^0.3.1", - "bplist-parser": "^0.1.0", - "cross-spawn": "^6.0.5", - "elementtree": "0.1.7", - "endent": "^1.1.1", - "fs-extra": "^8.0.0", - "glob": "^7.1.2", - "minimatch": "^3.0.0", - "plist": "^3.0.1", - "q": "^1.4.1", - "strip-bom": "^3.0.0", - "underscore": "^1.8.3", - "which": "^1.3.0" + "isexe": "^2.0.0" } - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" } } }, "cordova-app-hello-world": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cordova-app-hello-world/-/cordova-app-hello-world-4.0.0.tgz", - "integrity": "sha512-hTNYHUJT5YyMa1cQQE1naGyU6Eh5D5Jl33sMnCh3+q15ZwWTL/TOy3k8+mUvjTp8bwhO5eECGKULYoVO+fp9ZA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cordova-app-hello-world/-/cordova-app-hello-world-5.0.0.tgz", + "integrity": "sha512-5My01wsYoeYwS0f/t5Ck52xPm0+2zYJ0SlvxG9vUsndDGtgiP6t/G8upPgWcyDRRz7Rs/50yZuOntmHqmJxccQ==", "dev": true }, "cordova-common": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.1.0.tgz", - "integrity": "sha512-J2MM1ioyLlBYdwdXH40OZL4hN7XEBOfurddKYifF4aTkb2PkbeM+KVORt53eyU+8ScA0QmRLuTG0EM55eLms0A==", - "dev": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz", + "integrity": "sha512-od7aNShyuBajzPY83mUEO8tERwwWdFklXETHiXP5Ft87CWeo/tSuwNPFztyTy8XYc74yXdogXKPTJeUHuVzB8Q==", "requires": { + "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", - "bplist-parser": "^0.1.0", - "cross-spawn": "^6.0.5", - "elementtree": "0.1.7", - "endent": "^1.1.1", - "fs-extra": "^7.0.0", - "glob": "^7.1.2", - "minimatch": "^3.0.0", + "bplist-parser": "^0.2.0", + "cross-spawn": "^7.0.1", + "elementtree": "^0.1.7", + "endent": "^1.4.1", + "fast-glob": "^3.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", "plist": "^3.0.1", - "q": "^1.4.1", - "strip-bom": "^3.0.0", - "underscore": "^1.8.3", - "which": "^1.3.0" + "q": "^1.5.1", + "read-chunk": "^3.2.0", + "strip-bom": "^4.0.0", + "underscore": "^1.9.2" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "fs-extra": { + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "to-regex-range": "^5.0.1" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" } }, - "strip-bom": { + "shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } } } }, "cordova-create": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cordova-create/-/cordova-create-2.0.0.tgz", - "integrity": "sha512-72CaGg/7x+tiZlzeXKQXLTc8Jh4tbwLdu4Ib97kJ6+R3bcew/Yv/l2cVA2E0CaCuOCtouTqwi+YLcA2I4dPFTQ==", - "dev": true, - "requires": { - "cordova-app-hello-world": "^4.0.0", - "cordova-common": "^3.1.0", - "cordova-fetch": "^2.0.0", - "fs-extra": "^7.0.1", - "import-fresh": "^3.0.0", - "is-url": "^1.2.4", - "isobject": "^3.0.1", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cordova-create/-/cordova-create-3.0.0.tgz", + "integrity": "sha512-WxZRTnt5RHxSAB9urnHFUtVBcIe1YjR4sfwHLsxakNoKkFhcie3HrV5QmNBgRQ5DkxmanRN3VSx4OrPVsNmAaQ==", + "dev": true, + "requires": { + "cordova-app-hello-world": "^5.0.0", + "cordova-common": "^4.0.1", + "cordova-fetch": "^3.0.0", + "fs-extra": "^9.0.0", + "globby": "^11.0.0", + "import-fresh": "^3.2.1", + "isobject": "^4.0.0", + "npm-package-arg": "^8.0.1", "path-is-inside": "^1.0.2", - "tmp": "0.0.33", + "tmp": "^0.2.1", "valid-identifier": "0.0.2" }, "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "lru-cache": "^6.0.0" } }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } } } }, "cordova-fetch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cordova-fetch/-/cordova-fetch-2.0.1.tgz", - "integrity": "sha512-q21PeobERzE3Drli5htcl5X9Mtfvodih5VkqIwdRUsjDBCPv+I6ZonRjYGbNnXhYrYx7dm0m0j/7/Smf6Av3hg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cordova-fetch/-/cordova-fetch-3.0.0.tgz", + "integrity": "sha512-N6mB/1GD8BNclxnfO85E4/s46nEJjIxYeJYHRGi6MjofhigJ3NlGwTCslbTcq8IOYEh0RdoA0mS4W2jA5UcWeQ==", "dev": true, "requires": { - "cordova-common": "^3.1.0", - "fs-extra": "^7.0.1", - "npm-package-arg": "^6.1.0", - "pify": "^4.0.1", - "resolve": "^1.10.0", - "semver": "^5.6.0", - "which": "^1.3.1" + "cordova-common": "^4.0.0", + "fs-extra": "^9.0.0", + "npm-package-arg": "^8.0.1", + "pify": "^5.0.0", + "resolve": "^1.15.1", + "semver": "^7.1.3", + "which": "^2.0.2" }, "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "lru-cache": "^6.0.0" + } + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" } }, "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "cordova-lib": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cordova-lib/-/cordova-lib-9.0.1.tgz", - "integrity": "sha512-P9nQhq91gLOyKZkamvKNzzK89gLDpq8rKue/Vu7NUSgNzhPkiWW0w+6VRTbj/9QGVM9w2uDVhB9c9f6rrTXzCw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/cordova-lib/-/cordova-lib-10.0.0.tgz", + "integrity": "sha512-azU/WH0x/3fQg33tU5bKCtj+Weh/bHelz9FWCVdXqVOHXmjzbi3p6p61z5Si967Tfh3TkmHRrodNxS0ovZ7iFQ==", "dev": true, "requires": { - "cordova-common": "^3.1.0", - "cordova-create": "^2.0.0", - "cordova-fetch": "^2.0.0", - "cordova-serve": "^3.0.0", - "dep-graph": "1.1.0", - "detect-indent": "^5.0.0", + "cordova-common": "^4.0.2", + "cordova-fetch": "^3.0.0", + "cordova-serve": "^4.0.0", + "dep-graph": "^1.1.0", + "detect-indent": "^6.0.0", + "detect-newline": "^3.1.0", "elementtree": "^0.1.7", - "fs-extra": "^7.0.1", - "globby": "^9.1.0", - "indent-string": "^3.2.0", + "execa": "^4.0.3", + "fs-extra": "^9.0.1", + "globby": "^11.0.1", "init-package-json": "^1.10.3", - "md5-file": "^4.0.0", - "read-chunk": "^3.1.0", - "semver": "^5.6.0", - "shebang-command": "^1.2.0", - "underscore": "^1.9.1" + "md5-file": "^5.0.0", + "pify": "^5.0.0", + "semver": "^7.3.2", + "stringify-package": "^1.0.1", + "write-file-atomic": "^3.0.3" }, "dependencies": { - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "dev": true + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "dev": true, "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "pify": { + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "pify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz", + "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true }, - "slash": { + "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, "cordova-plugin-advanced-http": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-2.4.1.tgz", - "integrity": "sha512-6G8MTy/d02jE6n3Y9CVyCtD5hZGiBb+/dR2AIzhKN1RGGz38g1D2C8yE4MqHRvnmry6k/KHQWT1MsHNXrjouXQ==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-3.0.1.tgz", + "integrity": "sha512-7P3ZoSvxvYZXNYsygkxrUIw+pnzsCVvQgRsm26XhymNqqmD9yZIcF878p6wfFVQfLzf5iRHQRwgAMcrcm+cnow==" }, "cordova-plugin-app-version": { "version": "0.1.9", @@ -7360,9 +6919,9 @@ "integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA==" }, "cordova-plugin-file-opener2": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cordova-plugin-file-opener2/-/cordova-plugin-file-opener2-3.0.0.tgz", - "integrity": "sha512-yQcJ5coOlfkDcTfIhFJEL2A7SWtLhy50y51Cb+EEkI7Y0lP74Ec2tsMtIOhe9i8wPSoSfnDcN77Hj6CSeIjogA==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cordova-plugin-file-opener2/-/cordova-plugin-file-opener2-3.0.4.tgz", + "integrity": "sha512-bd1aCx62X2RwpC+KUiuB7quoxL/8RnPMEJU7x38Tvs+cUGLWBvsmR9+/LqGBsSns2CIqgnJ34TW0Vazoqu7Ieg==" }, "cordova-plugin-local-notification": { "version": "0.9.0-beta.2", @@ -7375,30 +6934,85 @@ "integrity": "sha512-EYC5eQFVkoYXq39l7tYKE6lEjHJ04mvTmKXxGL7quHLdFPfJMNzru/UYpn92AOfpl3PQaZmou78C7EgmFOwFQQ==" }, "cordova-serve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cordova-serve/-/cordova-serve-3.0.0.tgz", - "integrity": "sha512-h479g/5a0PXn//yiFuMrD5MDEbB+mtihNkWcE6uD/aCh/6z0FRZ9sWH3NfZbHDB+Bp1yGLYsjbH8LZBL8KOQ0w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cordova-serve/-/cordova-serve-4.0.0.tgz", + "integrity": "sha512-gzTLeBQzNP8aM/nG0/7sSfICfNazUgwvEU2kiDaybbYXmxwioo2v96h4tzE0XOyA64beyYwAyRYEEqWA4AMZjw==", "dev": true, "requires": { - "chalk": "^2.4.1", - "compression": "^1.6.0", - "express": "^4.13.3", - "opn": "^5.3.0", - "which": "^1.3.0" + "chalk": "^3.0.0", + "compression": "^1.7.4", + "express": "^4.17.1", + "open": "^7.0.3", + "which": "^2.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "core-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", - "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==" + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" }, "core-js-compat": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", - "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", "dev": true, "requires": { - "browserslist": "^4.8.3", + "browserslist": "^4.8.5", "semver": "7.0.0" }, "dependencies": { @@ -7450,73 +7064,6 @@ } } }, - "coverage-istanbul-loader": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/coverage-istanbul-loader/-/coverage-istanbul-loader-2.0.3.tgz", - "integrity": "sha512-LiGRvyIuzVYs3M1ZYK1tF0HekjH0DJ8zFdUwAZq378EJzqOgToyb1690dp3TAUlP6Y+82uu42LRjuROVeJ54CA==", - "dev": true, - "requires": { - "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.0", - "loader-utils": "^1.2.3", - "merge-source-map": "^1.1.0", - "schema-utils": "^2.6.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", @@ -7527,22 +7074,21 @@ } }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "create-hash": { @@ -7576,6 +7122,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -7610,9 +7157,9 @@ "dev": true }, "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, "css": { @@ -7656,6 +7203,61 @@ "timsort": "^0.3.0" } }, + "css-loader": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", + "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.6", + "semver": "^6.3.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "css-parse": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", @@ -7684,14 +7286,13 @@ "dev": true }, "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", "dev": true, "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" } }, "css-tree": { @@ -7728,9 +7329,9 @@ } }, "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, "cssnano": { @@ -7811,12 +7412,36 @@ "dev": true }, "csso": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", - "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", "dev": true, "requires": { - "css-tree": "1.0.0-alpha.37" + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "currently-unhandled": { @@ -7851,9 +7476,9 @@ } }, "d3": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-5.15.0.tgz", - "integrity": "sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", "requires": { "d3-array": "1", "d3-axis": "1", @@ -7899,9 +7524,9 @@ "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" }, "d3-brush": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.5.tgz", - "integrity": "sha512-rEaJ5gHlgLxXugWjIkolTA0OyMvw8UWU1imYXy1v642XyyswmI1ybKOv05Ft+ewq+TFmdliD3VuK0pRp1VT/5A==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", + "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", "requires": { "d3-dispatch": "1", "d3-drag": "1", @@ -7925,9 +7550,9 @@ "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" }, "d3-color": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.0.tgz", - "integrity": "sha512-TzNPeJy2+iEepfiL92LAAB7fvnp/dV2YwANPVHdDWmYMm23qIJBYww3qT8I8C1wXrmrg4UWs7BKc2tKIgyjzHg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" }, "d3-contour": { "version": "1.3.2", @@ -7962,14 +7587,14 @@ } }, "d3-ease": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.6.tgz", - "integrity": "sha512-SZ/lVU7LRXafqp7XtIcBdxnWl8yyLpgOmzAk0mWBI9gXNzLDx5ybZgnRbH9dN/yY5tzVBqCQ9avltSnqVwessQ==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" }, "d3-fetch": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.1.2.tgz", - "integrity": "sha512-S2loaQCV/ZeyTyIF2oP8D1K9Z4QizUzW7cWeAOAS4U88qOt3Ucf6GsmgthuYSdyB2HyEm4CeGvkQxWsmInsIVA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", "requires": { "d3-dsv": "1" } @@ -7986,14 +7611,14 @@ } }, "d3-format": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.3.tgz", - "integrity": "sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ==" + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" }, "d3-geo": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.11.9.tgz", - "integrity": "sha512-9edcH6J3s/Aa3KJITWqFJbyB/8q3mMlA9Fi7z6yy+FAYMnRaxmC7jBhUnsINxVWD14GmqX3DK8uk7nV6/Ekt4A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", "requires": { "d3-array": "1" } @@ -8054,9 +7679,9 @@ } }, "d3-selection": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.1.tgz", - "integrity": "sha512-BTIbRjv/m5rcVTfBs4AMBLKs4x8XaaLkwm28KWu9S2vKNqXkXt2AH2Qf0sdPZHjFxcWg/YL53zcqAz+3g4/7PA==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" }, "d3-shape": { "version": "1.3.7", @@ -8072,9 +7697,9 @@ "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" }, "d3-time-format": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz", - "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", "requires": { "d3-time": "1" } @@ -8114,22 +7739,24 @@ "d3-transition": "1" } }, - "dagre-d3-renderer": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/dagre-d3-renderer/-/dagre-d3-renderer-0.5.8.tgz", - "integrity": "sha512-XH2a86isUHRxzIYbjQVEuZtJnWEufb64H5DuXIUmn8esuB40jgLEbUUclulWOW62/ZoXlj2ZDyL8SJ+YRxs+jQ==", + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", "requires": { - "dagre-layout": "^0.8.8", - "lodash": "^4.17.5" + "graphlib": "^2.1.8", + "lodash": "^4.17.15" } }, - "dagre-layout": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dagre-layout/-/dagre-layout-0.8.8.tgz", - "integrity": "sha512-ZNV15T9za7X+fV8Z07IZquUKugCxm5owoiPPxfEx6OJRD331nkiIaF3vSt0JEY5FkrY0KfRQxcpQ3SpXB7pLPQ==", + "dagre-d3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", + "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", "requires": { - "graphlibrary": "^2.2.0", - "lodash": "^4.17.5" + "d3": "^5.14", + "dagre": "^0.8.5", + "graphlib": "^2.1.8", + "lodash": "^4.17.15" } }, "damerau-levenshtein": { @@ -8147,10 +7774,21 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", "dev": true }, "debug": { @@ -8206,7 +7844,8 @@ "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true }, "deep-extend": { "version": "0.6.0", @@ -8230,15 +7869,6 @@ "ip-regex": "^2.1.0" } }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } - }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", @@ -8266,6 +7896,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, "requires": { "object-keys": "^1.0.12" } @@ -8311,11 +7942,6 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" - }, "del": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", @@ -8376,6 +8002,12 @@ "path-is-inside": "^1.0.2" } }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -8441,6 +8073,18 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, "detect-node": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", @@ -8484,39 +8128,53 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "dmg-builder": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.4.1.tgz", - "integrity": "sha512-hEemh7n0zoVt7zPPwvn7iOttP03oENjJ4ApttPmt8oDnX8T4q42MjGWyDlLkPMplMJfoTxkkNqmm296f0OYM8Q==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.8.0.tgz", + "integrity": "sha512-orePWjcrl97SYLA8F/6UUtbXJSoZCYu5KOP1lVqD4LOomr8bjGDyEVYZmZYcg5WqKmXucdmO6OpqgzH/aRMMuA==", "dev": true, "requires": { - "app-builder-lib": "~22.4.1", - "bluebird-lst": "^1.0.9", - "builder-util": "~22.4.1", - "fs-extra": "^8.1.0", - "iconv-lite": "^0.5.1", - "js-yaml": "^3.13.1", + "app-builder-lib": "22.8.0", + "builder-util": "22.8.0", + "fs-extra": "^9.0.1", + "iconv-lite": "^0.6.2", + "js-yaml": "^3.14.0", "sanitize-filename": "^1.6.3" }, "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "iconv-lite": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.1.tgz", - "integrity": "sha512-ONHr16SQvKZNSqjQT9gy5z24Jw+uqfO02/ngBSBoqChZ+W8qXX7GPRa1RoUnzGADw8K63R1BXUMzarCVQBpY8Q==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" } } } @@ -8606,12 +8264,12 @@ "dev": true }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "dev": true, "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotenv": { @@ -8682,15 +8340,18 @@ "dev": true }, "ejs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", - "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==", - "dev": true + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } }, "electron": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-8.1.1.tgz", - "integrity": "sha512-t+5zzFo7VOgckJc9YpImHJkpqeWxwpmEjywWbAa4IT5MULS7h1XU52H9gMswK/y8xc5lBNwxLhJSty/15+gi1A==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-10.0.0.tgz", + "integrity": "sha512-0XX/LqYAHHCSbfLjUk9VRDPOeYjDPEzA9i7F50AqpEpFIWR2bp++0S0beRANUpPdkvtBDp+0R6vHV3iXPvuKyA==", "dev": true, "requires": { "@electron/get": "^1.0.1", @@ -8699,41 +8360,35 @@ }, "dependencies": { "@types/node": { - "version": "12.12.29", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.29.tgz", - "integrity": "sha512-yo8Qz0ygADGFptISDj3pOC9wXfln/5pQaN/ysDIzOaAWXt73cNHmtEC8zSO2Y+kse/txmwIAJzkYZ5fooaS5DQ==", + "version": "12.12.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.54.tgz", + "integrity": "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==", "dev": true } } }, "electron-builder": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.4.1.tgz", - "integrity": "sha512-13CjZcGeJS+c3EKRwFT/Oty5Niif5g1FwDioBLEbjkPCPQgxdtDsr+rJtCu9qxkiKDYpAoPS+t/clNk0efONvQ==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.8.0.tgz", + "integrity": "sha512-dUv4F3srJouqxhWivtKqSoQP4Df6vYgjooGdzms+iYMTFi9f0b4LlEbr7kgsPvte8zAglee7VOGOODkCRJDkUQ==", "dev": true, "requires": { - "@types/yargs": "^15.0.4", - "app-builder-lib": "22.4.1", + "@types/yargs": "^15.0.5", + "app-builder-lib": "22.8.0", "bluebird-lst": "^1.0.9", - "builder-util": "22.4.1", - "builder-util-runtime": "8.6.2", - "chalk": "^3.0.0", - "dmg-builder": "22.4.1", - "fs-extra": "^8.1.0", + "builder-util": "22.8.0", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", + "dmg-builder": "22.8.0", + "fs-extra": "^9.0.1", "is-ci": "^2.0.0", "lazy-val": "^1.0.4", - "read-config-file": "5.0.2", + "read-config-file": "6.0.0", "sanitize-filename": "^1.6.3", "update-notifier": "^4.1.0", - "yargs": "^15.1.0" + "yargs": "^15.3.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -8745,26 +8400,15 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -8774,84 +8418,12 @@ "color-name": "~1.1.4" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -8860,63 +8432,23 @@ "requires": { "has-flag": "^4.0.0" } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "yargs": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", - "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.0" - } - }, - "yargs-parser": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.0.tgz", - "integrity": "sha512-o/Jr6JBOv6Yx3pL+5naWSoIA2jJ+ZkMYQG/ie9qFbukBe4uzmBatlXFOiu/tNKRWEtyf+n5w7jc/O16ufqOTdQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, "electron-publish": { - "version": "22.4.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.4.1.tgz", - "integrity": "sha512-nwKNum3KXm+01rtWX2pc1jhazdzDy2zYnQx+zmXphZchjd6UOMX3ZN0xyZUCKugw5ZliflT6LkgbrcBXBtYD3A==", + "version": "22.8.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.8.0.tgz", + "integrity": "sha512-uM0Zdi9hUqqGOrPj478v7toTvV1Kgto1w11rIiI168batiXAJvNLD8VZRfehOrZT0ibUyZlw8FtxoGCrjyHUOw==", "dev": true, "requires": { - "@types/fs-extra": "^8.1.0", + "@types/fs-extra": "^9.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "~22.4.1", - "builder-util-runtime": "8.6.2", - "chalk": "^3.0.0", - "fs-extra": "^8.1.0", + "builder-util": "22.8.0", + "builder-util-runtime": "8.7.2", + "chalk": "^4.1.0", + "fs-extra": "^9.0.1", "lazy-val": "^1.0.4", - "mime": "^2.4.4" + "mime": "^2.4.6" }, "dependencies": { "ansi-styles": { @@ -8930,9 +8462,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -8955,9 +8487,9 @@ "dev": true }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, "supports-color": { @@ -8972,9 +8504,9 @@ } }, "electron-to-chromium": { - "version": "1.3.379", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz", - "integrity": "sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg==", + "version": "1.3.545", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.545.tgz", + "integrity": "sha512-+0R/i17u5E1cwF3g0W8Niq3UUKTUMyyT4kLkutZUHG8mDNvFsAckK3HIanzGVtixe3b6rknD8k7gHiR6nKFkgg==", "dev": true }, "elementtree": { @@ -8993,9 +8525,9 @@ } }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -9005,6 +8537,14 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "emoji-regex": { @@ -9013,10 +8553,15 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "emoji-toolkit": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-6.0.1.tgz", + "integrity": "sha512-QZZq0beHg753JxcBt89UBFqzwYNuMtXhNO+jY3viSAndewmn9biTE5glaro1RA0uWJ4hKqw4k1Mboe1M6sGkMA==" + }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, "encodeurl": { @@ -9026,92 +8571,135 @@ "dev": true }, "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, "requires": { "once": "^1.4.0" } }, "endent": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/endent/-/endent-1.3.0.tgz", - "integrity": "sha512-C8AryqPPwtydqcpO5AF6k9Bd1EpFkQtvsefJqS3y3n8TG13Jy63MascDxTOULZYqrUde+dK6BjNc6LIMr3iI2A==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz", + "integrity": "sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ==", "requires": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", - "objectorarray": "^1.0.3" + "objectorarray": "^1.0.4" } }, "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", + "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", "dev": true, "requires": { "accepts": "~1.3.4", - "base64id": "1.0.0", + "base64id": "2.0.0", "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "ws": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz", + "integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==", + "dev": true } } }, "engine.io-client": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", + "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", "dev": true, "requires": { - "component-emitter": "1.2.1", + "component-emitter": "~1.3.0", "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", "has-cors": "1.1.0", "indexof": "0.0.1", "parseqs": "0.0.5", "parseuri": "0.0.5", - "ws": "~3.3.1", + "ws": "~6.1.0", "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" }, "dependencies": { + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" } } } }, "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", "dev": true, "requires": { "after": "0.8.2", @@ -9130,18 +8718,6 @@ "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } } }, "ent": { @@ -9156,6 +8732,14 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "entity-decode": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entity-decode/-/entity-decode-2.0.2.tgz", + "integrity": "sha512-5CCY/3ci4MC1m2jlumNjWd7VBFt4VfFnmSqSNmVcXq4gxM3Vmarxtt+SvmBnzwLS669MWdVuXboNVj1qN2esVg==", + "requires": { + "he": "^1.1.1" + } + }, "env-paths": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", @@ -9186,29 +8770,6 @@ "is-arrayish": "^0.2.1" } }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-ext": { "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", @@ -9253,9 +8814,9 @@ } }, "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true }, "es6-promisify": { @@ -9302,6 +8863,12 @@ "ext": "^1.1.2" } }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, "escape-goat": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", @@ -9317,13 +8884,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escaper": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/escaper/-/escaper-2.5.3.tgz", - "integrity": "sha512-QGb9sFxBVpbzMggrKTX0ry1oiI4CSDAl9vIL702hzl1jGW8VZs7qfqTRX7WDOjoNDoEVGcEtu1ZOQgReSfT2kQ==" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.9.1", @@ -9357,6 +8918,11 @@ "estraverse": "^4.1.1" } }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", @@ -9422,15 +8988,15 @@ } }, "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.5.tgz", + "integrity": "sha512-QR0rh0YiPuxuDQ6+T9GAO/xWTExXpxIes1Nl9RykNGTnE1HJmkuEfxJH9cubjIOQZ/GH4qNBR4u8VSHaKiWs4g==", "dev": true }, "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", "dev": true }, "eventsource": { @@ -9826,15 +9392,15 @@ } }, "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", "dev": true, "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" } }, "extsprintf": { @@ -9856,9 +9422,9 @@ }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, "isarray": { @@ -9924,6 +9490,14 @@ "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "requires": { + "reusify": "^1.0.4" + } + }, "faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -9934,18 +9508,18 @@ } }, "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "dev": true, "requires": { "pend": "~1.2.0" } }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { @@ -9958,43 +9532,13 @@ } }, "file-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", - "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" } }, "file-saver": { @@ -10002,14 +9546,13 @@ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "filelist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz", + "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==", "dev": true, "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" + "minimatch": "^3.0.4" } }, "fill-range": { @@ -10065,13 +9608,13 @@ } }, "find-cache-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.0.0.tgz", - "integrity": "sha512-t7ulV1fmbxh5G9l/492O1p5+EBbr3uwpt6odhFTMc+nWyhmbloe+ja9BZ8pIBtqFWhOmCWVjx+pTW4zDkFoclw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^3.0.0", + "make-dir": "^3.0.2", "pkg-dir": "^4.1.0" }, "dependencies": { @@ -10095,9 +9638,9 @@ } }, "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -10151,9 +9694,9 @@ "dev": true }, "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "flush-write-stream": { @@ -10167,30 +9710,10 @@ } }, "follow-redirects": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.8.1.tgz", - "integrity": "sha512-micCIbldHioIegeKs41DoH0KS3AXfFzgS30qVkM6z/XOE/GJgvmsoc839NUqa1B9udYe9dQxgv7KFwng6+p/dw==", - "dev": true, - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "dev": true }, "fontkit": { "version": "1.8.0", @@ -10278,14 +9801,6 @@ } } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -10358,19 +9873,34 @@ } }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "requires": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" }, "dependencies": { "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" } } }, @@ -10951,7 +10481,8 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "genfun": { "version": "5.0.0", @@ -10959,6 +10490,12 @@ "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", "dev": true }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, "get-assigned-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", @@ -10966,16 +10503,18 @@ "dev": true }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } }, "get-value": { "version": "2.0.6", @@ -10996,6 +10535,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11033,39 +10573,30 @@ "dev": true }, "global-agent": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.8.tgz", - "integrity": "sha512-VpBe/rhY6Rw2VDOTszAMNambg+4Qv8j0yiTNDYEXXXxkUNGWLHp8A3ztK4YDBbFNcWF4rgsec6/5gPyryya/+A==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", + "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", "dev": true, "optional": true, "requires": { - "boolean": "^3.0.0", - "core-js": "^3.6.4", + "boolean": "^3.0.1", + "core-js": "^3.6.5", "es6-error": "^4.1.1", - "matcher": "^2.1.0", - "roarr": "^2.15.2", - "semver": "^7.1.2", - "serialize-error": "^5.0.0" + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" }, "dependencies": { "semver": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", - "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true, "optional": true } } }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, "global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", @@ -11082,8 +10613,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { "version": "1.0.1", @@ -11096,17 +10626,145 @@ } }, "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", "dev": true, "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "good-listener": { @@ -11151,14 +10809,15 @@ "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true }, - "graphlibrary": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/graphlibrary/-/graphlibrary-2.2.0.tgz", - "integrity": "sha512-XTcvT55L8u4MBZrM37zXoUxsgxs/7sow7YSygd9CIwfWTVO8RVu7AYXhhCiTuFEf+APKgx6Jk4SuQbYR0vYKmQ==", + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", "requires": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "hammerjs": { @@ -11167,23 +10826,30 @@ "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, "handlebars": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.3.tgz", - "integrity": "sha512-SRGwSYuNfx8DwHD/6InAPzD6RgeruWLT+B8e8a7gGs8FWgHzlExpTFMEq2IA6QpAfOClpKHy6+8IqTjeBCu6Kg==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11212,6 +10878,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -11251,13 +10918,13 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true }, "has-value": { "version": "1.0.0", @@ -11298,13 +10965,39 @@ "dev": true }, "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } } }, "hash.js": { @@ -11382,9 +11075,9 @@ "dev": true }, "html-escaper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", - "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "html-minifier": { @@ -11471,12 +11164,12 @@ "dev": true }, "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { - "eventemitter3": "^3.0.0", + "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } @@ -11541,15 +11234,6 @@ "debug": "^3.1.0" }, "dependencies": { - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -11567,6 +11251,11 @@ } } }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -11593,6 +11282,15 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -11744,9 +11442,9 @@ } }, "inquirer": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", - "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -11755,7 +11453,7 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", @@ -11770,10 +11468,10 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "string-width": { @@ -11871,12 +11569,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -11906,9 +11598,9 @@ } }, "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", "dev": true }, "is-accessor-descriptor": { @@ -11952,11 +11644,6 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -12003,7 +11690,8 @@ "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true }, "is-descriptor": { "version": "0.1.6", @@ -12030,6 +11718,12 @@ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", "dev": true }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -12039,8 +11733,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -12057,16 +11750,6 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, "is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -12106,9 +11789,10 @@ } }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true }, "is-path-cwd": { "version": "1.0.0", @@ -12149,31 +11833,6 @@ "isobject": "^3.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" - }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", @@ -12189,12 +11848,6 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -12214,6 +11867,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, "requires": { "has-symbols": "^1.0.0" } @@ -12233,12 +11887,6 @@ "unc-path-regex": "^0.1.2" } }, - "is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "dev": true - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -12264,9 +11912,9 @@ "dev": true }, "isbinaryfile": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.4.tgz", - "integrity": "sha512-pEutbN134CzcjlLS1myKX/uxNjwU5eBVSprvkpv3+3dqhBHUZLIWJQowC40w5c0Zf19vBY8mrZl88y5J4RAPbQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", "dev": true }, "isexe": { @@ -12286,283 +11934,57 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul-api": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", - "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "compare-versions": "^3.4.0", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" - }, - "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", - "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.8.3" - } - }, - "@babel/generator": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz", - "integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==", - "dev": true, - "requires": { - "@babel/types": "^7.8.7", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.8.3", - "@babel/template": "^7.8.3", - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", - "dev": true, - "requires": { - "@babel/types": "^7.8.3" - } - }, - "@babel/highlight": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz", - "integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==", - "dev": true - }, - "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6" - } - }, - "@babel/traverse": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz", - "integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helper-function-name": "^7.8.3", - "@babel/helper-split-export-declaration": "^7.8.3", - "@babel/parser": "^7.8.6", - "@babel/types": "^7.8.6", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz", - "integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true } } }, "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" }, "dependencies": { - "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "has-flag": "^4.0.0" } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true } } }, @@ -12631,12 +12053,33 @@ } }, "istanbul-reports": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", - "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", "dev": true, "requires": { - "html-escaper": "^2.0.0" + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + } } }, "jalhyd": { @@ -12678,26 +12121,18 @@ } }, "jasmine-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", - "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", "dev": true }, "jasmine-spec-reporter": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", - "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", "dev": true, "requires": { - "colors": "1.1.2" - }, - "dependencies": { - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - } + "colors": "1.4.0" } }, "jasminewd2": { @@ -12707,26 +12142,36 @@ "dev": true }, "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.0.0.tgz", + "integrity": "sha512-pPaYa2+JnwmiZjK9x7p9BoZht+47ecFCDFA/CJxspHzeDvQcfVBLWzCiWyo+EGrSiQMWZtCFo9iSvMZnAAo8vw==", "dev": true, "requires": { "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.13.1", @@ -12755,8 +12200,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-buffer": { "version": "3.0.0", @@ -12795,26 +12239,19 @@ "dev": true }, "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "dev": true, "requires": { - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } + "minimist": "^1.2.5" } }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -12838,9 +12275,9 @@ } }, "jszip": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", - "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", "dev": true, "requires": { "lie": "~3.3.0", @@ -12850,55 +12287,37 @@ } }, "karma": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.4.1.tgz", - "integrity": "sha512-L5SIaXEYqzrh6b1wqYC42tNsFMx2PWuxky84pK9coK09MvmL7mxii3G3bZBh/0rvD27lqDd0le9jyhzvwif73A==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.1.1.tgz", + "integrity": "sha512-xAlOr5PMqUbiKXSv5PCniHWV3aiwj6wIZ0gUVcwpTCPVQm/qH2WAMFWxtnpM6KJqhkRWrIpovR4Rb0rn8GtJzQ==", "dev": true, "requires": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", + "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.0.0", - "colors": "^1.1.0", - "connect": "^3.6.0", + "colors": "^1.4.0", + "connect": "^3.7.0", "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "flatted": "^2.0.0", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^4.17.14", - "log4js": "^4.0.0", - "mime": "^2.3.1", - "minimatch": "^3.0.2", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", - "socket.io": "2.1.1", + "dom-serialize": "^2.2.1", + "flatted": "^2.0.2", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.15", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^2.3.0", "source-map": "^0.6.1", - "tmp": "0.0.33", - "useragent": "2.3.0" + "tmp": "0.2.1", + "ua-parser-js": "0.7.21", + "yargs": "^15.3.1" }, "dependencies": { - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", - "dev": true - }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -12908,20 +12327,16 @@ "fill-range": "^7.0.1" } }, - "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" } }, "fill-range": { @@ -12933,39 +12348,25 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { - "binary-extensions": "^2.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true }, "is-number": { "version": "7.0.0", @@ -12973,34 +12374,25 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } - }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", "dev": true }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, - "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "glob": "^7.1.3" } }, "source-map": { @@ -13009,6 +12401,15 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13050,28 +12451,31 @@ } }, "karma-coverage-istanbul-reporter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.1.tgz", - "integrity": "sha512-CH8lTi8+kKXGvrhy94+EkEMldLCiUA0xMOiL31vvli9qK0T+qcXJAwWBRVJWnVWxYkTmyWar8lPz63dxX6/z1A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", "dev": true, "requires": { - "istanbul-api": "^2.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", "minimatch": "^3.0.4" } }, "karma-jasmine": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.1.1.tgz", - "integrity": "sha512-pxBmv5K7IkBRLsFSTOpgiK/HzicQT3mfFF+oHAC7nxMfYKhaYFgxOa5qjnHW4sL5rUnmdkSajoudOnnOdPyW4Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", "dev": true, "requires": { - "jasmine-core": "^3.5.0" + "jasmine-core": "^3.6.0" } }, "karma-jasmine-html-reporter": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.2.tgz", - "integrity": "sha512-ILBPsXqQ3eomq+oaQsM311/jxsypw5/d0LnZXj26XkfThwq7jZ55A2CFSKJVA5VekbbOGvMyv7d3juZj0SeTxA==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", "dev": true }, "karma-source-map-support": { @@ -13084,9 +12488,9 @@ } }, "katex": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.11.1.tgz", - "integrity": "sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz", + "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==", "requires": { "commander": "^2.19.0" } @@ -13100,6 +12504,11 @@ "json-buffer": "3.0.0" } }, + "khroma": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-1.1.0.tgz", + "integrity": "sha512-aTO+YX22tYOLEQJYFiatAj1lc5QZ+H5sHWFRBWNCiKwc5NWNUJZyeSeiHEPeURJ2a1GEVYcmyMUwGjjLe5ec5A==" + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -13127,58 +12536,87 @@ "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "less": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz", - "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==", + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz", + "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==", "dev": true, "requires": { - "clone": "^2.1.2", "errno": "^0.1.1", "graceful-fs": "^4.1.2", "image-size": "~0.5.0", + "make-dir": "^2.1.0", "mime": "^1.4.1", - "mkdirp": "^0.5.0", - "promise": "^7.1.1", - "request": "^2.83.0", - "source-map": "~0.6.0" + "native-request": "^1.0.5", + "source-map": "~0.6.0", + "tslib": "^1.10.0" }, "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true } } }, "less-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", - "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.1.0.tgz", + "integrity": "sha512-/jLzOwLyqJ7Kt3xg5sHHkXtOyShWwFj410K9Si9WO+/h8rmYxxkSR0A3/hFEntWudE20zZnWMtpMYnLzqTVdUA==", "dev": true, "requires": { - "clone": "^2.1.1", - "loader-utils": "^1.1.0", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "clone": "^2.1.2", + "less": "^3.11.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" } }, "levn": { @@ -13192,9 +12630,9 @@ } }, "license-webpack-plugin": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.3.tgz", - "integrity": "sha512-vTSY5r9HOq4sxR2BIxdIXWKI+9n3b+DoQkhKHedB3TdSxTfXUDRxKXdAj5iejR+qNXprXsxvEu9W+zOhgGIkAw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-XPsdL/0brSHf+7dXIlRqotnCQ58RX2au6otkOg4U3dm8uH+Ka/fW4iukEs95uXm+qKe/SBs+s1Ll/aQddKG+tg==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", @@ -13379,14 +12817,14 @@ "dev": true }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, "locate-path": { @@ -13400,9 +12838,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -13422,6 +12860,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -13438,16 +12882,16 @@ } }, "log4js": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", - "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", "dev": true, "requires": { - "date-format": "^2.0.0", + "date-format": "^3.0.0", "debug": "^4.1.1", - "flatted": "^2.0.0", + "flatted": "^2.0.1", "rfdc": "^1.1.4", - "streamroller": "^1.0.6" + "streamroller": "^2.2.4" }, "dependencies": { "debug": { @@ -13468,9 +12912,9 @@ } }, "loglevel": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", - "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", "dev": true }, "loglevel-plugin-prefix": { @@ -13488,6 +12932,16 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-2.2.0.tgz", + "integrity": "sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.2" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -13500,13 +12954,12 @@ "dev": true }, "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" } }, "lunr": { @@ -13522,21 +12975,29 @@ "dev": true }, "magic-string": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", - "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { - "pify": "^3.0.0" + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "make-error": { @@ -13565,9 +13026,9 @@ }, "dependencies": { "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -13587,6 +13048,12 @@ "y18n": "^4.0.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -13627,21 +13094,6 @@ } } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -13670,19 +13122,19 @@ "dev": true }, "matcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.1.0.tgz", - "integrity": "sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "dev": true, "optional": true, "requires": { - "escape-string-regexp": "^2.0.0" + "escape-string-regexp": "^4.0.0" }, "dependencies": { "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "optional": true } @@ -13694,14 +13146,14 @@ "integrity": "sha1-mnHEh0chjrylHlGmbaaCA4zct78=" }, "mathjax": { - "version": "2.7.7", - "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-2.7.7.tgz", - "integrity": "sha512-OOl0B2/0tSJAtAZarXnQuLDBLgTNRqiI9VqHTQzPsxf4okT2iIpDrvaklK9x2QEMD1sDj4yRn11Ygci41DxMAQ==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-3.0.5.tgz", + "integrity": "sha512-9M7VulhltkD8sIebWutK/VfAD+m+6BIFqfpjDh9Pz/etoKUtjO6UMnOhUcDmNl6iApE8C9xrUmaMyNZkZAlrMw==" }, "md5-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-4.0.0.tgz", - "integrity": "sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-5.0.0.tgz", + "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==", "dev": true }, "md5.js": { @@ -13727,21 +13179,10 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, "requires": { "errno": "^0.1.3", @@ -13774,8 +13215,7 @@ "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "merge2": { "version": "1.2.3", @@ -13784,21 +13224,22 @@ "dev": true }, "mermaid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.3.1.tgz", - "integrity": "sha512-s3+IQJqpd++hplyz1DVmA68d1ZTUqr1R21EeQldPNtSpRwLuODqI0BxQAt0bI5oiet07lelqfs3FW4ewtIhfKQ==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.7.0.tgz", + "integrity": "sha512-SkinxAY3sIdML+o5U4U7rQEIa628OEywEw+pfhc3wSVDFqLk2XNdX2j3YmkyCw3Kcbp9BXar533ei+/saYBs5g==", "requires": { "@braintree/sanitize-url": "^3.1.0", + "babel-eslint": "^10.1.0", "d3": "^5.7.0", - "dagre-d3-renderer": "^0.5.8", - "dagre-layout": "^0.8.8", - "graphlibrary": "^2.2.0", + "dagre": "^0.8.4", + "dagre-d3": "^0.6.4", + "entity-decode": "^2.0.2", + "graphlib": "^2.1.7", "he": "^1.2.0", - "lodash": "^4.17.11", + "khroma": "^1.1.0", "minify": "^4.1.1", "moment-mini": "^2.22.1", - "prettier": "^1.18.2", - "scope-css": "^1.2.1" + "stylis": "^3.5.2" } }, "methods": { @@ -13836,6 +13277,14 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "mime": { @@ -13862,8 +13311,7 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "mimic-response": { "version": "1.0.1", @@ -13872,9 +13320,9 @@ "dev": true }, "mini-css-extract-plugin": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", - "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", "dev": true, "requires": { "loader-utils": "^1.1.0", @@ -13883,6 +13331,26 @@ "webpack-sources": "^1.1.0" }, "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, "normalize-url": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", @@ -13894,6 +13362,17 @@ "query-string": "^4.1.0", "sort-keys": "^1.0.0" } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } } } }, @@ -13947,15 +13426,15 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "minipass": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", - "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -13988,37 +13467,28 @@ } }, "minipass-pipeline": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", - "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, "requires": { "minipass": "^3.0.0" } }, "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "requires": { - "minipass": "^2.9.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "dependencies": { - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -14063,12 +13533,20 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "moment": { @@ -14113,6 +13591,23 @@ "run-queue": "^1.0.3" } }, + "move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-cdkdhNCgbP5dvS4tlGxZbD+nloio9GIimP57EjqFhwLcMjnU+XJKAZzlmg/TN/AK1LuNAdTSvm3CPPP4Xkv0iQ==", + "dev": true, + "requires": { + "path-exists": "^4.0.0" + }, + "dependencies": { + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -14148,15 +13643,15 @@ } }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -14179,6 +13674,13 @@ "to-regex": "^3.0.1" } }, + "native-request": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.7.tgz", + "integrity": "sha512-9nRjinI9bmz+S7dgNtf4A70+/vPhnd+2krGpy4SUlADuOuSa24IDkNaZ+R/QT1wQ6S8jBdi6wE7fLekFZNfUpQ==", + "dev": true, + "optional": true + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -14203,20 +13705,22 @@ "integrity": "sha512-MKawthAXawXZ+pcJS6/dGuwGDunM4yuUpjLjmFlRW3pr+BbWoUFVtFNxdcf1490FkYEsLC9sfEcZ4iQkmsI8sg==" }, "ngx-markdown": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-9.0.0.tgz", - "integrity": "sha512-wcXMxA4Skgk9SzhfDRjihap/Kjq17jmMQiE/Ccp0bNibGaDgS5DbZiPBlMNLkp669UvjY9wVuxE4NuDtmQHS9w==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-10.1.1.tgz", + "integrity": "sha512-bUVgN6asb35d5U4xM5CNfo7pSpuwqJSdTgK0PhNZzLiaiyPIK2owtLF6sWGhxTThJu+LngJPjj4MQ+AFe/s8XQ==", "requires": { - "@types/marked": "^0.7.2", - "katex": "^0.11.0", - "marked": "^0.8.0", - "prismjs": "^1.16.0" + "@types/marked": "^1.1.0", + "emoji-toolkit": "^6.0.1", + "katex": "^0.12.0", + "marked": "^1.1.0", + "prismjs": "^1.20.0", + "tslib": "^2.0.0" }, "dependencies": { "marked": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.0.tgz", - "integrity": "sha512-MyUe+T/Pw4TZufHkzAfDj6HarCBWia2y27/bhuYkTaiUnfDYFnCP3KUN+9oM7Wi6JA2rymtVYbQu3spE0GCmxQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz", + "integrity": "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==" } } }, @@ -14236,12 +13740,20 @@ "integrity": "sha512-t0aO4X8rqesLqypU8ZK2W7xGVbpi/z7u/Xg7qhnLoKVauI29NFzdKxV2oaYZmpkxIpgdbLSsIfklkjgxIM0IFA==", "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "no-case": { "version": "2.3.2", @@ -14252,9 +13764,9 @@ } }, "node-fetch-npm": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.3.tgz", - "integrity": "sha512-DgwoKEsqLnFZtk3ap7GWBHcHwnUhsNmQqEDcdjfQ8GofLEFJ081NAd4Uin3R7RFZBWVJCwHISw1oaEqPgSLloA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", "dev": true, "requires": { "encoding": "^0.1.11", @@ -14304,30 +13816,28 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } } } }, "node-releases": { - "version": "1.1.52", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.52.tgz", - "integrity": "sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ==", - "dev": true, - "requires": { - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "dev": true }, "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "requires": { "abbrev": "1", "osenv": "^0.1.4" @@ -14386,6 +13896,23 @@ "pify": "^3.0.0" } }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, "npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", @@ -14416,20 +13943,63 @@ } }, "npm-pick-manifest": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", - "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", + "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } } }, "npm-registry-fetch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", - "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", "dev": true, "requires": { "JSONStream": "^1.3.4", @@ -14451,9 +14021,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "yallist": { @@ -14488,12 +14058,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", @@ -14552,7 +14116,14 @@ "object-keys": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==" + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "dev": true + }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", + "dev": true }, "object-visit": { "version": "1.0.1", @@ -14586,22 +14157,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -14622,24 +14193,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -14672,22 +14243,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -14708,24 +14279,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -14737,12 +14308,9 @@ } }, "objectorarray": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.3.tgz", - "integrity": "sha512-kPoflSYkAf/Onvjr4ZLaq37vDuOXjVzfwLCRuORRzYGdXkHa/vacPT0RgR+KmtkwOYFcxTMM62BRrZk8GGKHjw==", - "requires": { - "tape": "^4.8.0" - } + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz", + "integrity": "sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w==" }, "obuf": { "version": "1.1.2", @@ -14774,36 +14342,31 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - } + "mimic-fn": "^2.1.0" } }, "open": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.0.0.tgz", - "integrity": "sha512-K6EKzYqnwQzk+/dzJAQSBORub3xlBTxMz+ntpZpH/LyCa1o6KjXhuN+2npAaI9jaSmU3R1Q8NWf4KUWcyytGsQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", + "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", "dev": true, "requires": { - "is-wsl": "^2.1.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "dependencies": { "is-wsl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", - "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", - "dev": true + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } } } }, @@ -14822,24 +14385,6 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -14855,26 +14400,47 @@ } }, "ora": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.2.tgz", - "integrity": "sha512-YUOZbamht5mfLxPmk4M35CD/5DuOkAacxlEUbStVXpBAt4fyhBf+vZHI/HRkI++QUp3sNoeA2Gw4C+hi4eGSig==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.4.tgz", + "integrity": "sha512-77iGeVU1cIdRhgFzCK8aw1fbtT1B/iZAvWjS+l/o1x0RShMgxHUZaD2yDpWsNCPwXg9z1ZA78Kbdvr8kBmG/Ww==", "dev": true, "requires": { - "chalk": "^2.4.2", + "chalk": "^3.0.0", "cli-cursor": "^3.1.0", "cli-spinners": "^2.2.0", "is-interactive": "^1.0.0", "log-symbols": "^3.0.0", - "strip-ansi": "^5.2.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", "wcwidth": "^1.0.1" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -14884,10 +14450,31 @@ "restore-cursor": "^3.1.0" } }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -14904,12 +14491,21 @@ } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } @@ -14934,17 +14530,6 @@ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, "os-name": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", @@ -14975,23 +14560,10 @@ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, "p-limit": { "version": "2.2.1", @@ -15012,10 +14584,13 @@ } }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "p-retry": { "version": "3.0.1", @@ -15029,8 +14604,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "package-json": { "version": "6.5.0", @@ -15062,9 +14636,9 @@ } }, "pacote": { - "version": "9.5.8", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.8.tgz", - "integrity": "sha512-0Tl8Oi/K0Lo4MZmH0/6IsT3gpGf9eEAznLXEQPKgPq7FscnbUOyopnVpwXlnQdIbCUaojWy1Wd7VMyqfVsRrIw==", + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", "dev": true, "requires": { "bluebird": "^3.5.3", @@ -15081,6 +14655,7 @@ "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", "npm-package-arg": "^6.1.0", "npm-packlist": "^1.1.12", "npm-pick-manifest": "^3.0.0", @@ -15099,9 +14674,9 @@ }, "dependencies": { "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -15137,6 +14712,21 @@ } } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -15165,6 +14755,26 @@ "yallist": "^3.0.0" } }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -15180,6 +14790,21 @@ "figgy-pudding": "^3.5.1" } }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -15230,14 +14855,13 @@ } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -15317,7 +14941,8 @@ "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", @@ -15349,9 +14974,9 @@ } }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -15514,10 +15139,19 @@ "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==", "dev": true }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", "dev": true, "requires": { "async": "^2.6.2", @@ -15549,9 +15183,9 @@ "dev": true }, "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "version": "7.0.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz", + "integrity": "sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -15568,33 +15202,14 @@ } }, "postcss-calc": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.3.tgz", + "integrity": "sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA==", "dev": true, "requires": { "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.0.2" - }, - "dependencies": { - "postcss": { - "version": "7.0.27", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", - "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } } }, "postcss-colormin": { @@ -15712,6 +15327,39 @@ "postcss": "^7.0.0", "postcss-load-config": "^2.0.0", "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } } }, "postcss-merge-longhand": { @@ -15876,6 +15524,66 @@ } } }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, "postcss-normalize-charset": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", @@ -16013,12 +15721,6 @@ "postcss-value-parser": "^3.0.0" }, "dependencies": { - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, "postcss-value-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", @@ -16105,14 +15807,6 @@ "cssesc": "^3.0.0", "indexes-of": "^1.0.1", "uniq": "^1.0.1" - }, - "dependencies": { - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - } } }, "postcss-svgo": { @@ -16147,9 +15841,9 @@ } }, "postcss-value-parser": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", - "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, "prelude-ls": { @@ -16164,15 +15858,10 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" - }, "primeng": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.0.1.tgz", - "integrity": "sha512-BmIq5F3+xUQ96G4fD4K2uR3azGitWCum++SVCXEgzzHI4zp55Xzyd96H8vHQg/IQxdT8ftlr/OpOHKACAFNgow==" + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-9.1.3.tgz", + "integrity": "sha512-5+XGWrLNYToMIXR/r+sMcGAgz/rSYjo6Ms8rygV5uuLmHNB+mXpaRxMCajKSnmVFLZPeyATtVRm9RcA4Y/VizQ==" }, "printj": { "version": "1.1.2", @@ -16180,17 +15869,12 @@ "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" }, "prismjs": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.19.0.tgz", - "integrity": "sha512-IVFtbW9mCWm9eOIaEkNyo2Vl4NnEifis2GQ7/MLRG5TQe6t+4Sj9J5QWI9i3v+SS43uZBlCAOn+zYTVYQcPXJw==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.21.0.tgz", + "integrity": "sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw==", "requires": { "clipboard": "^2.0.0" - } - }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + } }, "process": { "version": "0.11.10", @@ -16210,16 +15894,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "optional": true, - "requires": { - "asap": "~2.0.3" - } - }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -16278,9 +15952,9 @@ } }, "protractor": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.3.tgz", - "integrity": "sha512-7pMAolv8Ah1yJIqaorDTzACtn3gk7BamVKPTeO5lqIGOrfosjPgXFx/z1dqSI+m5EeZc2GMJHPr5DYlodujDNA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", "dev": true, "requires": { "@types/q": "^0.0.32", @@ -16291,15 +15965,21 @@ "glob": "^7.0.3", "jasmine": "2.8.0", "jasminewd2": "^2.1.0", - "optimist": "~0.6.0", "q": "1.4.1", "saucelabs": "^1.5.0", "selenium-webdriver": "3.6.0", "source-map-support": "~0.4.0", "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.0.6" + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" }, "dependencies": { + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -16348,12 +16028,6 @@ "pinkie-promise": "^2.0.0" } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -16424,12 +16098,6 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -16448,13 +16116,20 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } } }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -16634,43 +16309,13 @@ } }, "raw-loader": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-3.1.0.tgz", - "integrity": "sha512-lzUVMuJ06HF4rYveaz9Tv0WRlUMxJ0Y1hgSkkgg+50iEdaI0TthyEDe08KIHb0XsF6rn8WYTqPCaGTZg3sX+qA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", + "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^2.0.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" } }, "rc": { @@ -16723,7 +16368,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", - "dev": true, "requires": { "pify": "^4.0.1", "with-open-file": "^0.1.6" @@ -16732,40 +16376,21 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, "read-config-file": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.2.tgz", - "integrity": "sha512-tVt1lsiSjs+FtL/vtfCivqtKR1UNk3BB3uPJQvJqkgtAYDvZjo0xyXFYSVmzaTcO+Jdi5G7O2K2vDV+p1M/oug==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz", + "integrity": "sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA==", "dev": true, "requires": { "dotenv": "^8.2.0", "dotenv-expand": "^5.1.0", - "fs-extra": "^8.1.0", "js-yaml": "^3.13.1", - "json5": "^2.1.1", + "json5": "^2.1.2", "lazy-val": "^1.0.4" - }, - "dependencies": { - "json5": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", - "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "minimist": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.4.tgz", - "integrity": "sha512-wTiNDqe4D2rbTJGZk1qcdZgFtY0/r+iuE6GDT7V0/+Gu5MLpIDm4+CssDECR79OJs/OxLPXMzdxy153b5Qy3hg==", - "dev": true - } } }, "read-package-json": { @@ -16858,13 +16483,12 @@ "dev": true }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "dev": true, "requires": { - "@babel/runtime": "^7.8.4", - "private": "^0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-not": { @@ -16877,25 +16501,24 @@ "safe-regex": "^1.1.0" } }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==", + "dev": true }, - "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "dev": true, "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "registry-url": { @@ -16908,15 +16531,15 @@ } }, "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -16988,9 +16611,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "requires-port": { @@ -17029,6 +16652,78 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -17046,6 +16741,23 @@ "requires": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } } }, "restructure": { @@ -17057,14 +16769,6 @@ "browserify-optional": "^1.0.0" } }, - "resumer": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", - "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", - "requires": { - "through": "~2.3.4" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -17077,6 +16781,35 @@ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, "rfdc": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", @@ -17115,9 +16848,9 @@ } }, "roarr": { - "version": "2.15.2", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.2.tgz", - "integrity": "sha512-jmaDhK9CO4YbQAV8zzCnq9vjAqeO489MS5ehZ+rXmFiPFFE6B+S9KYO6prjmLJ5A0zY3QxVlQdrIya7E/azz/Q==", + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.3.tgz", + "integrity": "sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==", "dev": true, "optional": true, "requires": { @@ -17144,24 +16877,33 @@ "integrity": "sha512-OlwfYEgA2RdboZohpldlvJ1xngOins5d7ejqnIBWr9KaMxsnBqotpptRXTyfNRLnFpqzX6sTDt+X+a+6udnU8g==" }, "rollup": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.25.2.tgz", - "integrity": "sha512-+7z6Wab/L45QCPcfpuTZKwKiB0tynj05s/+s2U3F2Bi7rOLPr9UcjUwO7/xpjlPNXA/hwnth6jBExFRGyf3tMg==", + "version": "2.10.9", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.10.9.tgz", + "integrity": "sha512-dY/EbjiWC17ZCUSyk14hkxATAMAShkMsD43XmZGWjLrgFj15M3Dw2kEkA9ns64BiLFm9PKN6vTQw8neHwK74eg==", "dev": true, "requires": { - "@types/estree": "*", - "@types/node": "*", - "acorn": "^7.1.0" + "fsevents": "~2.1.2" + }, + "dependencies": { + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + } } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" }, "run-queue": { "version": "1.0.3", @@ -17178,11 +16920,18 @@ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=" }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + } } }, "safe-buffer": { @@ -17215,61 +16964,53 @@ } }, "sass": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.3.tgz", - "integrity": "sha512-1DKRZxJMOh4Bme16AbWTyYeJAjTlrvw2+fWshHHaepeJfGq2soFZTnt0YhWit+bohtDu4LdyPoEj6VFD4APHog==", + "version": "1.26.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.5.tgz", + "integrity": "sha512-FG2swzaZUiX53YzZSjSakzvGtlds0lcbF+URuU9mxOv7WBh7NhXEVDa4kPKN4hN6fC2TkOTOKqiqp6d53N9X5Q==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" } }, "sass-loader": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", - "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", "dev": true, "requires": { "clone-deep": "^4.0.1", "loader-utils": "^1.2.3", "neo-async": "^2.6.1", - "schema-utils": "^2.1.0", + "schema-utils": "^2.6.1", "semver": "^6.3.0" }, "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "minimist": "^1.2.0" } }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" } }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -17294,14 +17035,34 @@ "dev": true }, "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", "dev": true, "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + } } }, "scope-analyzer": { @@ -17318,16 +17079,6 @@ "get-assigned-identifiers": "^1.1.0" } }, - "scope-css": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/scope-css/-/scope-css-1.2.1.tgz", - "integrity": "sha512-UjLRmyEYaDNiOS673xlVkZFlVCtckJR/dKgr434VMm7Lb+AOOqXKdAcY7PpGlJYErjXXJzKN7HWo4uRPiZZG0Q==", - "requires": { - "escaper": "^2.5.3", - "slugify": "^1.3.1", - "strip-css-comments": "^3.0.0" - } - }, "screenfull": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.0.2.tgz", @@ -17389,15 +17140,6 @@ "dev": true, "optional": true }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - } - }, "semver-dsl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", @@ -17483,20 +17225,32 @@ } }, "serialize-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", - "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", "dev": true, "optional": true, "requires": { - "type-fest": "^0.8.0" + "type-fest": "^0.13.1" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true + } } }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "serve-index": { "version": "1.9.1", @@ -17609,6 +17363,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -17616,18 +17371,13 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shelljs": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", - "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "simple-swizzle": { "version": "0.2.2", @@ -17652,11 +17402,6 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, - "slugify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.0.tgz", - "integrity": "sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ==" - }, "smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", @@ -17777,27 +17522,33 @@ } }, "socket.io": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", + "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", "dev": true, "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", + "debug": "~4.1.0", + "engine.io": "~3.4.0", "has-binary2": "~1.0.2", "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.0" + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, @@ -17808,56 +17559,96 @@ "dev": true }, "socket.io-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", "component-bind": "1.0.0", "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.0", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", "has-binary2": "~1.0.2", "has-cors": "1.1.0", "indexof": "0.0.1", "object-component": "0.0.3", "parseqs": "0.0.5", "parseuri": "0.0.5", - "socket.io-parser": "~3.2.0", + "socket.io-parser": "~3.3.0", "to-array": "0.1.4" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } } } }, "socket.io-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", "dev": true, "requires": { "component-emitter": "1.2.1", - "debug": "~3.1.0", + "debug": "~4.1.0", "isarray": "2.0.1" }, "dependencies": { "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "isarray": { @@ -17865,19 +17656,15 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true } } }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, "sockjs-client": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", @@ -17971,13 +17758,33 @@ "dev": true }, "source-map-loader": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", - "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.0.tgz", + "integrity": "sha512-ZayyQCSCrQazN50aCvuS84lJT4xc1ZAcykH5blHaBdVveSwjiFK8UGMPvao0ho54DTb0Jf7m57uRRG/YYUZ2Fg==", "dev": true, "requires": { - "async": "^2.5.0", - "loader-utils": "^1.1.0" + "data-urls": "^2.0.0", + "iconv-lite": "^0.5.1", + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6", + "source-map": "^0.6.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz", + "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "source-map-resolve": { @@ -17994,9 +17801,9 @@ } }, "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -18056,9 +17863,9 @@ "dev": true }, "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -18115,9 +17922,9 @@ "dev": true }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -18128,9 +17935,9 @@ } }, "speed-measure-webpack-plugin": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", - "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz", + "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==", "dev": true, "requires": { "chalk": "^2.0.1" @@ -18161,9 +17968,9 @@ "dev": true }, "ssf": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.3.tgz", - "integrity": "sha512-pRuUdW0WwyB2doSqqjWyzwCD6PkfxpHAHdZp39K3dp/Hq7f+xfMwNAWIi16DyrRg4gg9c/RvLYkJTSawTPTm1w==", + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", "requires": { "frac": "~1.1.2" } @@ -18186,12 +17993,11 @@ } }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" } }, @@ -18353,38 +18159,48 @@ "dev": true }, "streamroller": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", - "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", "dev": true, "requires": { - "async": "^2.6.2", - "date-format": "^2.0.0", - "debug": "^3.2.6", - "fs-extra": "^7.0.1", - "lodash": "^4.17.14" + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" }, "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -18400,28 +18216,35 @@ "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } @@ -18431,34 +18254,154 @@ "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } } }, "string_decoder": { @@ -18470,6 +18413,12 @@ "safe-buffer": "~5.1.0" } }, + "stringify-package": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", + "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", + "dev": true + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -18480,17 +18429,9 @@ } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-css-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-css-comments/-/strip-css-comments-3.0.0.tgz", - "integrity": "sha1-elYl7/iisibPiUehElTaluE9rok=", - "requires": { - "is-regexp": "^1.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" }, "strip-eof": { "version": "1.0.0", @@ -18498,6 +18439,11 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -18505,43 +18451,13 @@ "dev": true }, "style-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", - "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.0.1" - }, - "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", - "dev": true, - "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" - } - } + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" } }, "stylehacks": { @@ -18583,6 +18499,11 @@ } } }, + "stylis": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" + }, "stylus": { "version": "0.54.7", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", @@ -18625,6 +18546,28 @@ "loader-utils": "^1.0.2", "lodash.clonedeep": "^4.5.0", "when": "~3.6.x" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } } }, "sumchecker": { @@ -18710,9 +18653,9 @@ } }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", "dev": true }, "domutils": { @@ -18733,103 +18676,42 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, + "systeminformation": { + "version": "4.27.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-4.27.1.tgz", + "integrity": "sha512-l321lB8PDyuAmLRALsjq11gLIXUepz2pDNaQoqYtd04g0pu/arw4aAQ0T05IgRSmZLHYq5jd6WmmpIBs1EO5AQ==", + "dev": true + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, - "tape": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/tape/-/tape-4.10.2.tgz", - "integrity": "sha512-mgl23h7W2yuk3N85FOYrin2OvThTYWdwbk6XQ1pr2PMJieyW2FM/4Bu/+kD/wecb3aZ0Enm+Syinyq467OPq2w==", - "requires": { - "deep-equal": "~1.0.1", - "defined": "~1.0.0", - "for-each": "~0.3.3", - "function-bind": "~1.1.1", - "glob": "~7.1.4", - "has": "~1.0.3", - "inherits": "~2.0.3", - "minimist": "~1.2.0", - "object-inspect": "~1.6.0", - "resolve": "~1.10.1", - "resumer": "~0.0.0", - "string.prototype.trim": "~1.1.2", - "through": "~2.3.8" - }, - "dependencies": { - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==" - }, - "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", "dev": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "dependencies": { - "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dev": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } @@ -18842,42 +18724,24 @@ "requires": { "async-exit-hook": "^2.0.1", "fs-extra": "^8.1.0" - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" }, "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true } } }, @@ -18908,173 +18772,50 @@ } }, "terser-webpack-plugin": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.3.tgz", - "integrity": "sha512-gWHkaGzGYjmDoYxksFZynWTzvXOAjQ5dd7xuTMYlv4zpWlLSb6v0QLSZjELzP5dMs1ox30O1BIPs9dgqlMHuLQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-3.0.1.tgz", + "integrity": "sha512-eFDtq8qPUEa9hXcUzTwKXTnugIVtlqc1Z/ZVhG8LmRT3lgRY13+pQTnFLY2N7ATB6TKCHuW/IGjoAnZz9wOIqw==", "dev": true, "requires": { - "cacache": "^13.0.1", - "find-cache-dir": "^3.2.0", - "jest-worker": "^25.1.0", - "p-limit": "^2.2.2", - "schema-utils": "^2.6.4", - "serialize-javascript": "^2.1.2", + "cacache": "^15.0.3", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.0.0", + "p-limit": "^2.3.0", + "schema-utils": "^2.6.6", + "serialize-javascript": "^3.0.0", "source-map": "^0.6.1", - "terser": "^4.4.3", + "terser": "^4.6.13", "webpack-sources": "^1.4.3" }, "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", - "dev": true - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-worker": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", - "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", - "dev": true, - "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "randombytes": "^2.1.0" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "terser": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.7.tgz", - "integrity": "sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "dev": true, "requires": { "commander": "^2.20.0", @@ -19087,7 +18828,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "2.0.5", @@ -19100,9 +18842,9 @@ } }, "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, "time-stamp": { @@ -19111,12 +18853,6 @@ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", "dev": true }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true - }, "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", @@ -19168,8 +18904,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-object-path": { "version": "0.3.0", @@ -19243,6 +18978,15 @@ } } }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, "traverse": { "version": "0.6.6", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", @@ -19255,12 +18999,6 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -19281,18 +19019,24 @@ "integrity": "sha512-ikUlS+/BcImLhNYyIgZcEmq4byc31QpC+46/6Jm5ECWkVFhf8SM2Fp/0pMVXPX6vk45SMCwrP4Taxucne8I0VA==" }, "ts-node": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.7.0.tgz", - "integrity": "sha512-s659CsHrsxaRVDEleuOkGvbsA0rWHtszUNEt1r0CgAFN5ZZTQtDzpsluS7W5pOGJIa1xZE8R/zK4dEs+ldFezg==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz", + "integrity": "sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg==", "dev": true, "requires": { "arg": "^4.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.6", + "source-map-support": "^0.5.17", "yn": "3.1.1" } }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, "ts-simple-ast": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/ts-simple-ast/-/ts-simple-ast-12.4.0.tgz", @@ -19347,6 +19091,12 @@ "slash": "^1.0.0" } }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, "typescript": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.1.tgz", @@ -19356,14 +19106,14 @@ } }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" }, "tslint": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.0.tgz", - "integrity": "sha512-fXjYd/61vU6da04E505OZQGb2VCN2Mq3doeWcOIryuG+eqdmFUXTYVwdhnbEu2k46LNLgUYt9bI5icQze/j0bQ==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -19374,11 +19124,19 @@ "glob": "^7.1.1", "js-yaml": "^3.13.1", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.3", "resolve": "^1.3.2", "semver": "^5.3.0", - "tslib": "^1.10.0", + "tslib": "^1.13.0", "tsutils": "^2.29.0" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "tsutils": { @@ -19388,6 +19146,14 @@ "dev": true, "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + } } }, "tty-browserify": { @@ -19450,18 +19216,18 @@ }, "dependencies": { "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "1.43.0" + "mime-db": "1.44.0" } } } @@ -19482,9 +19248,15 @@ } }, "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz", + "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", "dev": true }, "uglify-js": { @@ -19508,12 +19280,6 @@ } } }, - "ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", - "dev": true - }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -19521,9 +19287,9 @@ "dev": true }, "underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==" }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", @@ -19642,12 +19408,12 @@ } }, "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "^2.0.0" } }, "universal-analytics": { @@ -19681,7 +19447,8 @@ "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true }, "unix-crypt-td-js": { "version": "1.1.4", @@ -19741,12 +19508,6 @@ } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -19848,9 +19609,9 @@ "dev": true }, "is-installed-globally": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.1.tgz", - "integrity": "sha512-oiEcGoQbGc+3/iijAijrK2qFpkNoNjsHOm/5V5iaeydyrS/hnwaRCEgH5cpW0P3T1lSjV5piB7S5b5lEugNLhg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "requires": { "global-dirs": "^2.0.1", @@ -19870,9 +19631,9 @@ "dev": true }, "make-dir": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", - "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "requires": { "semver": "^6.0.0" @@ -20002,16 +19763,6 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "useragent": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", - "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", - "dev": true, - "requires": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" - } - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -20019,12 +19770,20 @@ "dev": true }, "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } } }, "util-deprecate": { @@ -20055,22 +19814,22 @@ }, "dependencies": { "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -20091,24 +19850,24 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -20204,14 +19963,162 @@ "dev": true }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" }, "dependencies": { "chokidar": { @@ -20219,6 +20126,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, + "optional": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -20238,7 +20146,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "optional": true } } }, @@ -20270,17 +20179,23 @@ "selenium-webdriver": "^3.0.1" } }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, "webpack": { - "version": "4.41.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.2.tgz", - "integrity": "sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", + "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", @@ -20291,26 +20206,20 @@ "loader-utils": "^1.2.3", "memory-fs": "^0.4.1", "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.3", "neo-async": "^2.6.1", "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", - "watchpack": "^1.6.0", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.1", "webpack-sources": "^1.4.1" }, "dependencies": { - "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", - "dev": true - }, "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -20320,9 +20229,9 @@ } }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -20342,10 +20251,16 @@ "y18n": "^4.0.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "find-cache-dir": { @@ -20373,6 +20288,26 @@ "path-is-absolute": "^1.0.0" } }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, "lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -20392,10 +20327,20 @@ "semver": "^5.6.0" } }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "pify": { @@ -20404,6 +20349,17 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", @@ -20426,16 +20382,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -20463,18 +20419,28 @@ "webpack-log": "^2.0.0" }, "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", "dev": true } } }, "webpack-dev-server": { - "version": "3.10.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", - "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -20485,33 +20451,39 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.6", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", + "sockjs": "0.3.20", "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -20532,6 +20504,28 @@ "upath": "^1.1.1" } }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -20541,25 +20535,28 @@ "ms": "^2.1.1" } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, "ms": { @@ -20568,106 +20565,131 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", - "dev": true - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-regex": "^4.1.0" } } } }, - "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", "dev": true, "requires": { - "node-forge": "0.9.0" + "websocket-extensions": ">=0.1.1" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ms": "^2.1.1" + "ansi-regex": "^4.1.0" } } } }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -20692,9 +20714,9 @@ }, "dependencies": { "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true } } @@ -20718,9 +20740,9 @@ } }, "webpack-subresource-integrity": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.3.4.tgz", - "integrity": "sha512-6XbGYzjh30cGQT/NsC+9IAkJP8IL7/t47sbwR5DLSsamiD56Rwv4/+hsgEHsviPvrEFZ0JRAQtCRN3UsR2Pw9g==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz", + "integrity": "sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw==", "dev": true, "requires": { "webpack-sources": "^1.3.0" @@ -20743,6 +20765,23 @@ "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "dev": true }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.2.0.tgz", + "integrity": "sha512-Sl4svq71j4kzaFD13uxkVl2AIsbj/xwp8NTM1VMhFRyNT1ZMTWaV6+Pva0fQs7y8+cAEPrDGfCAFLvJejhT79g==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, "when": { "version": "3.6.4", "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", @@ -20753,6 +20792,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -20763,48 +20803,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, "windows-release": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", @@ -20864,10 +20862,9 @@ } }, "with-open-file": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.6.tgz", - "integrity": "sha512-SQS05JekbtwQSgCYlBsZn/+m2gpn4zWsqpCYIrCHva0+ojXcnmUEPsBN6Ipoz3vmY/81k5PvYEWSxER2g4BTqA==", - "dev": true, + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", + "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", "requires": { "p-finally": "^1.0.0", "p-try": "^2.1.0", @@ -20877,8 +20874,7 @@ "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" } } }, @@ -20887,12 +20883,23 @@ "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -20903,42 +20910,79 @@ } }, "worker-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.2.0.tgz", - "integrity": "sha512-W5nRkw7+HlbsEt3qRP6MczwDDISjiRj2GYt9+bpe8A2La00TmJdwzG5bpdMXhRt1qcWmwAvl1TiKaHRa+XDS9Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz", + "integrity": "sha512-7hFDYWiKcE3yHZvemsoM9lZis/PzurHAEX1ej8PLCu818Rt6QqUAiDdxHPCKZctzmhqzPpcFSgvMCiPbtooqAg==", "dev": true, "requires": { "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "color-name": "~1.1.4" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" } } } @@ -20949,37 +20993,36 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "~1.0.0" } }, "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, "xlsx": { - "version": "0.15.6", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.15.6.tgz", - "integrity": "sha512-7vD9eutyLs65iDjNFimVN+gk/oDkfkCgpQUjdE82QgzJCrBHC4bGPH7fzKVyy0UPp3gyFVQTQEFJaWaAvZCShQ==", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.6.tgz", + "integrity": "sha512-iAPNt15C2umCx7Q6h9owZvNHRYVOImLp7Mc00uA4UhJvzjfM1OV3V7TgBXIHuawGF1G6GLXZr/r75e5jsiBefg==", "requires": { "adler-32": "~1.2.0", "cfb": "^1.1.4", @@ -20987,8 +21030,9 @@ "commander": "~2.17.1", "crc-32": "~1.2.0", "exit-on-epipe": "~1.0.1", - "ssf": "~0.10.3", - "wmf": "~1.0.1" + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" }, "dependencies": { "commander": { @@ -21008,12 +21052,6 @@ "xmlbuilder": "~11.0.0" }, "dependencies": { - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, "xmlbuilder": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", @@ -21028,9 +21066,9 @@ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" }, "xmlhttprequest-ssl": { "version": "1.5.5", @@ -21051,35 +21089,70 @@ "dev": true }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "requires": { - "cliui": "^4.0.0", + "cliui": "^6.0.0", "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -21087,12 +21160,13 @@ } }, "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "dev": true, "requires": { - "fd-slicer": "~1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "yeast": { @@ -21108,9 +21182,12 @@ "dev": true }, "zone.js": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", - "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.1.tgz", + "integrity": "sha512-KcZawpmVgS+3U2rzKTM6fLKaCX1QDv3//NxiSOOsqpQY/r5hl+xpYikPwY93Sp7CAB+J5mZJpb/YubxEYLGK5g==", + "requires": { + "tslib": "^2.0.0" + } } } } diff --git a/package.json b/package.json index aced423ae40f640521f874047d4aa7eeeb8f9143..2d99d91b9935aea8fbd53d214624c794c47622d8 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,8 @@ "ng": "cd . && \"node_modules/.bin/ng\"", "postinstall": "./node_modules/.bin/webdriver-manager update --gecko=false --versions.chrome=83.0.4103.39", "lint": "npm run ng -- lint", - "e2e": "npm run preprocess && npm run ng -- e2e --suite=regular --webdriver-update=false", - "e2equick": "npm run ng -- e2e --dev-server-target= --suite=regular --webdriver-update=false", + "e2e": "npm run preprocess && node scripts/check-translations.js && npm run ng -- e2e --suite=regular --webdriver-update=false", + "e2equick": "node scripts/check-translations.js && npm run ng -- e2e --dev-server-target= --suite=regular --webdriver-update=false", "monkeytest": "npm run ng -- e2e --dev-server-target= --suite=monkeyTest --webdriver-update=false", "mkdocs": "node scripts/python3.js -m mkdocs build -f mkdocs-fr.yml && node scripts/python3.js -m mkdocs build -f mkdocs-en.yml && node scripts/mkdocs-postprocess.js", "mkdocs2pdf": "node scripts/python3.js mkdocs2pdf.py", @@ -36,81 +36,81 @@ }, "private": true, "dependencies": { - "@angular/animations": "^9.0.7", - "@angular/cdk": "^9.1.3", - "@angular/common": "^9.0.7", - "@angular/compiler": "^9.0.7", - "@angular/core": "^9.0.7", - "@angular/flex-layout": "^9.0.0-beta.29", - "@angular/forms": "^9.0.7", - "@angular/material": "^9.1.3", - "@angular/platform-browser": "^9.0.7", - "@angular/platform-browser-dynamic": "^9.0.7", - "@angular/router": "^9.0.7", + "@angular/animations": "^10.0.12", + "@angular/cdk": "^10.1.3", + "@angular/common": "^10.0.12", + "@angular/compiler": "^10.0.12", + "@angular/core": "^10.0.12", + "@angular/flex-layout": "^10.0.0-beta.32", + "@angular/forms": "^10.0.12", + "@angular/material": "^10.1.3", + "@angular/platform-browser": "^10.0.12", + "@angular/platform-browser-dynamic": "^10.0.12", + "@angular/router": "^10.0.12", "@types/pako": "^1.0.1", "@types/sprintf-js": "^1.1.2", "angular2-chartjs": "^0.5.1", "angular2-hotkeys": "^2.2.0", - "chartjs-plugin-zoom": "^0.7.5", - "cordova-android": "^8.1.0", - "cordova-plugin-advanced-http": "^2.4.1", + "chartjs-plugin-zoom": "^0.7.7", + "cordova-android": "^9.0.0", + "cordova-plugin-advanced-http": "^3.0.1", "cordova-plugin-app-version": "^0.1.9", "cordova-plugin-badge": "^0.8.8", "cordova-plugin-device": "^2.0.3", "cordova-plugin-file": "^6.0.2", - "cordova-plugin-file-opener2": "^3.0.0", + "cordova-plugin-file-opener2": "^3.0.4", "cordova-plugin-local-notification": "^0.9.0-beta.2", "cordova-plugin-whitelist": "^1.3.4", - "core-js": "^3.6.4", + "core-js": "^3.6.5", "file-saver": "^2.0.2", "he": "^1.2.0", "jalhyd": "file:../jalhyd", "material-design-icons": "^3.0.1", - "mathjax": "^2.7.7", - "mermaid": "~8.3.1", + "mathjax": "^3.0.5", + "mermaid": "^8.7.0", "ngx-konami": "^1.7.1", - "ngx-markdown": "^9.0.0", + "ngx-markdown": "^10.1.1", "ngx-material-file-input": "^2.1.1", "ngx-matomo": "^0.1.4", "ngx-webstorage-service": "^4.1.0", "pako": "^1.0.11", - "primeng": "^9.0.1", + "primeng": "^9.1.3", "roboto-fontface": "^0.10.0", - "rxjs": "^6.5.4", + "rxjs": "^6.6.2", "screenfull": "^5.0.2", "svg-pan-zoom": "^3.6.1", - "tslib": "^1.11.1", - "xlsx": "^0.15.6", - "zone.js": "^0.10.3" + "tslib": "^2.0.0", + "xlsx": "^0.16.6", + "zone.js": "^0.11.1" }, "devDependencies": { - "@angular-devkit/build-angular": "^0.900.7", - "@angular/cli": "^9.0.7", - "@angular/compiler-cli": "^9.0.7", - "@angular/language-service": "^9.0.7", + "@angular-devkit/build-angular": "^0.1000.7", + "@angular/cli": "^10.0.7", + "@angular/compiler-cli": "^10.0.12", + "@angular/language-service": "^10.0.12", "@compodoc/compodoc": "^1.1.11", "@types/file-saver": "^2.0.1", - "@types/jasmine": "^3.5.9", + "@types/jasmine": "^3.5.13", "@types/jasminewd2": "^2.0.8", - "@types/node": "^13.9.2", - "codelyzer": "^5.1.2", - "cordova": "^9.0.0", - "electron": "^8.1.1", - "electron-builder": "^22.4.1", - "fs-extra": "^8.1.0", - "jasmine-core": "^3.5.0", - "jasmine-spec-reporter": "~4.2.1", - "karma": "^4.4.1", - "karma-chrome-launcher": "^3.1.0", + "@types/node": "^14.6.0", + "codelyzer": "^6.0.0", + "cordova": "^10.0.0", + "electron": "^10.0.0", + "electron-builder": "^22.8.0", + "fs-extra": "^9.0.1", + "jasmine-core": "^3.6.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "^5.1.1", + "karma-chrome-launcher": "~3.1.0", "karma-cli": "~2.0.0", - "karma-coverage-istanbul-reporter": "^2.1.1", - "karma-jasmine": "^3.1.1", - "karma-jasmine-html-reporter": "^1.5.2", - "protractor": "^5.4.3", - "ts-node": "^8.7.0", - "tslint": "^6.1.0", - "typescript": "~3.7.5", - "webpack-dev-server": "^3.10.3" + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-jasmine": "^4.0.1", + "karma-jasmine-html-reporter": "^1.5.4", + "protractor": "~7.0.0", + "ts-node": "^9.0.0", + "tslint": "^6.1.3", + "typescript": "~3.9.7", + "webpack-dev-server": "^3.11.0" }, "cordova": { "plugins": { diff --git a/scripts/check-translations.js b/scripts/check-translations.js new file mode 100644 index 0000000000000000000000000000000000000000..4143d689e4546a86d78ec4fdd665c8e9e915eb91 --- /dev/null +++ b/scripts/check-translations.js @@ -0,0 +1,124 @@ +'use strict'; + +/** + * 1) Reads Message enum in jalhyd, and for every message code in it, checks + * that there is a translation in each nghyd's locale/*.json file (ie. for + * every language) + * + * 2) For every nghyd calculator, checks that the translated keys are the same + * in all language files + */ + +const fs = require('fs'); + +/* IMPORTANT: during step 2, will look for those languages codes only */ +const expectedLanguages = [ "fr", "en" ]; + +// total errors +let nbErr = 0; + +// ---- 1. JaLHyd messages ---- + +// read and transform JaLHyd message file +const jalhydMessagesPath = "../jalhyd/src/util/message.ts"; +let jm = fs.readFileSync(jalhydMessagesPath, "utf-8"); +// extract enum block +jm = jm.replace(/export enum MessageCode \{([^{]+)\}[\s\S]+/m, (match, p1) => { + return p1; +}); +// remove comments +jm = jm.replace(/\/\*[\s\S]*?\*\//gm, ""); +jm = jm.replace(/\/\/.+/g, ""); + +// remove spaces +jm = jm.replace(/[ \t]+/g, ""); +// remove line breaks +jm = jm.replace(/\n/g, ""); + +// split on ";" +const messages = jm.split(","); + +// remove import on 1st line (wtf) @clodo +messages[0] = messages[0].substring(24); + +// read every language file +const localePath = "src/locale"; +const localeDir = fs.readdirSync(localePath); +for (let i = 0; i < localeDir.length; i++) { + const localeFile = localeDir[i]; + const res = localeFile.match(/^messages\.([a-z]{2})\.json$/); + if (res) { + const lang = res[1]; + console.log("Loading global translations for language [" + lang + "]"); + const langFilePath = localePath + '/' + localeFile; + const translations = Object.keys(JSON.parse(fs.readFileSync(langFilePath, "utf-8"))); + // console.log(translations); + // check against JaLHyd messages list + for (const mess of messages) { + if (! translations.includes(mess)) { + console.log(" missing message in [" + lang + "] translation: " + mess); + nbErr++; + } + } + } +} + +// ---- 2. calculators localisation ---- + +// find every calculator folder +const calculatorsPath = "src/app/calculators"; +const calculatorsDir = fs.readdirSync(calculatorsPath); +console.log("Checking all calculators translations for languages [" + expectedLanguages.join(", ") + "]"); +for (let i = 0; i < calculatorsDir.length; i++) { + const calcPath = calculatorsPath + "/" + calculatorsDir[i]; + const stats = {}; + // console.log(" checking calculator [" + calculatorsDir[i] + "]"); + // find all language files for this calculator, and store translation keys + for (let j = 0; j < expectedLanguages.length; j++) { + const exLang = expectedLanguages[j]; + const langFilePath = calcPath + "/" + exLang + ".json"; + if (fs.existsSync(langFilePath)) { + const translations = Object.keys(JSON.parse(fs.readFileSync(langFilePath, "utf-8"))); + // console.log(translations); + stats[exLang] = translations; + } else { + console.log(" missing language file [" + exLang + ".json] for calculator [" + calculatorsDir[i] + "]"); + nbErr++; + } + } + // console.log(stats); + // compare number of translations per file + let sameNumber = true; + // compare keys names (order-dependent) per file + let sameKeys = true; + let prevKeys = null; + const sKeys = Object.keys(stats); + for (let k = 0; k < sKeys.length; k++) { + const key = sKeys[k]; + if (k > 0) { + sameNumber = sameNumber && (stats[key].length === prevKeys.length); + sameKeys = sameKeys && (JSON.stringify(stats[key]) === JSON.stringify(prevKeys)); // compare arrays + } + prevKeys = stats[key]; + } + // difference found ? + if (! sameNumber) { + console.log(" [" + calculatorsDir[i] + "]: different number of keys found", sKeys.map((s) => { + return s + ": " + stats[s].length; + })); + nbErr++; + } else if (! sameKeys) { + console.log(" [" + calculatorsDir[i] + "]: different keys found", stats); + nbErr++; + } +} + + +// ---- 3. JaLHyd messages ---- + +if (nbErr === 0) { + console.log("Everything OK !"); + process.exit(0); +} else { + process.exit(1); +} diff --git a/scripts/mkdocs-postprocess.js b/scripts/mkdocs-postprocess.js index fcb2b04ebea7069e0faf455aaa3f91c2abf2e5bb..5e4cc9e6f5928d304fbfe4d81b7a506a393b2eb3 100644 --- a/scripts/mkdocs-postprocess.js +++ b/scripts/mkdocs-postprocess.js @@ -16,10 +16,9 @@ fs.emptyDirSync(destPath); fs.ensureDirSync(destPathMJ + "/fonts/HTML-CSS/TeX/", { recursive: true }); // copy required files only -fs.copySync("node_modules/mathjax/MathJax.js", destPathMJ + "/MathJax.js"); -fs.copySync("node_modules/mathjax/config", destPathMJ + "/config"); -fs.copySync("node_modules/mathjax/jax", destPathMJ + "/jax"); -fs.copySync("node_modules/mathjax/fonts/HTML-CSS/TeX/woff", destPathMJ + "/fonts/HTML-CSS/TeX/woff"); -fs.copySync("node_modules/mathjax/fonts/HTML-CSS/TeX/otf", destPathMJ + "/fonts/HTML-CSS/TeX/otf"); +fs.copySync("node_modules/mathjax/es5/tex-mml-chtml.js", destPathMJ + "/tex-mml-chtml.js"); +fs.copySync("node_modules/mathjax/es5/output/chtml/fonts", destPathMJ + "/output/chtml/fonts"); + +fs.copySync("docs/mathjax.config.js", destPath + "/mathjax.config.js"); fs.copySync("docs/matomo-tracking.js", destPath + "/matomo-tracking.js"); diff --git a/src/app/app.component.html b/src/app/app.component.html index 352b0562753ca95df1f204bb31fb9bd2cd2b095c..50e2060eb0d02973e081cf099812e7dbd2c681a6 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -47,10 +47,14 @@ </div> </div> - <button *ngIf="currentRoute != '/list'" mat-icon-button id="new-calculator" routerLink="/list" + <button *ngIf="! currentRoute.includes('/list')" mat-icon-button id="new-calculator" routerLink="/list" [title]="uitextSidenavNewCalc" (click)="sidenav.close()"> <mat-icon>add_box</mat-icon> </button> + <button *ngIf="currentRoute === '/list'" mat-icon-button id="enable-search" routerLink="/list/search" + [title]="uitextSearch" (click)="sidenav.close()"> + <mat-icon>search</mat-icon> + </button> <a *ngIf="enableHeaderDoc" target="_blank" id="header-doc" [href]="docIndexPath" [title]="uitextSidenavHelp" (click)="sidenav.close()"> <mat-icon>help</mat-icon> diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 38eeabc9524c08bb66465a6620bb7faab9793981..aa8b9e502ba4607f44986ee319d30ceb22d8b620 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -76,6 +76,15 @@ button:focus { } } +#enable-search { + margin-right: .5em; + + mat-icon { + font-weight: bold; + font-size: 2em; + } +} + #header-doc { color: white; transform: scale(1.4); diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 435edb9991e03f86e20ca90e8af49ad0d6820fa4..6cbd0887f705634a567f6508511737b4850c783b 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -9,7 +9,6 @@ import { Observer, jalhydDateRev, jalhydVersion, CalculatorType, Session } from import { environment } from "../environments/environment"; import { I18nService } from "./services/internationalisation.service"; -import { ErrorService } from "./services/error.service"; import { FormulaireService } from "./services/formulaire.service"; import { FormulaireDefinition } from "./formulaire/definition/form-definition"; import { ServiceFactory } from "./services/service-factory"; @@ -24,6 +23,8 @@ import { DialogSaveSessionComponent } from "./components/dialog-save-session/dia import { QuicknavComponent } from "./components/quicknav/quicknav.component"; import { NotificationsService } from "./services/notifications.service"; +import { decodeHtml } from "./util"; + import { HotkeysService, Hotkey } from "angular2-hotkeys"; import { MatomoInjector, MatomoTracker } from "ngx-matomo"; @@ -42,846 +43,828 @@ declare let cordova: any; declare let device: any; @Component({ - selector: "nghyd-app", - templateUrl: "./app.component.html", - styleUrls: ["./app.component.scss"], - providers: [ErrorService] + selector: "nghyd-app", + templateUrl: "./app.component.html", + styleUrls: ["./app.component.scss"] }) export class AppComponent implements OnInit, OnDestroy, Observer { - @ViewChild("sidenav") - public sidenav: MatSidenav; - - @ViewChild("navbar") - public navbar: MatToolbar; - - /** current calculator, inferred from _currentFormId by setActiveCalc() (used for navbar menu) */ - public currentCalc: any; - - /** shows or hides the progressbar under the navbar */ - public showProgressBar = false; - - /** liste des modules de calcul ouverts */ - private _calculators: Array<{ - title: string, - type: CalculatorType, - uid: string, - active?: boolean, - latestAnchor?: string - }> = []; - - /** - * id du formulaire courant - * on utilise pas directement FormulaireService.currentFormId pour éviter l'erreur - * ExpressionChangedAfterItHasBeenCheckedError - */ - private _currentFormId: string; - - private _innerWidth: number; - - constructor( - private intlService: I18nService, - private appSetupService: ApplicationSetupService, - private errorService: ErrorService, - private router: Router, - private formulaireService: FormulaireService, - private httpService: HttpService, - private notificationsService: NotificationsService, - private confirmEmptySessionDialog: MatDialog, - private saveSessionDialog: MatDialog, - private loadSessionDialog: MatDialog, - private confirmCloseCalcDialog: MatDialog, - private hotkeysService: HotkeysService, - private matomoInjector: MatomoInjector, - private matomoTracker: MatomoTracker - ) { - ServiceFactory.instance.httpService = httpService; - ServiceFactory.instance.applicationSetupService = appSetupService; - ServiceFactory.instance.i18nService = intlService; - ServiceFactory.instance.formulaireService = formulaireService; - ServiceFactory.instance.notificationsService = notificationsService; - - if (! isDevMode()) { - // évite de mettre en place un bandeau RGPD - this.matomoTracker.disableCookies(); - // Set custom dimension for Electron / Cordova / pure Web browser - this.matomoTracker.setCustomDimension(1, this.getRunningPlatform()); - // Matomo open-source Web analytics - this.matomoInjector.init("https://stasi.g-eau.fr/", 1); - } - - this.router.events.subscribe((event: Event) => { - // close side navigation when clicking a calculator tab - if (event instanceof NavigationEnd) { - this.sidenav.close(); - window.scrollTo(0, 0); - } - // [de]activate calc tabs depending on loaded route - if (event instanceof ActivationEnd) { - const path = event.snapshot.url[0].path; - if (path === "calculator") { - const calcUid = event.snapshot.params.uid; - if (this.calculatorExists(calcUid)) { - this.setActiveCalc(calcUid); - } else { - // if required calculator does not exist, redirect to list page - this.toList(); - } - } else { - this.setActiveCalc(null); + @ViewChild("sidenav") + public sidenav: MatSidenav; + + @ViewChild("navbar") + public navbar: MatToolbar; + + /** current calculator, inferred from _currentFormId by setActiveCalc() (used for navbar menu) */ + public currentCalc: any; + + /** shows or hides the progressbar under the navbar */ + public showProgressBar = false; + + /** liste des modules de calcul ouverts */ + private _calculators: Array<{ + title: string, + type: CalculatorType, + uid: string, + active?: boolean, + latestAnchor?: string + }> = []; + + /** + * id du formulaire courant + * on utilise pas directement FormulaireService.currentFormId pour éviter l'erreur + * ExpressionChangedAfterItHasBeenCheckedError + */ + private _currentFormId: string; + + private _innerWidth: number; + + constructor( + private intlService: I18nService, + private appSetupService: ApplicationSetupService, + private router: Router, + private formulaireService: FormulaireService, + private httpService: HttpService, + private notificationsService: NotificationsService, + private confirmEmptySessionDialog: MatDialog, + private saveSessionDialog: MatDialog, + private loadSessionDialog: MatDialog, + private confirmCloseCalcDialog: MatDialog, + private hotkeysService: HotkeysService, + private matomoInjector: MatomoInjector, + private matomoTracker: MatomoTracker + ) { + ServiceFactory.httpService = httpService; + ServiceFactory.applicationSetupService = appSetupService; + ServiceFactory.i18nService = intlService; + ServiceFactory.formulaireService = formulaireService; + ServiceFactory.notificationsService = notificationsService; + + if (!isDevMode()) { + // évite de mettre en place un bandeau RGPD + this.matomoTracker.disableCookies(); + // Set custom dimension for Electron / Cordova / pure Web browser + this.matomoTracker.setCustomDimension(1, this.getRunningPlatform()); + // Matomo open-source Web analytics + this.matomoInjector.init("https://stasi.g-eau.fr/", 1); } - } - }); - - // hotkeys listeners - this.hotkeysService.add(new Hotkey("alt+s", AppComponent.onHotkey(this.saveForm, this))); - this.hotkeysService.add(new Hotkey("alt+o", AppComponent.onHotkey(this.loadSession, this))); - this.hotkeysService.add(new Hotkey("alt+q", AppComponent.onHotkey(this.emptySession, this))); - this.hotkeysService.add(new Hotkey("alt+n", AppComponent.onHotkey(this.toList, this))); - this.hotkeysService.add(new Hotkey("alt+g", AppComponent.onHotkey(this.toDiagram, this))); - } - - /** - * Wrapper for hotkeys triggers, that executes given function only if - * hotkeys are enabled in app preferences - * @param func function to execute when hotkey is entered - */ - public static onHotkey(func: any, that: any) { - return (event: KeyboardEvent): boolean => { - if (ServiceFactory.instance.applicationSetupService.enableHotkeys) { - func.call(that); - return false; // Prevent bubbling - } else { - console.log("Hotkeys are disabled in app preferences"); - } - }; - } - - public static exportAsImage(canvas: HTMLCanvasElement) { - canvas.toBlob((blob) => { - AppComponent.download(blob, "chart.png", "image/png"); - }); // defaults to image/png - } - - /** - * Exports a results data table to XLSX format, and removes "help" mentions - * from the parameters names columns if needed - * @param table results data table - * @param namesInFirstCol if true, will look for parameters names in 1st column - * (for fixed results), else in 1st row (variable results, by default) - */ - public static exportAsSpreadsheet(table: ElementRef, namesInFirstCol: boolean = false) { - const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(table); - - let regExCellKey; - if (namesInFirstCol) { - regExCellKey = new RegExp("^A\\d$"); - } else { - regExCellKey = new RegExp("^\\w1$"); - } - // browse all cells - for (const key in ws) { - // look for 1st row or 1st col - if (regExCellKey.test(key) === true) { - const regExCellName = new RegExp("help$"); - const v: string = ws[key].v; - // remove "help" from cell name's ending - if (regExCellName.test(v) === true) { - const newV = v.substr(0, v.length - 4); - ws[key].v = newV; + + this.router.events.subscribe((event: Event) => { + // close side navigation when clicking a calculator tab + if (event instanceof NavigationEnd) { + this.sidenav.close(); + window.scrollTo(0, 0); + } + // [de]activate calc tabs depending on loaded route + if (event instanceof ActivationEnd) { + const path = event.snapshot.url[0].path; + if (path === "calculator") { + const calcUid = event.snapshot.params.uid; + if (this.calculatorExists(calcUid)) { + this.setActiveCalc(calcUid); + } else { + // if required calculator does not exist, redirect to list page + this.toList(); + } + } else { + this.setActiveCalc(null); + } + } + }); + + // hotkeys listeners + this.hotkeysService.add(new Hotkey("alt+s", AppComponent.onHotkey(this.saveForm, this))); + this.hotkeysService.add(new Hotkey("alt+o", AppComponent.onHotkey(this.loadSession, this))); + this.hotkeysService.add(new Hotkey("alt+q", AppComponent.onHotkey(this.emptySession, this))); + this.hotkeysService.add(new Hotkey("alt+n", AppComponent.onHotkey(this.toList, this))); + this.hotkeysService.add(new Hotkey("alt+g", AppComponent.onHotkey(this.toDiagram, this))); + } + + /** + * Wrapper for hotkeys triggers, that executes given function only if + * hotkeys are enabled in app preferences + * @param func function to execute when hotkey is entered + */ + public static onHotkey(func: any, that: any) { + return (event: KeyboardEvent): boolean => { + if (ServiceFactory.applicationSetupService.enableHotkeys) { + func.call(that); + return false; // Prevent bubbling + } else { + console.log("Hotkeys are disabled in app preferences"); + } + }; + } + + public static exportAsImage(canvas: HTMLCanvasElement) { + canvas.toBlob((blob) => { + AppComponent.download(blob, "chart.png", "image/png"); + }); // defaults to image/png + } + + /** + * Exports a results data table to XLSX format, and removes "help" mentions + * from the parameters names columns if needed + * @param table results data table + * @param namesInFirstCol if true, will look for parameters names in 1st column + * (for fixed results), else in 1st row (variable results, by default) + */ + public static exportAsSpreadsheet(table: ElementRef, namesInFirstCol: boolean = false) { + const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(table); + + let regExCellKey; + if (namesInFirstCol) { + regExCellKey = new RegExp("^A\\d$"); + } else { + regExCellKey = new RegExp("^\\w1$"); } - } - } - - const wb: XLSX.WorkBook = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(wb, ws, "default"); - const wopts: any = { bookType: "xlsx", bookSST: false, type: "array" }; - const wbout = XLSX.write(wb, wopts); - AppComponent.download( - new Blob([wbout], {type: "application/octet-stream"}), - "cassiopee-results.xlsx", - "application/vnd.ms-excel" - ); - } - - /** - * Cordova-compatible file download method - * @see https://esstudio.site/2019/02/16/downloading-saving-and-opening-files-with-cordova.html - * @param blob binary object to download - * @param filename - * @param mimeType - */ - public static download(blob: Blob, filename: string, mimeType: string) { - if (window.cordova && cordova.platformId !== "browser") { - document.addEventListener("deviceready", function () { - // save file using codova-plugin-file - let storageLocation = ""; - switch (device.platform) { - case "Android": - storageLocation = cordova.file.externalDataDirectory; - break; - case "iOS": - storageLocation = cordova.file.documentsDirectory; - break; + // browse all cells + for (const key in ws) { + // look for 1st row or 1st col + if (regExCellKey.test(key) === true) { + const regExCellName = new RegExp("help$"); + const v: string = ws[key].v; + // remove "help" from cell name's ending + if (regExCellName.test(v) === true) { + const newV = v.substr(0, v.length - 4); + ws[key].v = newV; + } + } } - const folderPath = storageLocation; - window.resolveLocalFileSystemURL(folderPath, (dir) => { - dir.getFile( - filename, - { create: true }, - (file) => { - file.createWriter( - function (fileWriter) { - fileWriter.write(blob); - fileWriter.onwriteend = () => { - const url = file.toURL(); - cordova.plugins.fileOpener2.open(url, mimeType, { - error: (err) => { - console.error(err); - alert(`No app found to handle type "${mimeType}"`); + + const wb: XLSX.WorkBook = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, "default"); + const wopts: any = { bookType: "xlsx", bookSST: false, type: "array" }; + const wbout = XLSX.write(wb, wopts); + AppComponent.download( + new Blob([wbout], { type: "application/octet-stream" }), + "cassiopee-results.xlsx", + "application/vnd.ms-excel" + ); + } + + /** + * Cordova-compatible file download method + * @see https://esstudio.site/2019/02/16/downloading-saving-and-opening-files-with-cordova.html + * @param blob binary object to download + * @param filename + * @param mimeType + */ + public static download(blob: Blob, filename: string, mimeType: string) { + if (window.cordova && cordova.platformId !== "browser") { + document.addEventListener("deviceready", function () { + // save file using codova-plugin-file + let storageLocation = ""; + switch (device.platform) { + case "Android": + storageLocation = cordova.file.externalDataDirectory; + break; + case "iOS": + storageLocation = cordova.file.documentsDirectory; + break; + } + const folderPath = storageLocation; + window.resolveLocalFileSystemURL(folderPath, (dir) => { + dir.getFile( + filename, + { create: true }, + (file) => { + file.createWriter( + function (fileWriter) { + fileWriter.write(blob); + fileWriter.onwriteend = () => { + const url = file.toURL(); + cordova.plugins.fileOpener2.open(url, mimeType, { + error: (err) => { + console.error(err); + alert(`No app found to handle type "${mimeType}"`); + }, + success: () => { + console.log("success with opening the file"); + } + }); + }; + fileWriter.onerror = function (err) { + console.error(err); + }; + }, + function (err) { + console.error(err); + } + ); }, - success: () => { - console.log("success with opening the file"); + (err) => { + console.error(err); } - }); - }; - fileWriter.onerror = function (err) { - console.error(err); - }; - }, - function (err) { + ); + }, (err) => { console.error(err); - } + } ); - }, - (err) => { - console.error(err); - } + }); + } else { + saveAs(blob, filename); + } + } + + /** + * Triggered at app startup. + * Preferences are loaded by app setup service + * @see ApplicationSetupService.construct() + */ + ngOnInit() { + this.formulaireService.addObserver(this); + this._innerWidth = window.innerWidth; + } + + ngOnDestroy() { + this.formulaireService.removeObserver(this); + } + + @HostListener("window:resize", ["$event"]) + onResize(event) { + // keep track of window size for navbar tabs arrangement + this._innerWidth = window.innerWidth; + } + + public get uitextSidenavNewCalc() { + return this.intlService.localizeText("INFO_MENU_NOUVELLE_CALC"); + } + + public get uitextSidenavParams() { + return this.intlService.localizeText("INFO_SETUP_TITLE"); + } + + public get uitextSidenavLoadSession() { + return this.intlService.localizeText("INFO_MENU_LOAD_SESSION_TITLE"); + } + + public get uitextSidenavSaveSession() { + return this.intlService.localizeText("INFO_MENU_SAVE_SESSION_TITLE"); + } + + public get uitextSidenavEmptySession() { + return this.intlService.localizeText("INFO_MENU_EMPTY_SESSION_TITLE"); + } + + public get uitextSidenavDiagram() { + return this.intlService.localizeText("INFO_MENU_DIAGRAM_TITLE"); + } + + public get uitextSidenavSessionProps() { + return this.intlService.localizeText("INFO_MENU_SESSION_PROPS"); + } + + public get uitextSidenavReportBug() { + return this.intlService.localizeText("INFO_MENU_REPORT_BUG"); + } + + public get uitextSidenavHelp() { + return this.intlService.localizeText("INFO_MENU_HELP_TITLE"); + } + + public get uitextSelectCalc() { + return this.intlService.localizeText("INFO_MENU_SELECT_CALC"); + } + + public get uitextSearch() { + return this.intlService.localizeText("INFO_MENU_RECHERCHE_MODULES"); + } + + public getCalculatorLabel(t: CalculatorType) { + return decodeHtml(this.formulaireService.getLocalisedTitleFromCalculatorType(t)); + } + + public getFullCalculatorTitle(calc: { title: string, type: CalculatorType, active?: boolean }): string { + return decodeHtml(calc.title + " (" + this.getCalculatorLabel(calc.type) + ")"); + } + + public get calculators() { + return this._calculators; + } + + public get currentFormId() { + return this._currentFormId; + } + + public get currentRoute(): string { + return this.router.url; + } + + public get currentCalcUid(): string { + return this.currentCalc ? this.currentCalc.uid : undefined; + } + + public setActiveCalc(uid: string) { + this._calculators.forEach((calc) => { + calc.active = (calc.uid === uid); + }); + // mark current calc for navbar menu + const index = this.getCalculatorIndexFromId(uid); + this.currentCalc = this._calculators[index]; + } + + /** + * Close calculator using middle click on tab + */ + public onMouseUp(event: any, uid: string) { + if (event.which === 2) { + const dialogRef = this.confirmCloseCalcDialog.open( + DialogConfirmCloseCalcComponent, + { + data: { + uid: uid + }, + disableClose: true + } ); - }, (err) => { - console.error(err); - } + dialogRef.afterClosed().subscribe(result => { + if (result) { + this.formulaireService.requestCloseForm(uid); + } + }); + } + } + + /** + * Returns true if sum of open calculator tabs witdh is lower than navbar + * available space (ie. if navbar is not overflowing), false otherwise + */ + public get tabsFitInNavbar() { + // manual breakpoints + // @WARNING keep in sync with .calculator-buttons sizes in app.component.scss + let tabsLimit = 0; + if (this._innerWidth > 480) { + tabsLimit = 3; + } + if (this._innerWidth > 640) { + tabsLimit = 4; + } + if (this._innerWidth > 800) { + tabsLimit = 6; + } + + const fits = this._calculators.length <= tabsLimit; + return fits; + } + + public get enableHeaderDoc(): boolean { + return this.currentRoute.includes("/list") && this._calculators.length === 0; + } + + public get enableSaveSessionMenu(): boolean { + return this._calculators.length > 0; + } + + public get enableModulesDiagramMenu(): boolean { + return this._calculators.length > 0; + } + + public get enableSessionPropertiesMenu(): boolean { + return this._calculators.length > 0; + } + + public get enableEmptySessionMenu(): boolean { + return this._calculators.length > 0; + } + + // interface Observer + + public update(sender: any, data: any): void { + if (sender instanceof FormulaireService) { + switch (data["action"]) { + case "createForm": + // add newly created form to calculators list + const f: FormulaireDefinition = data["form"]; + this._calculators.push( + { + "title": f.calculatorName, + "type": f.calculatorType, + "uid": f.uid + } + ); + + // abonnement en tant qu'observateur du nouveau formulaire + f.addObserver(this); + break; + + case "invalidFormId": + this.toList(); + break; + + case "currentFormChanged": + this._currentFormId = data["formId"]; + break; + + case "saveForm": + this.saveForm(data["form"]); + break; + + case "closeForm": + const form: FormulaireDefinition = data["form"]; + this.closeCalculator(form); + break; + } + } else if (sender instanceof FormulaireDefinition) { + switch (data["action"]) { + case "nameChanged": + this.updateCalculatorTitle(sender, data["name"]); + break; + } + } + } + + /** + * Returns true if a form having "formUid" as UID exists + * @param formId UID to look for + */ + private calculatorExists(formId: string): boolean { + return (this.getCalculatorIndexFromId(formId) > -1); + } + + private getCalculatorIndexFromId(formId: string) { + const index = this._calculators.reduce((resultIndex, calc, currIndex) => { + if (resultIndex === -1 && calc["uid"] === formId) { + resultIndex = currIndex; + } + return resultIndex; + }, -1); + + return index; + } + + private updateCalculatorTitle(f: FormulaireDefinition, title: string) { + const formIndex = this.getCalculatorIndexFromId(f.uid); + this._calculators[formIndex]["title"] = title; + } + + /** + * Saves a JSON serialised session file, for one or more calc modules + * @param calcList modules to save + * @param filename + */ + private saveSession(calcList: any[], filename: string) { + const session: string = this.buildSessionFile(calcList); + if (!isDevMode()) { + this.matomoTracker.trackEvent("userAction", "saveSession"); + } + this.formulaireService.downloadTextFile(session, filename); + } + + /** + * Builds a session file including Nubs, GUI-specific Nubs metadata, + * model settings, GUI settings + * @param calcList Nubs to save + */ + private buildSessionFile(calcList: any[]): string { + const serialiseOptions: { [key: string]: {} } = {}; + for (const c of calcList) { + if (c.selected) { + serialiseOptions[c.uid] = { // GUI-dependent metadata to add to the session file + title: c.title + }; + } + } + const settings = { + precision: this.appSetupService.computePrecision, + maxIterations: this.appSetupService.maxIterations, + displayPrecision: this.appSetupService.displayPrecision, + }; + return Session.getInstance().serialise(serialiseOptions, settings); + } + + /** + * Supprime un module de calcul **de l'interface** + * ATTENTION, ne supprime pas le module de calcul en mémoire ! + * Pour cela, utiliser FormulaireService.requestCloseForm(form.uid); + * @param form module de calcul à fermer + */ + private closeCalculator(form: FormulaireDefinition) { + const formId: string = form.uid; + + // désabonnement en tant qu'observateur + form.removeObserver(this); + // recherche du module de calcul correspondant à formId + const closedIndex = this.getCalculatorIndexFromId(formId); + + /* + * détermination du nouveau module de calcul à afficher : + * - celui après celui supprimé + * - ou celui avant celui supprimé si on supprime le dernier + */ + let newId = null; + const l = this._calculators.length; + if (l > 1) { + if (closedIndex === l - 1) { + newId = this._calculators[closedIndex - 1]["uid"]; + } else { + newId = this._calculators[closedIndex + 1]["uid"]; + } + } + + // suppression + + this._calculators = this._calculators.filter(calc => { + return formId !== calc["uid"]; + }); + + // MAJ affichage + + if (newId === null) { + this.toList(); + this._currentFormId = null; + } else { + this.toCalc(newId); + } + } + + private toList() { + this.router.navigate(["/list"]); + } + + public toDiagram() { + this.router.navigate(["/diagram"]); + } + + public toCalc(id: string) { + this.router.navigate(["/calculator", id]); + this.setActiveCalc(id); + setTimeout(() => { // @WARNING clodo trick to wait for Angular refresh + this.scrollToLatestQuicknav(id); + }, 50); + } + + /** + * restarts a fresh session by closing all calculators + */ + public emptySession() { + const dialogRef = this.confirmEmptySessionDialog.open( + DialogConfirmEmptySessionComponent, + { disableClose: true } + ); + dialogRef.afterClosed().subscribe(result => { + if (result) { + this.doEmptySession(); + } + }); + } + + public doEmptySession() { + // temporarily disable notifications + const oldNotifState = this.appSetupService.enableNotifications; + this.appSetupService.enableNotifications = false; + // close all calculators + for (const c of this._calculators) { + const form = this.formulaireService.getFormulaireFromId(c.uid); + this.formulaireService.requestCloseForm(form.uid); + } + // just to be sure, get rid of any Nub possibly stuck in session without any form attached + Session.getInstance().clear(); + Session.getInstance().documentation = ""; + // restore notifications + this.appSetupService.enableNotifications = oldNotifState; + } + + public loadSession() { + // création du dialogue de sélection des formulaires à sauver + const dialogRef = this.loadSessionDialog.open( + DialogLoadSessionComponent, + { disableClose: false } ); - }); - } else { - saveAs(blob, filename); - } - } - - /** clodo trick @see https://www.julesgaston.fr/encoder-decoder-entites-html-entities-javascript/ */ - public static decodeHTMLEntities(text: string): string { - const textArea = document.createElement("textarea"); - textArea.innerHTML = text; - return textArea.value; - } - - /** - * Triggered at app startup. - * Preferences are loaded by app setup service - * @see ApplicationSetupService.construct() - */ - ngOnInit() { - this.formulaireService.addObserver(this); - this.subscribeErrorService(); - this._innerWidth = window.innerWidth; - } - - ngOnDestroy() { - this.unsubscribeErrorService(); - this.formulaireService.removeObserver(this); - } - - @HostListener("window:resize", ["$event"]) - onResize(event) { - // keep track of window size for navbar tabs arrangement - this._innerWidth = window.innerWidth; - } - - public get uitextSidenavNewCalc() { - return this.intlService.localizeText("INFO_MENU_NOUVELLE_CALC"); - } - - public get uitextSidenavParams() { - return this.intlService.localizeText("INFO_SETUP_TITLE"); - } - - public get uitextSidenavLoadSession() { - return this.intlService.localizeText("INFO_MENU_LOAD_SESSION_TITLE"); - } - - public get uitextSidenavSaveSession() { - return this.intlService.localizeText("INFO_MENU_SAVE_SESSION_TITLE"); - } - - public get uitextSidenavEmptySession() { - return this.intlService.localizeText("INFO_MENU_EMPTY_SESSION_TITLE"); - } - - public get uitextSidenavDiagram() { - return this.intlService.localizeText("INFO_MENU_DIAGRAM_TITLE"); - } - - public get uitextSidenavSessionProps() { - return this.intlService.localizeText("INFO_MENU_SESSION_PROPS"); - } - - public get uitextSidenavReportBug() { - return this.intlService.localizeText("INFO_MENU_REPORT_BUG"); - } - - public get uitextSidenavHelp() { - return this.intlService.localizeText("INFO_MENU_HELP_TITLE"); - } - - public get uitextSelectCalc() { - return this.intlService.localizeText("INFO_MENU_SELECT_CALC"); - } - - public getCalculatorLabel(t: CalculatorType) { - return AppComponent.decodeHTMLEntities(this.formulaireService.getLocalisedTitleFromCalculatorType(t)); - } - - public getFullCalculatorTitle(calc: { title: string, type: CalculatorType, active?: boolean }): string { - return AppComponent.decodeHTMLEntities(calc.title + " (" + this.getCalculatorLabel(calc.type) + ")"); - } - - public get calculators() { - return this._calculators; - } - - public get currentFormId() { - return this._currentFormId; - } - - public get currentRoute(): string { - return this.router.url; - } - - public get currentCalcUid(): string { - return this.currentCalc ? this.currentCalc.uid : undefined; - } - - public setActiveCalc(uid: string) { - this._calculators.forEach((calc) => { - calc.active = (calc.uid === uid); - }); - // mark current calc for navbar menu - const index = this.getCalculatorIndexFromId(uid); - this.currentCalc = this._calculators[index]; - } - - /** - * Close calculator using middle click on tab - */ - public onMouseUp(event: any, uid: string) { - if (event.which === 2) { - const dialogRef = this.confirmCloseCalcDialog.open( - DialogConfirmCloseCalcComponent, - { - data: { - uid: uid + dialogRef.afterClosed().subscribe(result => { + if (result) { + if (result.emptySession) { + this.doEmptySession(); + } + this.loadSessionFile(result.file, result.calculators); + } + }); + } + + public loadSessionFile(f: File, info?: any) { + // notes merge detection: was there already some notes ? + const existingNotes = Session.getInstance().documentation; + // load + this.formulaireService.loadSession(f, info) + .then((data) => { + if (data.hasErrors) { + this.notificationsService.notify(this.intlService.localizeText("ERROR_PROBLEM_LOADING_SESSION"), 3500); + } else { + if (data.loaded && data.loaded.length > 0) { + if (!isDevMode()) { + this.matomoTracker.trackEvent("userAction", "loadSession"); + } + // notes merge detection: was there already some notes ? + const currentNotes = Session.getInstance().documentation; + if (existingNotes !== "" && currentNotes !== existingNotes) { + this.notificationsService.notify(this.intlService.localizeText("WARNING_SESSION_LOAD_NOTES_MERGED"), 3500); + } + // go to calc or diagram depending on what was loaded + if (data.loaded.length > 1) { + this.toDiagram(); + } else { + this.toCalc(data.loaded[0]); + } + } + } + }) + .catch((err) => { + this.notificationsService.notify(this.intlService.localizeText("ERROR_LOADING_SESSION"), 3500); + console.error("error loading session - ", err); + // rollback to ensure session is clean + this.doEmptySession(); + }); + } + + /** + * Demande au client d'envoyer un email (génère un lien mailto:), pré-rempli + * avec un texte standard, et le contenu de la session au format JSON + */ + public reportBug() { + const recipient = "bug@cassiopee.g-eau.fr"; + const subject = "[ISSUE] " + this.intlService.localizeText("INFO_REPORT_BUG_SUBJECT"); + let body = this.intlService.localizeText("INFO_REPORT_BUG_BODY"); + + // add session description + + // get all forms + const list = []; + for (const c of this._calculators) { + list.push({ + title: c.title, + uid: c.uid, + selected: true + }); + } + let session = this.buildSessionFile(list); + + // compress + session = pako.deflate(session, { to: "string" }); // gzip (zlib) + session = btoa(session); // base64 + + body += session + "\n"; + body = encodeURIComponent(body); + + const mailtoURL = `mailto:${recipient}?subject=${subject}&body=${body}`; + + // temporarily disable tab closing alert, as tab won't be closed for real + this.appSetupService.warnBeforeTabClose = false; + window.location.href = mailtoURL; + this.appSetupService.warnBeforeTabClose = true; + } + + public get revisionInfo(): any { + return { + jalhyd: { + date: jalhydDateRev, + version: jalhydVersion, }, - disableClose: true + nghyd: { + date: nghydDateRev, + version: nghydVersion + } + }; + } + + /** + * sauvegarde du/des formulaires + * @param form formulaire à sélectionner par défaut dans la liste + */ + public saveForm(form?: FormulaireDefinition) { + // liste des formulaires + const list = []; + for (const c of this._calculators) { + const uid = c["uid"]; + const nub = Session.getInstance().findNubByUid(uid); + let required = nub.getTargettedNubs().map((req) => { + return req.uid; + }); + required = required.filter( + (item, index) => required.indexOf(item) === index // deduplicate + ); + list.push({ + "children": nub.getChildren().map((child) => { + return child.uid; + }), + "requires": required, + "selected": form ? (uid === form.uid) : true, + "title": c["title"], + "uid": uid + }); } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - this.formulaireService.requestCloseForm(uid); - } - }); - } - } - - /** - * Returns true if sum of open calculator tabs witdh is lower than navbar - * available space (ie. if navbar is not overflowing), false otherwise - */ - public get tabsFitInNavbar() { - // manual breakpoints - // @WARNING keep in sync with .calculator-buttons sizes in app.component.scss - let tabsLimit = 0; - if (this._innerWidth > 480) { - tabsLimit = 3; - } - if (this._innerWidth > 640) { - tabsLimit = 4; - } - if (this._innerWidth > 800) { - tabsLimit = 6; - } - - const fits = this._calculators.length <= tabsLimit; - return fits; - } - - /** - * abonnement au service d'erreurs - */ - private subscribeErrorService() { - this.errorService.addObserver(this); - } - - private unsubscribeErrorService() { - this.errorService.removeObserver(this); - } - - public get enableHeaderDoc(): boolean { - return this.currentRoute === "/list" && this._calculators.length === 0; - } - - public get enableSaveSessionMenu(): boolean { - return this._calculators.length > 0; - } - - public get enableModulesDiagramMenu(): boolean { - return this._calculators.length > 0; - } - - public get enableSessionPropertiesMenu(): boolean { - return this._calculators.length > 0; - } - - public get enableEmptySessionMenu(): boolean { - return this._calculators.length > 0; - } - - // interface Observer - - update(sender: any, data: any): void { - if (sender instanceof FormulaireService) { - switch (data["action"]) { - case "createForm": - // add newly created form to calculators list - const f: FormulaireDefinition = data["form"]; - this._calculators.push( + // dialogue de sélection des formulaires à sauver + const dialogRef = this.saveSessionDialog.open( + DialogSaveSessionComponent, { - "title": f.calculatorName, - "type": f.calculatorType, - "uid": f.uid + data: { + calculators: list + }, + disableClose: false } - ); - - // abonnement en tant qu'observateur du nouveau formulaire - f.addObserver(this); - break; - - case "invalidFormId": - this.toList(); - break; - - case "currentFormChanged": - this._currentFormId = data["formId"]; - break; - - case "saveForm": - this.saveForm(data["form"]); - break; - - case "closeForm": - const form: FormulaireDefinition = data["form"]; - this.closeCalculator(form); - break; - } - } else if (sender instanceof FormulaireDefinition) { - switch (data["action"]) { - case "nameChanged": - this.updateCalculatorTitle(sender, data["name"]); - break; - } - } - } - - /** - * Returns true if a form having "formUid" as UID exists - * @param formId UID to look for - */ - private calculatorExists(formId: string): boolean { - return (this.getCalculatorIndexFromId(formId) > -1); - } - - private getCalculatorIndexFromId(formId: string) { - const index = this._calculators.reduce((resultIndex, calc, currIndex) => { - if (resultIndex === -1 && calc["uid"] === formId) { - resultIndex = currIndex; - } - return resultIndex; - }, -1); - - return index; - } - - private updateCalculatorTitle(f: FormulaireDefinition, title: string) { - const formIndex = this.getCalculatorIndexFromId(f.uid); - this._calculators[formIndex]["title"] = title; - } - - /** - * Saves a JSON serialised session file, for one or more calc modules - * @param calcList modules to save - * @param filename - */ - private saveSession(calcList: any[], filename: string) { - const session: string = this.buildSessionFile(calcList); - if (! isDevMode()) { - this.matomoTracker.trackEvent("userAction", "saveSession"); - } - this.formulaireService.downloadTextFile(session, filename); - } - - /** - * Builds a session file including Nubs, GUI-specific Nubs metadata, - * model settings, GUI settings - * @param calcList Nubs to save - */ - private buildSessionFile(calcList: any[]): string { - const serialiseOptions: { [key: string]: {} } = {}; - for (const c of calcList) { - if (c.selected) { - serialiseOptions[c.uid] = { // GUI-dependent metadata to add to the session file - title: c.title - }; - } - } - const settings = { - precision: this.appSetupService.computePrecision, - maxIterations: this.appSetupService.maxIterations, - displayPrecision: this.appSetupService.displayPrecision, - }; - return Session.getInstance().serialise(serialiseOptions, settings); - } - - /** - * Supprime un module de calcul **de l'interface** - * ATTENTION, ne supprime pas le module de calcul en mémoire ! - * Pour cela, utiliser FormulaireService.requestCloseForm(form.uid); - * @param form module de calcul à fermer - */ - private closeCalculator(form: FormulaireDefinition) { - const formId: string = form.uid; - - // désabonnement en tant qu'observateur - form.removeObserver(this); - // recherche du module de calcul correspondant à formId - const closedIndex = this.getCalculatorIndexFromId(formId); - - /* - * détermination du nouveau module de calcul à afficher : - * - celui après celui supprimé - * - ou celui avant celui supprimé si on supprime le dernier + ); + dialogRef.afterClosed().subscribe(result => { + if (result) { + let name = result.filename; + + // ajout extension ".json" + const re = /.+\.json/; + const match = re.exec(name.toLowerCase()); + if (match === null) { + name = name + ".json"; + } + + this.saveSession(result.calculators, name); + } + }); + } + + /** + * Moves the view to one of the Quicknav anchors in the page, and saves this anchor + * as the latest visited, in _calculators list + * @param itemId a Quicknav anchor id (ex: "input" or "results") */ - let newId = null; - const l = this._calculators.length; - if (l > 1) { - if (closedIndex === l - 1) { - newId = this._calculators[closedIndex - 1]["uid"]; - } else { - newId = this._calculators[closedIndex + 1]["uid"]; - } - } - - // suppression - - this._calculators = this._calculators.filter(calc => { - return formId !== calc["uid"]; - }); - - // MAJ affichage - - if (newId === null) { - this.toList(); - this._currentFormId = null; - } else { - this.toCalc(newId); - } - } - - private toList() { - this.router.navigate(["/list"]); - } - - public toDiagram() { - this.router.navigate(["/diagram"]); - } - - public toCalc(id: string) { - this.router.navigate(["/calculator", id]); - this.setActiveCalc(id); - setTimeout(() => { // @WARNING clodo trick to wait for Angular refresh - this.scrollToLatestQuicknav(id); - }, 50); - } - - /** - * restarts a fresh session by closing all calculators - */ - public emptySession() { - const dialogRef = this.confirmEmptySessionDialog.open( - DialogConfirmEmptySessionComponent, - { disableClose: true } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - this.doEmptySession(); - } - }); - } - - public doEmptySession() { - // temporarily disable notifications - const oldNotifState = this.appSetupService.enableNotifications; - this.appSetupService.enableNotifications = false; - // close all calculators - for (const c of this._calculators) { - const form = this.formulaireService.getFormulaireFromId(c.uid); - this.formulaireService.requestCloseForm(form.uid); - } - // just to be sure, get rid of any Nub possibly stuck in session without any form attached - Session.getInstance().clear(); - Session.getInstance().documentation = ""; - // restore notifications - this.appSetupService.enableNotifications = oldNotifState; - } - - public loadSession() { - // création du dialogue de sélection des formulaires à sauver - const dialogRef = this.loadSessionDialog.open( - DialogLoadSessionComponent, - { disableClose: false } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - if (result.emptySession) { - this.doEmptySession(); + public scrollToQuicknav(itemId: string, behavior: ScrollBehavior = "smooth") { + const idx = this.getCalculatorIndexFromId(this.currentFormId); + let succeeded = false; + if (idx > -1) { + const id = QuicknavComponent.prefix + itemId; + // Scroll https://stackoverflow.com/a/56391657/5986614 + const element = document.getElementById(id); + if (element && element.offsetParent !== null) { // offsetParent is null when element is not visible + const yCoordinate = element.getBoundingClientRect().top + window.pageYOffset; + window.scrollTo({ + top: yCoordinate - 60, // substract a little more than navbar height + behavior: behavior + }); + succeeded = true; + // Save position + this._calculators[idx].latestAnchor = itemId; + } } - this.loadSessionFile(result.file, result.calculators); - } - }); - } - - public loadSessionFile(f: File, info?: any) { - // notes merge detection: was there already some notes ? - const existingNotes = Session.getInstance().documentation; - // load - this.formulaireService.loadSession(f, info) - .then((data) => { - if (data.hasErrors) { - this.notificationsService.notify(this.intlService.localizeText("ERROR_PROBLEM_LOADING_SESSION"), 3500); - } else { - if (data.loaded && data.loaded.length > 0) { - if (! isDevMode()) { - this.matomoTracker.trackEvent("userAction", "loadSession"); - } - // notes merge detection: was there already some notes ? - const currentNotes = Session.getInstance().documentation; - if (existingNotes !== "" && currentNotes !== existingNotes) { - this.notificationsService.notify(this.intlService.localizeText("WARNING_SESSION_LOAD_NOTES_MERGED"), 3500); - } - // go to calc or diagram depending on what was loaded - if (data.loaded.length > 1) { - this.toDiagram(); - } else { - this.toCalc(data.loaded[0]); - } + if (!succeeded) { + // throw an error so that caller CalculatorComponent.scrollToResults() + // switches to plan B, in case we're trying to scroll to results pane + // after a module is calculated + throw Error("unable to scroll to quicknav anchor"); } - } - }) - .catch((err) => { - this.notificationsService.notify(this.intlService.localizeText("ERROR_LOADING_SESSION"), 3500); - console.error("error loading session - ", err); - // rollback to ensure session is clean - this.doEmptySession(); - }); - } - - /** - * Demande au client d'envoyer un email (génère un lien mailto:), pré-rempli - * avec un texte standard, et le contenu de la session au format JSON - */ - public reportBug() { - const recipient = "bug@cassiopee.g-eau.fr"; - const subject = "[ISSUE] " + this.intlService.localizeText("INFO_REPORT_BUG_SUBJECT"); - let body = this.intlService.localizeText("INFO_REPORT_BUG_BODY"); - - // add session description - - // get all forms - const list = []; - for (const c of this._calculators) { - list.push({ - title: c.title, - uid: c.uid, - selected: true - }); - } - let session = this.buildSessionFile(list); - - // compress - session = pako.deflate(session, { to: "string" }); // gzip (zlib) - session = btoa(session); // base64 - - body += session + "\n"; - body = encodeURIComponent(body); - - const mailtoURL = `mailto:${recipient}?subject=${subject}&body=${body}`; - - // temporarily disable tab closing alert, as tab won't be closed for real - this.appSetupService.warnBeforeTabClose = false; - window.location.href = mailtoURL; - this.appSetupService.warnBeforeTabClose = true; - } - - public get revisionInfo(): any { - return { - jalhyd: { - date: jalhydDateRev, - version: jalhydVersion, - }, - nghyd: { - date: nghydDateRev, - version: nghydVersion - } - }; - } - - /** - * sauvegarde du/des formulaires - * @param form formulaire à sélectionner par défaut dans la liste - */ - public saveForm(form?: FormulaireDefinition) { - // liste des formulaires - const list = []; - for (const c of this._calculators) { - const uid = c["uid"]; - const nub = Session.getInstance().findNubByUid(uid); - let required = nub.getTargettedNubs().map((req) => { - return req.uid; - }); - required = required.filter( - (item, index) => required.indexOf(item) === index // deduplicate - ); - list.push({ - "children": nub.getChildren().map((child) => { - return child.uid; - }), - "requires": required, - "selected": form ? (uid === form.uid) : true, - "title": c["title"], - "uid": uid - }); - } - // dialogue de sélection des formulaires à sauver - const dialogRef = this.saveSessionDialog.open( - DialogSaveSessionComponent, - { - data: { - calculators: list - }, - disableClose: false - } - ); - dialogRef.afterClosed().subscribe(result => { - if (result) { - let name = result.filename; - - // ajout extension ".json" - const re = /.+\.json/; - const match = re.exec(name.toLowerCase()); - if (match === null) { - name = name + ".json"; + } + + /** + * Moves the view to the latest known Quicknav anchor of the current module + */ + public scrollToLatestQuicknav(formId: string) { + // Get position + const idx = this.getCalculatorIndexFromId(formId); + if (idx > -1) { + const itemId = this._calculators[idx].latestAnchor; + // Scroll + if (itemId) { + this.scrollToQuicknav(itemId, "auto"); + } } + } - this.saveSession(result.calculators, name); - } - }); - } - - /** - * Moves the view to one of the Quicknav anchors in the page, and saves this anchor - * as the latest visited, in _calculators list - * @param itemId a Quicknav anchor id (ex: "input" or "results") - */ - public scrollToQuicknav(itemId: string, behavior: ScrollBehavior = "smooth") { - const idx = this.getCalculatorIndexFromId(this.currentFormId); - let succeeded = false; - if (idx > -1) { - const id = QuicknavComponent.prefix + itemId; - // Scroll https://stackoverflow.com/a/56391657/5986614 - const element = document.getElementById(id); - if (element && element.offsetParent !== null) { // offsetParent is null when element is not visible - const yCoordinate = element.getBoundingClientRect().top + window.pageYOffset; - window.scrollTo({ - top: yCoordinate - 60, // substract a little more than navbar height - behavior: behavior - }); - succeeded = true; - // Save position - this._calculators[idx].latestAnchor = itemId; - } - } - if (! succeeded) { - // throw an error so that caller CalculatorComponent.scrollToResults() - // switches to plan B, in case we're trying to scroll to results pane - // after a module is calculated - throw Error("unable to scroll to quicknav anchor"); - } - } - - /** - * Moves the view to the latest known Quicknav anchor of the current module - */ - public scrollToLatestQuicknav(formId: string) { - // Get position - const idx = this.getCalculatorIndexFromId(formId); - if (idx > -1) { - const itemId = this._calculators[idx].latestAnchor; - // Scroll - if (itemId) { - this.scrollToQuicknav(itemId, "auto"); - } - } - } - - public dropCalcButton(event: CdkDragDrop<string[]>) { - moveItemInArray(this.calculators, event.previousIndex, event.currentIndex); - } - - public get docIndexPath(): string { - return "assets/docs/" + this.appSetupService.language + "/index.html"; - } - - /** - * Returns a string representing the running platform : - * "cordova", "electron", or "browser" - */ - public getRunningPlatform(): string { - let runningPlatform = "browser"; - if (navigator.userAgent.toLowerCase().indexOf("electron") > -1) { - runningPlatform = "electron"; - } else if (window.cordova) { - runningPlatform = "cordova"; - } - // console.log(">> running platform: ", runningPlatform); - return runningPlatform; - } - - /** - * détection de la fermeture de la page/navigateur et demande de confirmation - */ - @HostListener("window:beforeunload", [ "$event" ]) confirmExit($event) { - if ( - this.appSetupService.warnBeforeTabClose - && environment.production // otherwise prevents dev server to reload app after recompiling - ) { - // affecter une valeur différente de null provoque l'affichage d'un dialogue de confirmation, mais le texte n'est pas affiché - $event.returnValue = "Your data will be lost !"; + public dropCalcButton(event: CdkDragDrop<string[]>) { + moveItemInArray(this.calculators, event.previousIndex, event.currentIndex); } - } - @HostListener("keydown", [ "$event" ]) onKeydown(event: any) { - if (event.which === 38 || event.which === 40) { // up / down arrow - if (event.srcElement.type === "number") { - event.preventDefault(); - } + public get docIndexPath(): string { + return "assets/docs/" + this.appSetupService.language + "/index.html"; + } + + /** + * Returns a string representing the running platform : + * "cordova", "electron", or "browser" + */ + public getRunningPlatform(): string { + let runningPlatform = "browser"; + if (navigator.userAgent.toLowerCase().indexOf("electron") > -1) { + runningPlatform = "electron"; + } else if (window.cordova) { + runningPlatform = "cordova"; + } + // console.log(">> running platform: ", runningPlatform); + return runningPlatform; + } + + /** + * détection de la fermeture de la page/navigateur et demande de confirmation + */ + @HostListener("window:beforeunload", ["$event"]) confirmExit($event) { + if ( + this.appSetupService.warnBeforeTabClose + && environment.production // otherwise prevents dev server to reload app after recompiling + ) { + // affecter une valeur différente de null provoque l'affichage d'un dialogue de confirmation, mais le texte n'est pas affiché + $event.returnValue = "Your data will be lost !"; + } + } + + @HostListener("keydown", ["$event"]) onKeydown(event: any) { + if (event.which === 38 || event.which === 40) { // up / down arrow + if (event.srcElement.type === "number") { + event.preventDefault(); + } + } } - } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 15ede0e0912e30acb3ce2d1644734dd059cb6b76..8ed21e34314d770e30a89a08863990ea05c1286c 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -34,10 +34,10 @@ import { MarkdownModule, MarkedOptions } from "ngx-markdown"; import { FlexLayoutModule } from "@angular/flex-layout"; import { - CustomBreakPointsProvider, - FlexGtXxsShowHideDirective, - FlexXxsShowHideDirective, - FlexLtXsShowHideDirective + CustomBreakPointsProvider, + FlexGtXxsShowHideDirective, + FlexXxsShowHideDirective, + FlexLtXsShowHideDirective } from "./directives/flex-xxs.directive"; import { HttpClientModule } from "@angular/common/http"; @@ -72,17 +72,18 @@ import { SectionCanvasComponent } from "./components/section-canvas/section-canv import { RemousResultsComponent } from "./components/remous-results/remous-results.component"; import { ResultsChartComponent } from "./components/results-chart/results-chart.component"; import { PabResultsComponent } from "./components/pab-results/pab-results.component"; +import { VerificateurResultsComponent } from "./components/verificateur-results/verificateur-results.component"; import { PabResultsTableComponent } from "./components/pab-results/pab-results-table.component"; import { ChartTypeSelectComponent } from "./components/results-chart/chart-type.component"; -import { LogComponent } from "./components/log/log.component"; import { CalculatorListComponent } from "./components/calculator-list/calculator-list.component"; import { ApplicationSetupComponent } from "./components/app-setup/app-setup.component"; import { BaseParamInputComponent } from "./components/base-param-input/base-param-input.component"; import { FixedResultsComponent } from "./components/fixedvar-results/fixed-results.component"; import { VarResultsComponent } from "./components/fixedvar-results/var-results.component"; +import { LogComponent } from "./components/log/log.component"; import { LogEntryComponent } from "./components/log-entry/log-entry.component"; +import { LogDrawerComponent } from "./components/log-drawer/log-drawer.component"; import { ParamLinkComponent } from "./components/param-link/param-link.component"; -import { SelectModelFieldLineComponent } from "./components/select-model-field-line/select-model-field-line.component"; import { PabProfileChartComponent } from "./components/pab-profile-chart/pab-profile-chart.component"; import { PabTableComponent } from "./components/pab-table/pab-table.component"; import { VariableResultsSelectorComponent } from "./components/variable-results-selector/variable-results-selector.component"; @@ -101,166 +102,171 @@ import { DialogEditParamComputedComponent } from "./components/dialog-edit-param import { DialogEditParamValuesComponent } from "./components/dialog-edit-param-values/dialog-edit-param-values.component"; import { DialogGeneratePABComponent } from "./components/dialog-generate-pab/dialog-generate-pab.component"; import { DialogGeneratePARSimulationComponent } from "./components/dialog-generate-par-simulation/dialog-generate-par-simulation.component"; +import { DialogLoadPredefinedEspeceComponent } from "./components/dialog-load-predefined-espece/dialog-load-predefined-espece.component"; import { DialogLoadSessionComponent } from "./components/dialog-load-session/dialog-load-session.component"; import { DialogLogEntriesDetailsComponent } from "./components/dialog-log-entries-details/dialog-log-entries-details.component"; import { DialogSaveSessionComponent } from "./components/dialog-save-session/dialog-save-session.component"; import { JalhydAsyncModelValidationDirective } from "./directives/jalhyd-async-model-validation.directive"; import { - JalhydModelValidationDirective, - JalhydModelValidationMinDirective, - JalhydModelValidationMaxDirective, - JalhydModelValidationStepDirective + JalhydModelValidationDirective, + JalhydModelValidationMinDirective, + JalhydModelValidationMaxDirective, + JalhydModelValidationStepDirective } from "./directives/jalhyd-model-validation.directive"; import { ImmediateErrorStateMatcher } from "./formulaire/immediate-error-state-matcher"; const appRoutes: Routes = [ - { path: "list", component: CalculatorListComponent }, - { path: "calculator/:uid", component: GenericCalculatorComponent }, - { path: "setup", component: ApplicationSetupComponent }, - { path: "diagram", component: ModulesDiagramComponent }, - { path: "properties", component: SessionPropertiesComponent }, - { path: "**", redirectTo: "list", pathMatch: "full" } + { path: "list/search", component: CalculatorListComponent }, + { path: "list", component: CalculatorListComponent }, + { path: "calculator/:uid", component: GenericCalculatorComponent }, + { path: "setup", component: ApplicationSetupComponent }, + { path: "diagram", component: ModulesDiagramComponent }, + { path: "properties", component: SessionPropertiesComponent }, + { path: "**", redirectTo: "list", pathMatch: "full" } ]; @NgModule({ - imports: [ - FormsModule, // <-- import the FormsModule before binding with [(ngModel)] - ReactiveFormsModule, - BrowserAnimationsModule, - BrowserModule, - ChartModule, - DragDropModule, - FlexLayoutModule, - HotkeyModule.forRoot(), - HttpClientModule, - MarkdownModule.forRoot({ - markedOptions: { - provide: MarkedOptions, - useValue: { - gfm: true, - breaks: true + imports: [ + FormsModule, // <-- import the FormsModule before binding with [(ngModel)] + ReactiveFormsModule, + BrowserAnimationsModule, + BrowserModule, + ChartModule, + DragDropModule, + FlexLayoutModule, + HotkeyModule.forRoot(), + HttpClientModule, + MarkdownModule.forRoot({ + markedOptions: { + provide: MarkedOptions, + useValue: { + gfm: true, + breaks: true + } + } + }), + MatBadgeModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatCheckboxModule, + MatDialogModule, + MaterialFileInputModule, + MatFormFieldModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatProgressBarModule, + MatRadioModule, + MatSelectModule, + MatSidenavModule, + MatSnackBarModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, + MatomoModule, + RouterModule.forRoot( + appRoutes, + { + useHash: true, // prevents reloading whole app when typing url in browser's navigation bar + enableTracing: false // debugging purposes only + } + ), + StorageServiceModule, + TableModule, + KonamiModule + ], + declarations: [ // composants, pipes et directives + AppComponent, + ApplicationSetupComponent, + BaseParamInputComponent, + CalcCanvasComponent, + CalculatorListComponent, + CalculatorNameComponent, + CalculatorResultsComponent, + DialogConfirmCloseCalcComponent, + DialogConfirmEmptySessionComponent, + DialogEditPabComponent, + DialogEditParamComputedComponent, + DialogEditParamValuesComponent, + DialogGeneratePABComponent, + DialogGeneratePARSimulationComponent, + DialogLoadPredefinedEspeceComponent, + DialogLoadSessionComponent, + DialogLogEntriesDetailsComponent, + DialogSaveSessionComponent, + FieldSetComponent, + FieldsetContainerComponent, + FixedResultsComponent, + FixedVarResultsComponent, + FlexGtXxsShowHideDirective, + FlexLtXsShowHideDirective, + FlexXxsShowHideDirective, + GenericCalculatorComponent, + ChartTypeSelectComponent, + JalhydAsyncModelValidationDirective, + JalhydModelValidationDirective, + JalhydModelValidationMinDirective, + JalhydModelValidationMaxDirective, + JalhydModelValidationStepDirective, + JetResultsComponent, + JetTrajectoryChartComponent, + LogComponent, + LogDrawerComponent, + LogEntryComponent, + ModulesDiagramComponent, + NgParamInputComponent, + PabProfileChartComponent, + PabResultsComponent, + VerificateurResultsComponent, + PabResultsTableComponent, + PabTableComponent, + VariableResultsSelectorComponent, + MacrorugoCompoundResultsComponent, + MacrorugoCompoundResultsTableComponent, + ParamComputedComponent, + ParamFieldLineComponent, + ParamLinkComponent, + ParamValuesComponent, + QuicknavComponent, + RemousResultsComponent, + ResultsChartComponent, + SectionCanvasComponent, + SectionResultsComponent, + SelectFieldLineComponent, + SessionPropertiesComponent, + VarResultsComponent + ], + entryComponents: [ + DialogConfirmCloseCalcComponent, + DialogConfirmEmptySessionComponent, + DialogEditPabComponent, + DialogEditParamComputedComponent, + DialogEditParamValuesComponent, + DialogGeneratePABComponent, + DialogGeneratePARSimulationComponent, + DialogLoadPredefinedEspeceComponent, + DialogSaveSessionComponent, + DialogLoadSessionComponent, + DialogLogEntriesDetailsComponent + ], + providers: [ // services + ApplicationSetupService, + CustomBreakPointsProvider, + FormulaireService, + HttpService, + I18nService, + NotificationsService, + { + provide: ErrorStateMatcher, + useClass: ImmediateErrorStateMatcher } - } - }), - MatBadgeModule, - MatButtonModule, - MatButtonToggleModule, - MatCardModule, - MatCheckboxModule, - MatDialogModule, - MaterialFileInputModule, - MatFormFieldModule, - MatIconModule, - MatInputModule, - MatListModule, - MatMenuModule, - MatProgressBarModule, - MatRadioModule, - MatSelectModule, - MatSidenavModule, - MatSnackBarModule, - MatTableModule, - MatTabsModule, - MatToolbarModule, - MatTooltipModule, - MatomoModule, - RouterModule.forRoot( - appRoutes, - { - useHash: true, // prevents reloading whole app when typing url in browser's navigation bar - enableTracing: false // debugging purposes only - } - ), - StorageServiceModule, - TableModule, - KonamiModule - ], - declarations: [ // composants, pipes et directives - AppComponent, - ApplicationSetupComponent, - BaseParamInputComponent, - CalcCanvasComponent, - CalculatorListComponent, - CalculatorNameComponent, - CalculatorResultsComponent, - DialogConfirmCloseCalcComponent, - DialogConfirmEmptySessionComponent, - DialogEditPabComponent, - DialogEditParamComputedComponent, - DialogEditParamValuesComponent, - DialogGeneratePABComponent, - DialogGeneratePARSimulationComponent, - DialogLoadSessionComponent, - DialogLogEntriesDetailsComponent, - DialogSaveSessionComponent, - FieldSetComponent, - FieldsetContainerComponent, - FixedResultsComponent, - FixedVarResultsComponent, - FlexGtXxsShowHideDirective, - FlexLtXsShowHideDirective, - FlexXxsShowHideDirective, - GenericCalculatorComponent, - ChartTypeSelectComponent, - JalhydAsyncModelValidationDirective, - JalhydModelValidationDirective, - JalhydModelValidationMinDirective, - JalhydModelValidationMaxDirective, - JalhydModelValidationStepDirective, - JetResultsComponent, - JetTrajectoryChartComponent, - LogComponent, - LogEntryComponent, - ModulesDiagramComponent, - NgParamInputComponent, - PabProfileChartComponent, - PabResultsComponent, - PabResultsTableComponent, - PabTableComponent, - VariableResultsSelectorComponent, - MacrorugoCompoundResultsComponent, - MacrorugoCompoundResultsTableComponent, - ParamComputedComponent, - ParamFieldLineComponent, - ParamLinkComponent, - ParamValuesComponent, - QuicknavComponent, - RemousResultsComponent, - ResultsChartComponent, - SectionCanvasComponent, - SectionResultsComponent, - SelectFieldLineComponent, - SelectModelFieldLineComponent, - SessionPropertiesComponent, - VarResultsComponent - ], - entryComponents: [ - DialogConfirmCloseCalcComponent, - DialogConfirmEmptySessionComponent, - DialogEditPabComponent, - DialogEditParamComputedComponent, - DialogEditParamValuesComponent, - DialogGeneratePABComponent, - DialogGeneratePARSimulationComponent, - DialogSaveSessionComponent, - DialogLoadSessionComponent, - DialogLogEntriesDetailsComponent - ], - providers: [ // services - ApplicationSetupService, - CustomBreakPointsProvider, - FormulaireService, - HttpService, - I18nService, - NotificationsService, - { - provide: ErrorStateMatcher, - useClass: ImmediateErrorStateMatcher - } - ], - schemas: [ NO_ERRORS_SCHEMA ], - bootstrap: [ AppComponent ] + ], + schemas: [NO_ERRORS_SCHEMA], + bootstrap: [AppComponent] }) export class AppModule { } diff --git a/src/app/calculators/bief/en.json b/src/app/calculators/bief/en.json index 30465b07a001799b439f37cbd77f79b5c55a469c..83ef6c03f737582786d59d38359f40974a6e617a 100644 --- a/src/app/calculators/bief/en.json +++ b/src/app/calculators/bief/en.json @@ -26,8 +26,8 @@ "fs_condlim": "Boundary conditions", "Q": "Upstream flow", "S": "Wet surface", - "fs_param_calc": "Calculation parameters", "Dx": "Discretisation step", + "fs_param_calc": "Calculation parameters", "Z1": "Upstream water elevation", "Z2": "Downstream water elevation", "ZF1": "Upstream bottom elevation", diff --git a/src/app/calculators/cloisons/en.json b/src/app/calculators/cloisons/en.json index 04c177e8de12de77d697868a1924473b415a023d..af443e0f84fa4abc8864354ad601a33c380e2747 100644 --- a/src/app/calculators/cloisons/en.json +++ b/src/app/calculators/cloisons/en.json @@ -2,15 +2,9 @@ "Q": "Total discharge", "P": "Sill", "W": "Gate opening", - "ZR": "Upstream bed elevation", - "PB": "Pool mean depth", - "h1": "Head", - "UNIT_PV": "W/m³", "UNIT_Q": "m³/s", "UNIT_YMOY": "m", - "UNIT_ZRAM": "m", - "UNIT_ZRMB": "m", "UNIT_ZDV": "m", "UNIT_P": "m" } \ No newline at end of file diff --git a/src/app/calculators/cloisons/fr.json b/src/app/calculators/cloisons/fr.json index ec7b047726bd0e962c3bbfd59578330922535922..54fed4e39815913c00d0f8200c4262d758e74e2c 100644 --- a/src/app/calculators/cloisons/fr.json +++ b/src/app/calculators/cloisons/fr.json @@ -3,11 +3,8 @@ "P": "Pelle", "W": "Ouverture de vanne", - "UNIT_PV": "W/m³", "UNIT_Q": "m³/s", "UNIT_YMOY": "m", - "UNIT_ZRAM": "m", - "UNIT_ZRMB": "m", "UNIT_ZDV": "m", "UNIT_P": "m" } \ No newline at end of file diff --git a/src/app/calculators/concentrationblocs/en.json b/src/app/calculators/concentrationblocs/en.json index 8c407122e1f1e9fa1ef79987c701b7eb3d40ba12..0fa3e17b5d0ec968c5134a747bfa299fbb0615f2 100644 --- a/src/app/calculators/concentrationblocs/en.json +++ b/src/app/calculators/concentrationblocs/en.json @@ -13,10 +13,5 @@ "AXB": "Pattern width, downwards harmonization", "AXH": "Pattern width, upwards harmonization", "CB": "Concentration, downwards harmonization", - "CH": "Concentration, upwards harmonization", - - "UNIT_AX": "m", - "UNIT_R": "m", - "UNIT_AXB": "m", - "UNIT_AXH": "m" + "CH": "Concentration, upwards harmonization" } diff --git a/src/app/calculators/concentrationblocs/fr.json b/src/app/calculators/concentrationblocs/fr.json index 1d0a9f3a515908911bf275ae99fb5f59c308a5f5..c8967f33ec676baaa9ccb5866181cb07ae416399 100644 --- a/src/app/calculators/concentrationblocs/fr.json +++ b/src/app/calculators/concentrationblocs/fr.json @@ -13,10 +13,5 @@ "AXB": "Largeur d'un motif, harmonisation vers le bas", "AXH": "Largeur d'un motif, harmonisation vers le haut", "CB": "Concentration, harmonisation vers le bas", - "CH": "Concentration, harmonisation vers le haut", - - "UNIT_AX": "m", - "UNIT_R": "m", - "UNIT_AXB": "m", - "UNIT_AXH": "m" + "CH": "Concentration, harmonisation vers le haut" } diff --git a/src/app/calculators/conduitedistributrice/en.json b/src/app/calculators/conduitedistributrice/en.json index 04771763c43a2698620788ba17a6dc669ddc029b..ab51a056237c4116e51bba59cde4393fa1db189e 100644 --- a/src/app/calculators/conduitedistributrice/en.json +++ b/src/app/calculators/conduitedistributrice/en.json @@ -1,6 +1,5 @@ { "fs_hydraulique": "Hydraulic features", - "Q": "Flow", "D": "Pipe diameter", "J": "Head drop", "Lg": "Pipe length", diff --git a/src/app/calculators/courberemous/en.json b/src/app/calculators/courberemous/en.json index f3d964669d796c959eb00a274e760dfd9728db58..c238adfb5a991db7374b0e71fceb2536c7484eaa 100644 --- a/src/app/calculators/courberemous/en.json +++ b/src/app/calculators/courberemous/en.json @@ -20,7 +20,6 @@ "fs_condlim": "Boundary conditions", "Q": "Upstream flow", "S": "Wet surface", - "fs_param_calc": "Calculation parameters", "Dx": "Discretisation step", "select_resolution": "Resolution method", "Z1": "Upstream water elevation", @@ -54,7 +53,7 @@ "TARGET_Hsc": "Critical head (m)", "TARGET_B": "Surface width (m)", "TARGET_P": "Wetted perimeter (m)", - "TARGET_S": "Wetted area (m2)", + "TARGET_S": "Wet surface (m2)", "TARGET_R": "Hydraulic radius (m)", "TARGET_V": "Average speed (m/s)", "TARGET_Fr": "Froude number", diff --git a/src/app/calculators/dever/en.json b/src/app/calculators/dever/en.json index 4e82de4dd58b9d7081698655d69d81f7983df335..2f43fbfd8f65d0db7ce70a2f27fcf15c5f25cb72 100644 --- a/src/app/calculators/dever/en.json +++ b/src/app/calculators/dever/en.json @@ -5,7 +5,5 @@ "L": "Width of the weir", "Cd": "Discharge coefficient", - "UNIT_Q": "m³/s", - "UNIT_EC": "m", - "UNIT_V": "m/s" + "UNIT_Q": "m³/s" } \ No newline at end of file diff --git a/src/app/calculators/dever/fr.json b/src/app/calculators/dever/fr.json index 78cdc5ad68c7b9a5984218cc452647ad1978c0d4..4a5f1a8d7e6a2bb695e30610ee2e576d6b327691 100644 --- a/src/app/calculators/dever/fr.json +++ b/src/app/calculators/dever/fr.json @@ -5,7 +5,5 @@ "L": "Largeur du déversoir", "Cd": "Coefficient de débit", - "UNIT_Q": "m³/s", - "UNIT_EC": "m", - "UNIT_V": "m/s" + "UNIT_Q": "m³/s" } \ No newline at end of file diff --git a/src/app/calculators/espece/config.json b/src/app/calculators/espece/config.json new file mode 100644 index 0000000000000000000000000000000000000000..83e69323d30d26c5a86ec0bea41d94bad9173268 --- /dev/null +++ b/src/app/calculators/espece/config.json @@ -0,0 +1,100 @@ +[ + { + "id": "fs_param_pab", + "type": "fieldset", + "fields": [ + { + "id": "PVMaxPrec", + "allowEmpty": true + }, + { + "id": "PVMaxLim", + "allowEmpty": true + }, + { + "id": "HMin", + "allowEmpty": true + }, + { + "id": "select_divingjetsupported", + "type": "select", + "property": "divingJetSupported", + "default": "NOT_SUPPORTED" + } + ] + }, + { + "id": "fs_param_pab_s", + "type": "fieldset", + "fields": [ + { + "id": "DHMaxS", + "allowEmpty": true + }, + { + "id": "BMin", + "allowEmpty": true + }, + { + "id": "PMinS", + "allowEmpty": true + }, + { + "id": "LMinS", + "allowEmpty": true + } + ] + }, + { + "id": "fs_param_pab_p", + "type": "fieldset", + "fields": [ + { + "id": "DHMaxP", + "allowEmpty": true + }, + { + "id": "PMinP", + "allowEmpty": true + }, + { + "id": "LMinP", + "allowEmpty": true + } + ] + }, + { + "id": "fs_param_pam", + "type": "fieldset", + "fields": [ + { + "id": "YMin", + "allowEmpty": true + }, + { + "id": "VeMax", + "allowEmpty": true + } + ] + }, + { + "id": "fs_param_par", + "type": "fieldset", + "fields": [ + { + "id": "YMinSB", + "allowEmpty": true + }, + { + "id": "YMinPB", + "allowEmpty": true + } + ] + }, + { + "type": "options", + "help": "verification/espece.html", + "selectIds": [ "select_divingjetsupported" ], + "calculateDisabled": true + } +] diff --git a/src/app/calculators/espece/en.json b/src/app/calculators/espece/en.json new file mode 100644 index 0000000000000000000000000000000000000000..f88069bf4d6d30ec6fb11d65bb8c9bc9e2cf2937 --- /dev/null +++ b/src/app/calculators/espece/en.json @@ -0,0 +1,12 @@ +{ + "fs_param_pab": "Fish ladders", + "fs_param_pab_s": "Fish ladders, surface jets or orifices", + "fs_param_pab_p": "Fish ladders, diving jets", + "fs_param_pam": "Rock-ramp fishpasses", + "fs_param_par": "Baffle fishways", + + "select_divingjetsupported": "Diving jets support", + + "DIVINGJETSUPPORTED_0": "Not supported", + "DIVINGJETSUPPORTED_1": "Supported" +} diff --git a/src/app/calculators/espece/fr.json b/src/app/calculators/espece/fr.json new file mode 100644 index 0000000000000000000000000000000000000000..98bfd5344e2a259d47d442d2ffae873ba26c620a --- /dev/null +++ b/src/app/calculators/espece/fr.json @@ -0,0 +1,12 @@ +{ + "fs_param_pab": "Passes à bassins", + "fs_param_pab_s": "Passes à bassins, jets de surface et orifices", + "fs_param_pab_p": "Passes à bassins, jets plongeants", + "fs_param_pam": "Passes à macrorugosités", + "fs_param_par": "Passes à ralentisseurs", + + "select_divingjetsupported": "Support des jets plongeants", + + "DIVINGJETSUPPORTED_0": "Non supportés", + "DIVINGJETSUPPORTED_1": "Supportés" +} diff --git a/src/app/calculators/grille/en.json b/src/app/calculators/grille/en.json index 5b57793c079011e7055cfa75107ea1a8e1d60d7b..f372fc545edb6ed9c32a69ae6a0b05ce2ba02132 100644 --- a/src/app/calculators/grille/en.json +++ b/src/app/calculators/grille/en.json @@ -57,30 +57,5 @@ "DH45": "Loss of charge - clogging rate 45%", "DH50": "Loss of charge - clogging rate 50%", "DH55": "Loss of charge - clogging rate 55%", - "DH60": "Loss of charge - clogging rate 60%", - - "UNIT_H": "m", - "UNIT_HG": "m", - "UNIT_S": "m²", - "UNIT_SPDG": "m²", - "UNIT_VA": "m/s", - "UNIT_VAPDG": "m/s", - "UNIT_LG": "m", - "UNIT_D": "m", - "UNIT_DG": "m", - "UNIT_SG": "m²", - "UNIT_VN": "m/s", - "UNIT_DH00": "cm", - "UNIT_DH05": "cm", - "UNIT_DH10": "cm", - "UNIT_DH15": "cm", - "UNIT_DH20": "cm", - "UNIT_DH25": "cm", - "UNIT_DH30": "cm", - "UNIT_DH35": "cm", - "UNIT_DH40": "cm", - "UNIT_DH45": "cm", - "UNIT_DH50": "cm", - "UNIT_DH55": "cm", - "UNIT_DH60": "cm" + "DH60": "Loss of charge - clogging rate 60%" } \ No newline at end of file diff --git a/src/app/calculators/grille/fr.json b/src/app/calculators/grille/fr.json index f575fc88ee6a158e36ecc0507abe9b8b6ed29c93..a3510f3915a78fc3cc9c3755c85eb57853fef4a3 100644 --- a/src/app/calculators/grille/fr.json +++ b/src/app/calculators/grille/fr.json @@ -57,30 +57,5 @@ "DH45": "Perte de charge - taux de colmatage 45%", "DH50": "Perte de charge - taux de colmatage 50%", "DH55": "Perte de charge - taux de colmatage 55%", - "DH60": "Perte de charge - taux de colmatage 60%", - - "UNIT_H": "m", - "UNIT_HG": "m", - "UNIT_S": "m²", - "UNIT_SPDG": "m²", - "UNIT_VA": "m/s", - "UNIT_VAPDG": "m/s", - "UNIT_LG": "m", - "UNIT_D": "m", - "UNIT_DG": "m", - "UNIT_SG": "m²", - "UNIT_VN": "m/s", - "UNIT_DH00": "cm", - "UNIT_DH05": "cm", - "UNIT_DH10": "cm", - "UNIT_DH15": "cm", - "UNIT_DH20": "cm", - "UNIT_DH25": "cm", - "UNIT_DH30": "cm", - "UNIT_DH35": "cm", - "UNIT_DH40": "cm", - "UNIT_DH45": "cm", - "UNIT_DH50": "cm", - "UNIT_DH55": "cm", - "UNIT_DH60": "cm" + "DH60": "Perte de charge - taux de colmatage 60%" } \ No newline at end of file diff --git a/src/app/calculators/jet/en.json b/src/app/calculators/jet/en.json index beaa71924baf4612e395c07107a896c541376725..32cc2afed438f0b92db9d7ca8f9ee3e5f3507068 100644 --- a/src/app/calculators/jet/en.json +++ b/src/app/calculators/jet/en.json @@ -9,22 +9,9 @@ "ZF": "Bottom elevation", "H": "Fall height", "Y": "Depth", - "YH": "Depth/height ration", + "YH": "Depth/height ratio", "t": "Flight time", "Vx": "Horizontal speed at impact", "Vz": "Vertical speed at impact", - "Vt": "Speed at impact", - - "UNIT_V0": "m/s", - "UNIT_S": "m/m", - "UNIT_D": "m", - "UNIT_ZJ": "m", - "UNIT_ZW": "m", - "UNIT_ZF": "m", - "UNIT_H": "m", - "UNIT_Y": "m", - "UNIT_T": "s", - "UNIT_VX": "m/s", - "UNIT_VZ": "m/s", - "UNIT_VT": "m/s" + "Vt": "Speed at impact" } \ No newline at end of file diff --git a/src/app/calculators/jet/fr.json b/src/app/calculators/jet/fr.json index ba180820de5d839c61a8f6110bf3e490df6010e8..1cbe67acb9e88c37bef9b2ba9db36dd84871c103 100644 --- a/src/app/calculators/jet/fr.json +++ b/src/app/calculators/jet/fr.json @@ -13,18 +13,5 @@ "t": "Temps de vol", "Vx": "Vitesse horizontale à l'impact", "Vz": "Vitesse verticale à l'impact", - "Vt": "Vitesse à l'impact", - - "UNIT_V0": "m/s", - "UNIT_S": "m/m", - "UNIT_D": "m", - "UNIT_ZJ": "m", - "UNIT_ZW": "m", - "UNIT_ZF": "m", - "UNIT_H": "m", - "UNIT_Y": "m", - "UNIT_T": "s", - "UNIT_VX": "m/s", - "UNIT_VZ": "m/s", - "UNIT_VT": "m/s" + "Vt": "Vitesse à l'impact" } \ No newline at end of file diff --git a/src/app/calculators/lechaptcalmon/en.json b/src/app/calculators/lechaptcalmon/en.json index 0e0b0798c73c0110466290d20c5656645b20d698..729994b0eefa9009092b821d43e3410b05358419 100644 --- a/src/app/calculators/lechaptcalmon/en.json +++ b/src/app/calculators/lechaptcalmon/en.json @@ -14,7 +14,6 @@ "M": "M", "N": "N", "fs_hydraulique": "Hydraulic features", - "Q": "Flow", "D": "Pipe diameter", "J": "Total head loss", "Ks": "Singular head loss coefficient", @@ -22,5 +21,8 @@ "fs_param_calc": "Calculation parameters", "Jl": "Linear head loss", "Kl": "Linear head loss coefficient", - "fD": "Darcy friction factor" + "fD": "Darcy friction factor", + + "UNIT_JL": "m", + "UNIT_V": "m/s" } \ No newline at end of file diff --git a/src/app/calculators/lechaptcalmon/fr.json b/src/app/calculators/lechaptcalmon/fr.json index 0ce375bc6bfb74389554e1b65d75ed100e5daa0a..89884cabd4634f566ed4d86d2a419de79000447f 100644 --- a/src/app/calculators/lechaptcalmon/fr.json +++ b/src/app/calculators/lechaptcalmon/fr.json @@ -20,8 +20,9 @@ "Lg": "Longueur du tuyau", "fs_param_calc": "Paramètres de calcul", "Jl": "Perte de charge linéaire", - "UNIT_JL": "m", - "UNIT_V": "m/s", "Kl": "Coefficient de perte de charge linéaire", - "fD": "Coefficient de perte de charge de Darcy" + "fD": "Coefficient de perte de charge de Darcy", + + "UNIT_JL": "m", + "UNIT_V": "m/s" } \ No newline at end of file diff --git a/src/app/calculators/macrorugo/en.json b/src/app/calculators/macrorugo/en.json index 664b14ac828bc0d937ec17b2d1e19181ff006cb8..a7193a6b5f2ef322e7c3445decea31d98ed36609 100644 --- a/src/app/calculators/macrorugo/en.json +++ b/src/app/calculators/macrorugo/en.json @@ -12,10 +12,5 @@ "PBD": "Diameter", "PBH": "Height", "Cd0": "Shape (1 for round, 2 for square)", - "Strickler": "Equivalent strickler", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m", - "UNIT_STRICKLER": "SI" + "Strickler": "Equivalent strickler" } \ No newline at end of file diff --git a/src/app/calculators/macrorugo/fr.json b/src/app/calculators/macrorugo/fr.json index 1a1b35ef8bc812a4b68361a20296d248987d2923..f1f5698c96c11089ee510bd31970670a1aafd95b 100644 --- a/src/app/calculators/macrorugo/fr.json +++ b/src/app/calculators/macrorugo/fr.json @@ -12,10 +12,5 @@ "PBD": "Diamètre", "PBH": "Hauteur", "Cd0": "Forme (1 pour rond, 2 pour carré)", - "Strickler": "Strickler équivalent", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m", - "UNIT_STRICKLER": "SI" + "Strickler": "Strickler équivalent" } \ No newline at end of file diff --git a/src/app/calculators/macrorugocompound/en.json b/src/app/calculators/macrorugocompound/en.json index 4c2a222131c5f7447775d72a2c872a718c1bc6e1..9644c91aab4079ea5ef22a840b816f7a1395c908 100644 --- a/src/app/calculators/macrorugocompound/en.json +++ b/src/app/calculators/macrorugocompound/en.json @@ -22,11 +22,5 @@ "xCenter": "Mid-apron abscissa", "PASSTYPE_0": "Multiple aprons", - "PASSTYPE_1": "Inclined apron", - - "UNIT_Q": "m³/s", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m" + "PASSTYPE_1": "Inclined apron" } \ No newline at end of file diff --git a/src/app/calculators/macrorugocompound/fr.json b/src/app/calculators/macrorugocompound/fr.json index d72e543e693597baa988550b2587bc853e5bb86d..e33f5fa74665c5895be77ee6a4ec89e1d40ba758 100644 --- a/src/app/calculators/macrorugocompound/fr.json +++ b/src/app/calculators/macrorugocompound/fr.json @@ -22,11 +22,5 @@ "xCenter": "Abscisse du milieu du radier", "PASSTYPE_0": "Radiers multiples", - "PASSTYPE_1": "Radier incliné", - - "UNIT_Q": "m³/s", - "UNIT_PV": "W/m³", - "UNIT_VDEB": "m/s", - "UNIT_VMAX": "m/s", - "UNIT_ZF2": "m" + "PASSTYPE_1": "Radier incliné" } \ No newline at end of file diff --git a/src/app/calculators/pab/en.json b/src/app/calculators/pab/en.json index dbd6d321e0055aff5ee5cfce8431efd470d54278..db6cefb8a0ed5388fe26a1b04ff7a0dae1d3bfc5 100644 --- a/src/app/calculators/pab/en.json +++ b/src/app/calculators/pab/en.json @@ -14,6 +14,7 @@ "bassin_container": "Basins", "select_modele_cloisons": "Cross walls model", "select_modele_cloison_aval": "Downstream wall model", + "UNIT_LB": "m", "UNIT_BB": "m", "UNIT_DH": "m", diff --git a/src/app/calculators/pab/fr.json b/src/app/calculators/pab/fr.json index 481a202be0cc0b44889cd786c87be091458227b3..c08b87e1ff0f912c5456bc1c9f82967631793fe6 100644 --- a/src/app/calculators/pab/fr.json +++ b/src/app/calculators/pab/fr.json @@ -14,6 +14,7 @@ "bassin_container": "Bassins", "select_modele_cloisons": "Modèle de cloisons", "select_modele_cloison_aval": "Modèle de la cloison aval", + "UNIT_LB": "m", "UNIT_BB": "m", "UNIT_DH": "m", diff --git a/src/app/calculators/pabnombre/en.json b/src/app/calculators/pabnombre/en.json index 067c48901dfa3dfac4de8dda66a804a91411f2db..148b87adc6abf3ed9a1e6b6ec1ddc84b16a3c678 100644 --- a/src/app/calculators/pabnombre/en.json +++ b/src/app/calculators/pabnombre/en.json @@ -6,9 +6,5 @@ "NB": "Number of falls, downwards harmonization", "NH": "Number of falls, upwards harmonization", "DHB": "Fall between basins, downwards harmonization", - "DHH": "Fall between basins, upwards harmonization", - - "UNIT_DHR": "m", - "UNIT_DHB": "m", - "UNIT_DHH": "m" + "DHH": "Fall between basins, upwards harmonization" } \ No newline at end of file diff --git a/src/app/calculators/pabnombre/fr.json b/src/app/calculators/pabnombre/fr.json index 1b2d019177d9436883d7adfcff78024cd1afe81f..6a4baca55dfc98886f857502d130349ccf893668 100644 --- a/src/app/calculators/pabnombre/fr.json +++ b/src/app/calculators/pabnombre/fr.json @@ -6,9 +6,5 @@ "NB": "Nombre de chutes, harmonisation vers le bas", "NH": "Nombre de chutes, harmonisation vers le haut", "DHB": "Chute entre bassins, harmonisation vers le bas", - "DHH": "Chute entre bassins, harmonisation vers le haut", - - "UNIT_DHR": "m", - "UNIT_DHB": "m", - "UNIT_DHH": "m" + "DHH": "Chute entre bassins, harmonisation vers le haut" } \ No newline at end of file diff --git a/src/app/calculators/pabpuissance/en.json b/src/app/calculators/pabpuissance/en.json index 582ca3f4574a5bd17f16a445ef6cec2836294260..5872528a56724df3749e24cf9ec1727c0b6b8bdd 100644 --- a/src/app/calculators/pabpuissance/en.json +++ b/src/app/calculators/pabpuissance/en.json @@ -1,7 +1,6 @@ { "fs_puissance": "Basin dimensions", "DH": "Drop", - "Q": "Discharge", "V": "Volume", "PV": "Dissipated power" } \ No newline at end of file diff --git a/src/app/calculators/par/en.json b/src/app/calculators/par/en.json index c84e38dc5c1f7bf8565614172a3dd7b7811f412a..f1d88aa176d3fee207ac7bba0b07b84095c489ac 100644 --- a/src/app/calculators/par/en.json +++ b/src/app/calculators/par/en.json @@ -1,10 +1,6 @@ { "fs_param_hydro": "Hydraulic parameters", - "Q": "Flow", - "Z1": "Upstream water elevation", - "Z2": "Downstream water elevation", - "fs_geometry": "Pass geometry", "ha": "Upstream head", @@ -38,31 +34,5 @@ "PARTYPE_0": "Plane baffles", "PARTYPE_1": "Fatou", "PARTYPE_2": "Superactive", - "PARTYPE_3": "Mixed / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_NB": "", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m" + "PARTYPE_3": "Mixed / chevrons" } \ No newline at end of file diff --git a/src/app/calculators/par/fr.json b/src/app/calculators/par/fr.json index 992593b5c7222261051c9b50658faea537320a7e..4d38734cad1520a14ea23ed65b0cee17e8786282 100644 --- a/src/app/calculators/par/fr.json +++ b/src/app/calculators/par/fr.json @@ -34,31 +34,5 @@ "PARTYPE_0": "Ralentisseurs plans", "PARTYPE_1": "Fatou", "PARTYPE_2": "Ralentisseurs suractifs", - "PARTYPE_3": "Mixte / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_NB": "", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m" + "PARTYPE_3": "Mixte / chevrons" } \ No newline at end of file diff --git a/src/app/calculators/parsimulation/en.json b/src/app/calculators/parsimulation/en.json index 633c670b6ce66f46c7927c107e5f864848c0c78b..36c46b4b1706938004c1e6724b95665ca8c78524 100644 --- a/src/app/calculators/parsimulation/en.json +++ b/src/app/calculators/parsimulation/en.json @@ -1,10 +1,6 @@ { "fs_param_hydro": "Hydraulic parameters", - "Q": "Flow", - "Z1": "Upstream water elevation", - "Z2": "Downstream water elevation", - "fs_geometry": "Pass geometry", "ZD1": "Upstream spilling elevation", @@ -38,31 +34,5 @@ "PARTYPE_0": "Plane baffles", "PARTYPE_1": "Fatou", "PARTYPE_2": "Superactive", - "PARTYPE_3": "Mixed / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_NB": "", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m" + "PARTYPE_3": "Mixed / chevrons" } diff --git a/src/app/calculators/parsimulation/fr.json b/src/app/calculators/parsimulation/fr.json index 50a84eff932f14b405904fd9008523e841273076..59cdeef4f5d6c7cc0e3e14437f5c4f616d93e43b 100644 --- a/src/app/calculators/parsimulation/fr.json +++ b/src/app/calculators/parsimulation/fr.json @@ -34,31 +34,5 @@ "PARTYPE_0": "Ralentisseurs plans", "PARTYPE_1": "Fatou", "PARTYPE_2": "Ralentisseurs suractifs", - "PARTYPE_3": "Mixte / chevrons", - - "UNIT_ZD1": "m", - "UNIT_S": "m/m", - "UNIT_P": "m", - "UNIT_NB": "", - "UNIT_L": "m", - "UNIT_a": "m", - "UNIT_N": "", - "UNIT_M": "", - - "UNIT_H": "m", - "UNIT_HA": "m", - "UNIT_QSTAR": "m³/s", - "UNIT_V": "m/s", - "UNIT_ZM": "m", - "UNIT_ZR1": "m", - "UNIT_A": "m", - "UNIT_B": "m", - "UNIT_C": "m", - "UNIT_D": "m", - "UNIT_HMIN": "m", - "UNIT_HMAX": "m", - "UNIT_ZD2": "m", - "UNIT_ZR2": "m", - "UNIT_LPI": "m", - "UNIT_LPH": "m" + "PARTYPE_3": "Mixte / chevrons" } diff --git a/src/app/calculators/regimeuniforme/en.json b/src/app/calculators/regimeuniforme/en.json index 88f2143d81e9e05fd796f32df2ba10e9d8897c2a..4a5a3327a0e2ffbe7f28332ce77ceb2a024a95ac 100644 --- a/src/app/calculators/regimeuniforme/en.json +++ b/src/app/calculators/regimeuniforme/en.json @@ -17,7 +17,5 @@ "If": "Bottom slope", "YB": "Embankment elevation", "fs_hydraulique": "Hydraulic features", - "Y": "Draft", - - "UNIT_V": "m/s" + "Y": "Draft" } \ No newline at end of file diff --git a/src/app/calculators/regimeuniforme/fr.json b/src/app/calculators/regimeuniforme/fr.json index 84787f04e74b6b8c1ba9ee9ce3053dc47f3cad14..1363f63037679445ecea2101dca5b79a0d389b0b 100644 --- a/src/app/calculators/regimeuniforme/fr.json +++ b/src/app/calculators/regimeuniforme/fr.json @@ -17,7 +17,5 @@ "If": "Pente du fond", "YB": "Hauteur de berge", "fs_hydraulique": "Caractéristiques hydrauliques", - "Y": "Tirant d'eau", - - "UNIT_V": "m/s" + "Y": "Tirant d'eau" } \ No newline at end of file diff --git a/src/app/calculators/sectionparametree/en.json b/src/app/calculators/sectionparametree/en.json index 8e5b6226c30dfca094878fb18041a7d038321406..92a0479a837ab8d6a34e523b10719826aee6a5cc 100644 --- a/src/app/calculators/sectionparametree/en.json +++ b/src/app/calculators/sectionparametree/en.json @@ -17,7 +17,6 @@ "If": "Bottom slope", "YB": "Embankment elevation", "fs_hydraulique": "Hydraulic features", - "Q": "Flow", "Y": "Draft", "fs_param_calc": "Calculation parameters", "Hs": "Specific head", @@ -36,6 +35,7 @@ "I-J": "Linear variation of specific energy", "Imp": "Impulse", "Tau0": "Tractive force", + "UNIT_B": "m", "UNIT_HS": "m", "UNIT_HSC": "m", diff --git a/src/app/calculators/sectionparametree/fr.json b/src/app/calculators/sectionparametree/fr.json index 2615fd823301a458f6c5fdaa07d80889c2d22b9d..769792403f0db555e6f4e2c5a86eec60f64dce8d 100644 --- a/src/app/calculators/sectionparametree/fr.json +++ b/src/app/calculators/sectionparametree/fr.json @@ -35,6 +35,7 @@ "I-J": "Variation linéaire de l'énergie spécifique", "Imp": "Impulsion", "Tau0": "Force tractrice", + "UNIT_B": "m", "UNIT_HS": "m", "UNIT_HSC": "m", diff --git a/src/app/calculators/solveur/config.json b/src/app/calculators/solveur/config.json index fa1da444fcb444a1f7418c60118b999565ffb87c..f04658c8dfe828fcbf5646c179c02facff532ea1 100644 --- a/src/app/calculators/solveur/config.json +++ b/src/app/calculators/solveur/config.json @@ -5,8 +5,7 @@ "fields": [ { "id": "select_target_nub", - "type": "select_reference", - "reference": "nub", + "type": "select_custom", "source": "solveur_target" }, { @@ -25,8 +24,7 @@ "fields": [ { "id": "select_searched_param", - "type": "select_reference", - "reference": "parameter", + "type": "select_custom", "source": "solveur_searched" }, "Xinit" @@ -35,9 +33,8 @@ { "type": "options", "selectIds": [ "select_target_result" ], - "targetNubSelectId": "select_target_nub", + "customSelectIds": [ "select_target_nub", "select_searched_param" ], "targettedResultSelectId": "select_target_result", - "searchedParamSelectId": "select_searched_param", "_help": "solveur.html" } ] \ No newline at end of file diff --git a/src/app/calculators/verificateur/config.json b/src/app/calculators/verificateur/config.json new file mode 100644 index 0000000000000000000000000000000000000000..f3a9a7a2a3a74589c604bedb63024cff56766428 --- /dev/null +++ b/src/app/calculators/verificateur/config.json @@ -0,0 +1,31 @@ +[ + { + "id": "fs_pass", + "type": "fieldset", + "fields": [ + { + "id": "select_target_pass", + "type": "select_custom", + "source": "verificateur_target" + } + ] + }, + { + "id": "fs_species", + "type": "fieldset", + "fields": [ + { + "type": "select_custom", + "id": "select_species_list", + "source": "verificateur_species", + "multiple": true + } + ] + }, + { + "type": "options", + "selectIds": [ "select_pab_jet_type" ], + "customSelectIds": [ "select_target_pass", "select_species_list" ], + "help": "verification/verificateur.html" + } +] diff --git a/src/app/calculators/verificateur/en.json b/src/app/calculators/verificateur/en.json new file mode 100644 index 0000000000000000000000000000000000000000..eb48e983534bc5a83f22f944946958989c632053 --- /dev/null +++ b/src/app/calculators/verificateur/en.json @@ -0,0 +1,13 @@ +{ + "fs_pass": "Fish pass parameters", + + "select_target_pass": "Fish pass to verify", + + "select_pab_jet_type": "Jet type (PAB)", + "select_pab_jet_type_0": "Diving", + "select_pab_jet_type_1": "Surface", + + "fs_species": "Species parameters", + + "select_species_list": "Species groups" +} diff --git a/src/app/calculators/verificateur/fr.json b/src/app/calculators/verificateur/fr.json new file mode 100644 index 0000000000000000000000000000000000000000..13b6430de34ec99f1e365468b50041044f551c11 --- /dev/null +++ b/src/app/calculators/verificateur/fr.json @@ -0,0 +1,13 @@ +{ + "fs_pass": "Paramètres de la passe", + + "select_target_pass": "Passe à vérifier", + + "select_pab_jet_type": "Type de jet (PAB)", + "select_pab_jet_type_0": "Plongeant", + "select_pab_jet_type_1": "Surface", + + "fs_species": "Paramètres des espèces", + + "select_species_list": "Groupes d'espèces" +} diff --git a/src/app/components/app-setup/app-setup.component.html b/src/app/components/app-setup/app-setup.component.html index 6305c1bb9a36d21d3d191dc8d297042b8344f317..87f52357afe63aad94befa23b4cbb47f643ba248 100644 --- a/src/app/components/app-setup/app-setup.component.html +++ b/src/app/components/app-setup/app-setup.component.html @@ -1,98 +1,105 @@ - <div class="container" fxLayout="row" fxLayoutAlign="center space-evenly"> - <mat-card id="app-setup"> - - <mat-card-header class="mat-card-header-text-margin-0"> - <mat-card-title> - <h1>{{ uitextTitle }}</h1> - </mat-card-title> - - <button type="button" mat-icon-button (click)="storePreferences()" [title]="uitextStorePreferences"> - <mat-icon>file_download</mat-icon> - </button> - <button type="button" mat-icon-button (click)="restoreDefaultValues()" [title]="uitextRestoreDefaultValues"> - <mat-icon>settings_backup_restore</mat-icon> - </button> - </mat-card-header> - - <mat-card-content> - <!-- template-driven form --> - <form> - - <!-- précision d'affichage --> - <mat-form-field data-testclass="numeric-input"> - <input matInput [placeholder]="uitextDisplayAccuracy" #dp="ngModel" name="dp" inputmode="numeric" - [ngModel]="displayPrec.value" (ngModelChange)="!dp.invalid ? displayPrec.setValue($event): null" - pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required [appJalhydModelValidation]="displayPrec"> - - <mat-error *ngIf="dp.invalid && (dp.dirty || dp.touched)"> - <div *ngIf="dp.errors.required || dp.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! dp.errors.required && dp.errors.jalhydModel" [innerHTML]="dp.errors.jalhydModel.message"> - </div> - </mat-error> - </mat-form-field> - - <!-- précision de calcul --> - <mat-form-field data-testclass="numeric-input"> - <input matInput [placeholder]="uitextComputeAccuracy" #cp="ngModel" name="cp" inputmode="numeric" - [ngModel]="computePrec.value" (ngModelChange)="!cp.invalid ? computePrec.setValue($event): null" - pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required [appJalhydModelValidation]="computePrec"> - - <mat-error *ngIf="cp.invalid"> - <div *ngIf="cp.errors.required || cp.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! cp.errors.required && cp.errors.jalhydModel" [innerHTML]="cp.errors.jalhydModel.message"> - </div> - </mat-error> - </mat-form-field> - - <!-- nombre d'itérations max Newton --> - <mat-form-field data-testclass="numeric-input"> - <input matInput [placeholder]="uitextNewtonMaxIteration" #nmi="ngModel" name="nmi" inputmode="numeric" - [ngModel]="newtonMaxIter.value" (ngModelChange)="!nmi.invalid ? newtonMaxIter.setValue($event): null" - pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required [appJalhydModelValidation]="newtonMaxIter"> - - <mat-error *ngIf="nmi.invalid && (nmi.dirty || nmi.touched)"> - <div *ngIf="nmi.errors.required || nmi.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! nmi.errors.required && nmi.errors.jalhydModel" [innerHTML]="nmi.errors.jalhydModel.message"> - </div> - </mat-error> - </mat-form-field> - - <!-- notifications (snackbar) --> - <mat-checkbox id="cb_notifications" class="wrapped-checkbox" name="notifications" - [(ngModel)]="enableNotifications" [ngModelOptions]="{standalone: true}"> - {{ uitextEnableNotifications }} - </mat-checkbox> - - <!-- hotkeys --> - <mat-checkbox id="cb_hotkeys" class="wrapped-checkbox" name="hotkeys" - [(ngModel)]="enableHotkeys" [ngModelOptions]="{standalone: true}"> - {{ uitextEnableHotkeys }} - </mat-checkbox> - - <!-- empty all fields when creating a new form --> - <mat-checkbox id="cb_emptyFields" class="wrapped-checkbox" name="emptyFields" - [(ngModel)]="enableEmptyFieldsOnFormInit" [ngModelOptions]="{standalone: true}"> - {{ uitextEnableEmptyFieldsOnFormInit }} - </mat-checkbox> - - <!-- langue --> - <mat-form-field> - <mat-select [placeholder]="uitextLanguage" [(value)]="currentLanguageCode" data-testid="language-select"> - <mat-option *ngFor="let l of availableLanguages | keyvalue" [value]="l.key" [title]="l.value"> - {{ l.value }} - </mat-option> - </mat-select> - </mat-form-field> - - </form> - </mat-card-content> - - </mat-card> -</div> + <mat-card id="app-setup"> + + <mat-card-header class="mat-card-header-text-margin-0"> + <mat-card-title> + <h1>{{ uitextTitle }}</h1> + </mat-card-title> + + <button type="button" mat-icon-button (click)="storePreferences()" [title]="uitextStorePreferences"> + <mat-icon>file_download</mat-icon> + </button> + <button type="button" mat-icon-button (click)="restoreDefaultValues()" [title]="uitextRestoreDefaultValues"> + <mat-icon>settings_backup_restore</mat-icon> + </button> + </mat-card-header> + + <mat-card-content> + <!-- template-driven form --> + <form> + + <!-- précision d'affichage --> + <mat-form-field data-testclass="numeric-input"> + <input matInput [placeholder]="uitextDisplayAccuracy" #dp="ngModel" name="dp" inputmode="numeric" + [ngModel]="displayPrec.value" (ngModelChange)="!dp.invalid ? displayPrec.setValue($event): null" + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required + [appJalhydModelValidation]="displayPrec"> + + <mat-error *ngIf="dp.invalid && (dp.dirty || dp.touched)"> + <div *ngIf="dp.errors.required || dp.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! dp.errors.required && dp.errors.jalhydModel" + [innerHTML]="dp.errors.jalhydModel.message"> + </div> + </mat-error> + </mat-form-field> + + <!-- précision de calcul --> + <mat-form-field data-testclass="numeric-input"> + <input matInput [placeholder]="uitextComputeAccuracy" #cp="ngModel" name="cp" inputmode="numeric" + [ngModel]="computePrec.value" (ngModelChange)="!cp.invalid ? computePrec.setValue($event): null" + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required + [appJalhydModelValidation]="computePrec"> + + <mat-error *ngIf="cp.invalid"> + <div *ngIf="cp.errors.required || cp.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! cp.errors.required && cp.errors.jalhydModel" + [innerHTML]="cp.errors.jalhydModel.message"> + </div> + </mat-error> + </mat-form-field> + + <!-- nombre d'itérations max Newton --> + <mat-form-field data-testclass="numeric-input"> + <input matInput [placeholder]="uitextNewtonMaxIteration" #nmi="ngModel" name="nmi" + inputmode="numeric" [ngModel]="newtonMaxIter.value" + (ngModelChange)="!nmi.invalid ? newtonMaxIter.setValue($event): null" + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" required + [appJalhydModelValidation]="newtonMaxIter"> + + <mat-error *ngIf="nmi.invalid && (nmi.dirty || nmi.touched)"> + <div *ngIf="nmi.errors.required || nmi.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! nmi.errors.required && nmi.errors.jalhydModel" + [innerHTML]="nmi.errors.jalhydModel.message"> + </div> + </mat-error> + </mat-form-field> + + <!-- notifications (snackbar) --> + <mat-checkbox id="cb_notifications" class="wrapped-checkbox" name="notifications" + [(ngModel)]="enableNotifications" [ngModelOptions]="{standalone: true}"> + {{ uitextEnableNotifications }} + </mat-checkbox> + + <!-- hotkeys --> + <mat-checkbox id="cb_hotkeys" class="wrapped-checkbox" name="hotkeys" [(ngModel)]="enableHotkeys" + [ngModelOptions]="{standalone: true}"> + {{ uitextEnableHotkeys }} + </mat-checkbox> + + <!-- empty all fields when creating a new form --> + <mat-checkbox id="cb_emptyFields" class="wrapped-checkbox" name="emptyFields" + [(ngModel)]="enableEmptyFieldsOnFormInit" [ngModelOptions]="{standalone: true}"> + {{ uitextEnableEmptyFieldsOnFormInit }} + </mat-checkbox> + + <!-- langue --> + <mat-form-field> + <mat-select [placeholder]="uitextLanguage" [(value)]="currentLanguageCode" + data-testid="language-select"> + <mat-option *ngFor="let l of availableLanguages | keyvalue" [value]="l.key" [title]="l.value"> + {{ l.value }} + </mat-option> + </mat-select> + </mat-form-field> + + </form> + </mat-card-content> + + </mat-card> +</div> \ No newline at end of file diff --git a/src/app/components/base-param-input/base-param-input.component.ts b/src/app/components/base-param-input/base-param-input.component.ts index aab6cebb6c8bcfae750431ed17b80fe662e28ac2..25573571b021a64a06672559fa919981d00f8d8a 100644 --- a/src/app/components/base-param-input/base-param-input.component.ts +++ b/src/app/components/base-param-input/base-param-input.component.ts @@ -69,7 +69,7 @@ export class NgBaseParam extends Observable { if (v === null || v === "") { // NULL values are always invalid - msg = ServiceFactory.instance.i18nService.localizeText("ERROR_PARAM_NULL"); + msg = ServiceFactory.i18nService.localizeText("ERROR_PARAM_NULL"); } else { try { this._param.checkValueAgainstDomain(v); @@ -77,7 +77,7 @@ export class NgBaseParam extends Observable { } catch (e) { if (e instanceof Message) { // ici au début le service de localisation n'a pas encore chargé ses messages… - msg = ServiceFactory.instance.i18nService.localizeMessage(e); + msg = ServiceFactory.i18nService.localizeMessage(e); } else { msg = "invalid value"; } diff --git a/src/app/components/calculator-list/calculator-list.component.html b/src/app/components/calculator-list/calculator-list.component.html index 23db26dca6feeb6d9abeb702ecb44ba292e1a6ce..2cdafcee528ae89c0858e3b966a3540704b70916 100644 --- a/src/app/components/calculator-list/calculator-list.component.html +++ b/src/app/components/calculator-list/calculator-list.component.html @@ -1,6 +1,19 @@ <div class="container" fxLayout="row wrap" fxLayoutAlign="space-evenly stretch" (konami)="onKC()"> - <mat-card class="welcome-card" *ngIf="nbOpenCalculators === 0"> + <div id="header-search" *ngIf="enableSearch"> + <form id="search-modules"> + <mat-form-field> + <mat-icon matPrefix>search</mat-icon> + <input type="search" matInput name="searchTerms" [(ngModel)]="searchTerms" (input)="filterItems()" + (keydown.escape)="resetSearch()" autofocus #searchField> + </mat-form-field> + </form> + <div *ngIf="filteredItems.length === 0"> + {{ uitextSearchNoResult }} + </div> + </div> + + <mat-card class="welcome-card" *ngIf="nbOpenCalculators === 0 && searchTerms === ''"> <mat-card-header> <mat-card-title>{{ uitextWelcomeTitle }}</mat-card-title> @@ -16,7 +29,7 @@ </mat-card> - <mat-card *ngFor="let theme of items" class="compute-nodes-theme"> + <mat-card *ngFor="let theme of filteredItems" class="compute-nodes-theme"> <mat-card-header> <mat-card-title>{{ theme.title }}</mat-card-title> @@ -44,7 +57,7 @@ </mat-card> - <mat-card class="examples-card" *ngIf="nbOpenCalculators === 0"> + <mat-card class="examples-card" *ngIf="nbOpenCalculators === 0 && searchTerms === ''"> <mat-card-header> <mat-card-title>{{ uitextExamplesTitle }}</mat-card-title> @@ -53,15 +66,15 @@ <mat-card-content> <mat-list id="examples-list" role="list"> - <mat-list-item role="listitem" *ngFor="let f of exampleFiles"> - <mat-icon color="primary">folder_open</mat-icon> - <a class="load-example" (click)="loadExample(f.path)"> - {{ f.label }} - </a> - </mat-list-item> + <mat-list-item role="listitem" *ngFor="let f of exampleFiles"> + <mat-icon color="primary">folder_open</mat-icon> + <a class="load-example" (click)="loadExample(f.path)"> + {{ f.label }} + </a> + </mat-list-item> </mat-list> </mat-card-content> </mat-card> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/calculator-list/calculator-list.component.scss b/src/app/components/calculator-list/calculator-list.component.scss index 0ad0e03137b0856f5eb0e5b451b71da73f09c901..5be9933b4be7410bd52c9797f765bd34f6bd9123 100644 --- a/src/app/components/calculator-list/calculator-list.component.scss +++ b/src/app/components/calculator-list/calculator-list.component.scss @@ -60,3 +60,17 @@ a.load-example { cursor: pointer; padding-top: 1px; } + +#header-search { + flex: 0 1 100%; + padding: 0 4em; + min-width: 420px; + + mat-form-field { + width: 100%; + + mat-icon { + vertical-align: bottom; + } + } +} diff --git a/src/app/components/calculator-list/calculator-list.component.ts b/src/app/components/calculator-list/calculator-list.component.ts index f014d75c8e2b0e24febe6038a02b7c53b4f21d7a..6dc05bea1420b7043f7f1a8c3b92b26bc5acf58f 100644 --- a/src/app/components/calculator-list/calculator-list.component.ts +++ b/src/app/components/calculator-list/calculator-list.component.ts @@ -1,5 +1,5 @@ -import { Component, OnInit, Inject, forwardRef } from "@angular/core"; -import { Router } from "@angular/router"; +import { Component, OnInit, Inject, forwardRef, ElementRef, ViewChild } from "@angular/core"; +import { Router, ActivatedRoute } from "@angular/router"; import { CalculatorType, EnumEx, Session } from "jalhyd"; @@ -22,24 +22,49 @@ import { ApplicationSetupService } from "../../services/app-setup.service"; styleUrls: ["./calculator-list.component.scss"] }) export class CalculatorListComponent implements OnInit { + private _items: any[]; + public filteredItems: any[]; + + /** enable search only if /list/search route was called */ + public enableSearch = false; + + /** what is typed into the search field in the nav bar */ + public searchTerms: string; + + @ViewChild("searchField") + private searchField: ElementRef; + constructor( @Inject(forwardRef(() => AppComponent)) private appComponent: AppComponent, private router: Router, private httpService: HttpService, private intlService: I18nService, - private appSetupService: ApplicationSetupService + private appSetupService: ApplicationSetupService, + public route: ActivatedRoute ) { - ServiceFactory.instance.i18nService.addObserver(this); - ServiceFactory.instance.applicationSetupService.addObserver(this); + ServiceFactory.i18nService.addObserver(this); + ServiceFactory.applicationSetupService.addObserver(this); + + this.searchTerms = ""; + + this.route.url.subscribe(params => { + if (params.length > 1 && params[1].path === "search") { + this.enableSearch = true; + // focus the new Field + setTimeout(() => { + this.searchField.nativeElement.focus(); + }, 0); + } + }); } /** triggered on init */ private loadCalculatorsThemes() { this._items = []; const unusedCalculators = EnumEx.getValues(CalculatorType); - const themes = ServiceFactory.instance.applicationSetupService.themes; + const themes = ServiceFactory.applicationSetupService.themes; if (themes) { // group by themes for (const theme of themes) { @@ -47,10 +72,10 @@ export class CalculatorListComponent implements OnInit { // get theme details from config const themeTitleKey = "INFO_THEME_" + theme.name + "_TITRE"; const themeDescriptionKey = "INFO_THEME_" + theme.name + "_DESCRIPTION"; - const credits = ServiceFactory.instance.i18nService.localizeText("INFO_THEME_CREDITS"); + const credits = ServiceFactory.i18nService.localizeText("INFO_THEME_CREDITS"); const item = { - title: ServiceFactory.instance.i18nService.localizeText(themeTitleKey), - description: ServiceFactory.instance.i18nService.localizeText(themeDescriptionKey), + title: ServiceFactory.i18nService.localizeText(themeTitleKey), + description: ServiceFactory.i18nService.localizeText(themeDescriptionKey), image: { path: "assets/images/themes/" + theme.image.path, credits: credits + " : " + theme.image.credits @@ -61,7 +86,9 @@ export class CalculatorListComponent implements OnInit { for (const calcType of theme.calculators) { item.calculators.push({ type: calcType, - label: ServiceFactory.instance.formulaireService.getLocalisedTitleFromCalculatorType(calcType), + label: ServiceFactory.formulaireService.getLocalisedTitleFromCalculatorType(calcType), + shortLabel: ServiceFactory.formulaireService.getLocalisedShortTitleFromCalculatorType(calcType), + description: ServiceFactory.formulaireService.getLocalisedDescriptionFromCalculatorType(calcType), buttonId: "create-calc-" + calcType }); // mark as used @@ -79,8 +106,8 @@ export class CalculatorListComponent implements OnInit { const unusedThemeConfig = themes.find(i => i.name === undefined); const unusedTheme: any = {}; unusedTheme.calculators = []; - unusedTheme.title = ServiceFactory.instance.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_TITRE"); - unusedTheme.description = ServiceFactory.instance.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_DESCRIPTION"); + unusedTheme.title = ServiceFactory.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_TITRE"); + unusedTheme.description = ServiceFactory.i18nService.localizeText("INFO_THEME_MODULES_INUTILISES_DESCRIPTION"); unusedTheme.image = { path: "assets/images/themes/" + unusedThemeConfig.image.path }; @@ -94,7 +121,9 @@ export class CalculatorListComponent implements OnInit { ) { unusedTheme.calculators.push({ type: t, - label: ServiceFactory.instance.formulaireService.getLocalisedTitleFromCalculatorType(t), + label: ServiceFactory.formulaireService.getLocalisedTitleFromCalculatorType(t), + shortLabel: ServiceFactory.formulaireService.getLocalisedShortTitleFromCalculatorType(t), + description: ServiceFactory.formulaireService.getLocalisedDescriptionFromCalculatorType(t), buttonId: "create-calc-" + t }); } @@ -104,10 +133,13 @@ export class CalculatorListComponent implements OnInit { } // else the only remaining calculator was "Structure", the one we don't want } } + + // at first there is no filter, initialize anyway + this.filterItems(); } public create(t: CalculatorType) { - const p: Promise<FormulaireDefinition> = ServiceFactory.instance.formulaireService.createFormulaire(t); + const p: Promise<FormulaireDefinition> = ServiceFactory.formulaireService.createFormulaire(t); p.then(f => { this.router.navigate(["/calculator", f.uid]); return f; @@ -159,8 +191,53 @@ export class CalculatorListComponent implements OnInit { return Session.getInstance().getNumberOfNubs(); } - public get items() { - return this._items; + public resetSearch() { + this.searchTerms = ""; + this.filterItems(); + } + + /** + * Returns calculators grouped by themes, filtered by the search + * terms entered in the navbar's search field in AppComponent + */ + public filterItems() { + if (this.searchTerms === "") { + this.filteredItems = this._items; + } else { + this.filteredItems = JSON.parse(JSON.stringify(this._items)); + // filter items based on parent component's search field + for (const i of this.filteredItems) { + i.calculators = i.calculators.filter((c) => { + return this.searchMatches(c.label) || this.searchMatches(c.shortLabel) || this.searchMatches(c.description); + }); + } + this.filteredItems = this.filteredItems.filter((i) => { + return (i.calculators.length > 0); + }); + } + } + + /** + * Returns true if given str matches this.searchTerms: all terms (separated + * by " ") must match, in any order + */ + private searchMatches(str: string): boolean { + let ok = false; + let terms = this.searchTerms.split(" "); + terms = terms.filter( + (item, index) => item !== "" && terms.indexOf(item) === index // deduplicate and remove "" + ); + if (terms.length > 1) { + // all terms must match + ok = terms.every((t) => { + return str.toLowerCase().includes(t.toLowerCase()); + }); + } else if (terms.length > 0) { + ok = (str.toLowerCase().includes(terms[0].toLowerCase())); + } else { + ok = true; + } + return ok; } /** @@ -210,23 +287,27 @@ export class CalculatorListComponent implements OnInit { } public get uitextWelcomeSubtitle() { - return ServiceFactory.instance.i18nService.localizeText("INFO_WELCOME_SUBTITLE"); + return ServiceFactory.i18nService.localizeText("INFO_WELCOME_SUBTITLE"); } public get uitextWelcomeContent() { - return ServiceFactory.instance.i18nService.localizeText("INFO_WELCOME_CONTENT"); + return ServiceFactory.i18nService.localizeText("INFO_WELCOME_CONTENT"); } public get uitextExamplesTitle() { - return ServiceFactory.instance.i18nService.localizeText("INFO_EXAMPLES_TITLE"); + return ServiceFactory.i18nService.localizeText("INFO_EXAMPLES_TITLE"); } public get uitextExamplesSubtitle() { - return ServiceFactory.instance.i18nService.localizeText("INFO_EXAMPLES_SUBTITLE"); + return ServiceFactory.i18nService.localizeText("INFO_EXAMPLES_SUBTITLE"); + } + + public get uitextSearchNoResult() { + return ServiceFactory.i18nService.localizeText("INFO_SEARCH_NO_RESULT"); } public onKC() { - for (const i of this.items) { + for (const i of this._items) { const img = [ "assets/images/themes/sp.jpg", "assets/images/themes/autres.jpg" ]; const idx = Math.floor(Math.random() * 2); i.image.path = img[idx]; @@ -236,14 +317,14 @@ export class CalculatorListComponent implements OnInit { // interface Observer - update(sender: any, data: any): void { + public update(sender: any, data: any): void { if (sender instanceof I18nService) { // reload themes if language changed this.loadCalculatorsThemes(); } } - ngOnInit() { + public ngOnInit() { this.loadCalculatorsThemes(); } } diff --git a/src/app/components/calculator-results/calculator-results.component.html b/src/app/components/calculator-results/calculator-results.component.html index e15f90423460d877543169dc7b5081eb4446e809..319b3eab39c1483dc3b8c646ce2e2c7e040d63be 100644 --- a/src/app/components/calculator-results/calculator-results.component.html +++ b/src/app/components/calculator-results/calculator-results.component.html @@ -1,8 +1,9 @@ <div> - <section-results></section-results> - <remous-results></remous-results> - <pab-results></pab-results> - <macrorugo-compound-results></macrorugo-compound-results> - <jet-results></jet-results> - <fixedvar-results></fixedvar-results> + <section-results [hidden]="! isSP"></section-results> + <remous-results [hidden]="! isRemous"></remous-results> + <pab-results [hidden]="! isPAB"></pab-results> + <verificateur-results [hidden]="! isVerificateur"></verificateur-results> + <macrorugo-compound-results [hidden]="! isMRC"></macrorugo-compound-results> + <jet-results [hidden]="! isJet"></jet-results> + <fixedvar-results [hidden]="! showGenericResults"></fixedvar-results> </div> diff --git a/src/app/components/calculator-results/calculator-results.component.ts b/src/app/components/calculator-results/calculator-results.component.ts index 133296818a2482eb22bfc51a1d02da28a7601fa9..900cf877a848c0e0385faf2cacf504334afc7e6a 100644 --- a/src/app/components/calculator-results/calculator-results.component.ts +++ b/src/app/components/calculator-results/calculator-results.component.ts @@ -8,6 +8,9 @@ import { MacrorugoCompoundResultsComponent } from "../macrorugo-compound-results import { FormulaireDefinition } from "../../formulaire/definition/form-definition"; import { JetResultsComponent } from "../jet-results/jet-results.component"; import { GenericCalculatorComponent } from "../generic-calculator/calculator.component"; +import { VerificateurResultsComponent } from "../verificateur-results/verificateur-results.component"; + +import { CalculatorType } from "jalhyd"; @Component({ selector: "calc-results", @@ -41,6 +44,12 @@ export class CalculatorResultsComponent implements AfterViewChecked { @ViewChild(PabResultsComponent, { static: true }) private pabResultsComponent: PabResultsComponent; + /** + * composant d'affichage des résultats des vérificateurs de critères de franchissement + */ + @ViewChild(VerificateurResultsComponent, { static: true }) + private verificateurResultsComponent: VerificateurResultsComponent; + /** * composant d'affichage des résultats des passes à macrorugosités complexes */ @@ -63,45 +72,75 @@ export class CalculatorResultsComponent implements AfterViewChecked { @Inject(forwardRef(() => GenericCalculatorComponent)) private calculatorComponent: GenericCalculatorComponent ) { } + // @TODO this system is sh*tty ! public set formulaire(f: FormulaireDefinition) { this._formulaire = f; if (this._formulaire === undefined) { this.fixedVarResultsComponent.results = undefined; - this.sectionResultsComponent.results = undefined; - this.remousResultsComponent.results = undefined; - this.pabResultsComponent.results = undefined; - this.mrcResultsComponent.results = undefined; this.jetResultsComponent.results = undefined; + this.mrcResultsComponent.results = undefined; + this.pabResultsComponent.results = undefined; + this.remousResultsComponent.results = undefined; + this.sectionResultsComponent.results = undefined; + this.verificateurResultsComponent.results = undefined; } else { - this.sectionResultsComponent.results = f.results; - this.remousResultsComponent.results = f.results; - this.pabResultsComponent.results = f.results; - this.mrcResultsComponent.results = f.results; - // FixedVar and Jet are mutually incompatible (the 2nd extend the 1st) - if (this.isJet) { - this.jetResultsComponent.results = f.results; - this.fixedVarResultsComponent.results = undefined; - } else { - this.fixedVarResultsComponent.results = f.results; - this.jetResultsComponent.results = undefined; - } + if (this.showGenericResults) { this.fixedVarResultsComponent.results = f.results; } + if (this.isJet) { this.jetResultsComponent.results = f.results; } + if (this.isMRC) { this.mrcResultsComponent.results = f.results; } + if (this.isPAB) { this.pabResultsComponent.results = f.results; } + if (this.isRemous) { this.remousResultsComponent.results = f.results; } + if (this.isSP) { this.sectionResultsComponent.results = f.results; } + if (this.isVerificateur) { this.verificateurResultsComponent.results = f.results; } } } public updateView() { - this.fixedVarResultsComponent.updateView(); - this.sectionResultsComponent.updateView(); - this.remousResultsComponent.updateView(); - this.pabResultsComponent.updateView(); - this.mrcResultsComponent.updateView(); - this.jetResultsComponent.updateView(); + if (this.showGenericResults) { this.fixedVarResultsComponent.updateView(); } + if (this.isJet) { this.jetResultsComponent.updateView(); } + if (this.isMRC) { this.mrcResultsComponent.updateView(); } + if (this.isPAB) { this.pabResultsComponent.updateView(); } + if (this.isRemous) { this.remousResultsComponent.updateView(); } + if (this.isSP) { this.sectionResultsComponent.updateView(); } + if (this.isVerificateur) { this.verificateurResultsComponent.updateView(); } } public ngAfterViewChecked() { this.afterViewChecked.emit(); } - public get isJet() { + /** Should we show the default FixedVarResultsComponent ? */ + public get showGenericResults(): boolean { + return ( + ! this.isJet + && ! this.isMRC + && ! this.isPAB + && ! this.isRemous + && ! this.isSP + && ! this.isVerificateur + ); + } + + public get isJet(): boolean { return this.calculatorComponent.isJet; } + + public get isMRC(): boolean { + return this.calculatorComponent.isMRC; + } + + public get isPAB(): boolean { + return this.calculatorComponent.isPAB; + } + + public get isRemous(): boolean { + return this.calculatorComponent.is(CalculatorType.CourbeRemous); + } + + public get isSP(): boolean { + return this.calculatorComponent.is(CalculatorType.SectionParametree); + } + + public get isVerificateur(): boolean { + return this.calculatorComponent.is(CalculatorType.Verificateur); + } } diff --git a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html index 6398d84244504374defd3121aaa7126c87856fcc..c962d42880854bb2b0b20b43f5e758ba027f6abd 100644 --- a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html +++ b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html @@ -1,26 +1,26 @@ <h1 mat-dialog-title [innerHTML]="uitextCloseCalcTitle"></h1> <div mat-dialog-content> - <div *ngIf="dependingNubs.length"> - {{ uitextDependingModules }} + <div *ngIf="dependingNubs.length"> + {{ uitextDependingModules }} - <div class="dependencies-problems"> - <mat-list role="list"> - <mat-list-item role="listitem" *ngFor="let dn of dependingNubs"> - <mat-icon color="warn">error_outline</mat-icon> {{ dn }} - </mat-list-item> - </mat-list> + <div class="dependencies-problems"> + <mat-list role="list"> + <mat-list-item role="listitem" *ngFor="let dn of dependingNubs"> + <mat-icon color="warn">error_outline</mat-icon> {{ dn }} + </mat-list-item> + </mat-list> + </div> </div> - </div> </div> <p [innerHTML]="uitextCloseCalcBody"></p> <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextNo }} - </button> - <button mat-raised-button color="warn" [mat-dialog-close]="true"> - {{ uitextYes }} - </button> -</div> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextNo }} + </button> + <button mat-raised-button color="warn" [mat-dialog-close]="true"> + {{ uitextYes }} + </button> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts index 3a4858edac60fb0e0e49fb43968fbd439dbe4920..8be28ac26fd74eee03330c3445dc147c392b1152 100644 --- a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts +++ b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts @@ -8,7 +8,7 @@ import { Session } from "jalhyd"; selector: "dialog-confirm-close-calc", templateUrl: "dialog-confirm-close-calc.component.html", styleUrls: [ - "dialog-confirm-close-calc.component.scss" + "dialog-confirm-close-calc.component.scss" ] }) export class DialogConfirmCloseCalcComponent { @@ -27,27 +27,27 @@ export class DialogConfirmCloseCalcComponent { } public get uitextYes() { - return this.intlService.localizeText("INFO_OPTION_CLOSE"); + return this.intlService.localizeText("INFO_OPTION_CLOSE"); } public get uitextNo() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextCloseCalcTitle() { - return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TITRE"); + return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TITRE"); } public get uitextCloseCalcBody() { - return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TEXT"); + return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TEXT"); } public get uitextDependingModules() { - return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_DEPENDING_MODULES"); + return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_DEPENDING_MODULES"); } public get dependingNubs() { - return this._dependingNubs; + return this._dependingNubs; } } diff --git a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html index 565d03593cd888dc97ede1cb96623b3be590b033..f9ea392d0573bc2e369793f2dcde0fd00db55115 100644 --- a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html +++ b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.html @@ -1,12 +1,12 @@ <h1 mat-dialog-title [innerHTML]="uitextEmptySessionTitle"></h1> <div mat-dialog-content> - <p [innerHTML]="uitextEmptySessionBody"></p> + <p [innerHTML]="uitextEmptySessionBody"></p> </div> <div mat-dialog-actions [attr.align]="'end'"> - <button id="cancel-new-session" mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextNo }} - </button> - <button id="confirm-new-session" mat-raised-button color="warn" [mat-dialog-close]="true"> - {{ uitextYes }} - </button> -</div> + <button id="cancel-new-session" mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextNo }} + </button> + <button id="confirm-new-session" mat-raised-button color="warn" [mat-dialog-close]="true"> + {{ uitextYes }} + </button> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts index ad892f6ea973fe8ddb7e831d803e8a00ac0c8b75..38e2e6fc3155728843243068bf86a17bcd263ee1 100644 --- a/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts +++ b/src/app/components/dialog-confirm-empty-session/dialog-confirm-empty-session.component.ts @@ -15,19 +15,19 @@ export class DialogConfirmEmptySessionComponent { ) { } public get uitextYes() { - return this.intlService.localizeText("INFO_OPTION_START_NEW"); + return this.intlService.localizeText("INFO_OPTION_START_NEW"); } public get uitextNo() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextEmptySessionTitle() { - return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TITRE"); + return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TITRE"); } public get uitextEmptySessionBody() { - return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TEXT"); + return this.intlService.localizeText("INFO_EMPTY_SESSION_DIALOGUE_TEXT"); } } diff --git a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html index c5658d7f41095ce626f2b91b61f896ca1cdfde95..fd7170e38b8c7ffb2c5bf8cc8131c9e1d6100810 100644 --- a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html +++ b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.html @@ -2,73 +2,73 @@ <form> - <div mat-dialog-content> + <div mat-dialog-content> - <!-- récap selection --> - <div id="selection-abstract"> - {{ selectionAbstract }} - </div> + <!-- récap selection --> + <div id="selection-abstract"> + {{ selectionAbstract }} + </div> - <!-- champ à modifier --> - <mat-form-field class="select-form-field"> - <mat-select [placeholder]="uitextVariable" [(value)]="variable"> - <mat-option *ngFor="let v of availableVariables" [value]="v.value" [title]="v.label"> - {{ v.label }} - </mat-option> - </mat-select> - </mat-form-field> + <!-- champ à modifier --> + <mat-form-field class="select-form-field"> + <mat-select [placeholder]="uitextVariable" [(value)]="variable"> + <mat-option *ngFor="let v of availableVariables" [value]="v.value" [title]="v.label"> + {{ v.label }} + </mat-option> + </mat-select> + </mat-form-field> - <!-- ngDefaultControl : see https://github.com/angular/components/issues/8267 --> - <mat-radio-group ngDefaultControl [(ngModel)]="varAction" name="varAction"> + <!-- ngDefaultControl : see https://github.com/angular/components/issues/8267 --> + <mat-radio-group ngDefaultControl [(ngModel)]="varAction" name="varAction"> - <div class="radio-button-and-input-wrapper rbaiw-set-value"> - <mat-radio-button value="set-value"> - {{ uitextSetValue }} - </mat-radio-button> - <mat-form-field class="input-form-field"> - <input matInput [(ngModel)]="valueToSet" name="valueToSet" #valueToSetRef="ngModel" - required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - </mat-form-field> - <mat-error *ngIf="varAction === 'set-value' && valueToSetRef.invalid"> - {{ uitextMustBeANumber }} - </mat-error> - </div> + <div class="radio-button-and-input-wrapper rbaiw-set-value"> + <mat-radio-button value="set-value"> + {{ uitextSetValue }} + </mat-radio-button> + <mat-form-field class="input-form-field"> + <input matInput [(ngModel)]="valueToSet" name="valueToSet" #valueToSetRef="ngModel" required + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + </mat-form-field> + <mat-error *ngIf="varAction === 'set-value' && valueToSetRef.invalid"> + {{ uitextMustBeANumber }} + </mat-error> + </div> - <div class="radio-button-and-input-wrapper rbaiw-delta"> - <mat-radio-button value="delta"> - {{ uitextDelta }} - </mat-radio-button> - <mat-form-field class="input-form-field"> - <input matInput [(ngModel)]="delta" name="delta" #deltaRef="ngModel" - required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - </mat-form-field> - <mat-error *ngIf="varAction === 'delta' && deltaRef.invalid"> - {{ uitextMustBeANumber }} - </mat-error> - </div> + <div class="radio-button-and-input-wrapper rbaiw-delta"> + <mat-radio-button value="delta"> + {{ uitextDelta }} + </mat-radio-button> + <mat-form-field class="input-form-field"> + <input matInput [(ngModel)]="delta" name="delta" #deltaRef="ngModel" required + pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + </mat-form-field> + <mat-error *ngIf="varAction === 'delta' && deltaRef.invalid"> + {{ uitextMustBeANumber }} + </mat-error> + </div> - <div class="radio-button-and-input-wrapper"> - <mat-radio-button value="interpolate" [disabled]="! interpolationEnabled"> - {{ uitextInterpolate }} - <span class="interpolation-bounds"> - {{ interpolationBounds }} - </span> - </mat-radio-button> - </div> + <div class="radio-button-and-input-wrapper"> + <mat-radio-button value="interpolate" [disabled]="! interpolationEnabled"> + {{ uitextInterpolate }} + <span class="interpolation-bounds"> + {{ interpolationBounds }} + </span> + </mat-radio-button> + </div> - </mat-radio-group> + </mat-radio-group> - </div> + </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="applyValues()" - [disabled]="buttonDisabled(valueToSetRef, deltaRef)"> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="applyValues()" + [disabled]="buttonDisabled(valueToSetRef, deltaRef)"> - {{ uitextValidate }} - </button> - </div> + {{ uitextValidate }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts index 3ae949d911c1500bdc4f8622f521badff6e56564..d12470e4bed6595a578367ebe583cd06813c45f0 100644 --- a/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts +++ b/src/app/components/dialog-edit-pab/dialog-edit-pab.component.ts @@ -8,190 +8,190 @@ import { sprintf } from "sprintf-js"; @Component({ selector: "dialog-edit-pab", templateUrl: "dialog-edit-pab.component.html", - styleUrls: [ "dialog-edit-pab.component.scss" ] + styleUrls: ["dialog-edit-pab.component.scss"] }) export class DialogEditPabComponent { - /** variables eligible to modification */ - public availableVariables: any[]; - - /** symbols of the variables eligible to modification */ - public availableVariableSymbols: string[]; - - /** action to apply to the variable */ - public varAction: string; - - /** value to set to all occurrences of the variable */ - public valueToSet: number; - - /** delta to apply (add) to all occurrences of the variable */ - public delta: number; - - /** true if selected devices are contained in one unique column */ - public vertical: boolean; - - /** variable to modify on every selected object */ - private _variable: string; - - /** number of selected walls and devices */ - private selectedItemsAbstract: { walls: number, wallsDevices: number, devices: number }; - - constructor( - public dialogRef: MatDialogRef<DialogEditPabComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - this.selectedItemsAbstract = this.data.selectedItemsAbstract; - this.vertical = this.data.vertical; - this.availableVariables = this.data.availableVariables; - // console.log("AV VAR", this.availableVariables); - this.availableVariableSymbols = this.availableVariables.map(av => av.value); - this.variable = this.availableVariableSymbols[0]; - // default action - this.varAction = "set-value"; - // example values for validation / avoiding using a placeholder - this.valueToSet = this.availableVariables[0].first; - this.delta = 0; - } - - public get variable(): string { - return this._variable; - } - - // find available variable details from key - private findVariableDetails(variable: string): any { - let details: any; - for (const av of this.availableVariables) { - if (av.value === variable) { - details = av; - } - } - return details; - } - - // preloads valueToSet depending on variable chosen - public set variable(v: string) { - this._variable = v; - const av = this.findVariableDetails(v); - this.valueToSet = av.first; - } - - /** closes dialog and tells parent to apply modifications */ - public applyValues() { - this.dialogRef.close({ - action: this.varAction, - variable: this.variable, - value: Number(this.valueToSet), - delta: Number(this.delta), - variableDetails: this.findVariableDetails(this.variable) - }); - } - - public buttonDisabled(value: any, delta: any) { - return ( - (this.varAction === "set-value" && ! value.valid) - || (this.varAction === "delta" && ! delta.valid) - ); - } - - /** returns a short text summing up what is selected */ - public get selectionAbstract() { - let abstract = ""; - if (this.selectedItemsAbstract.walls > 0) { - // devices outside of complete walls ? - if (this.selectedItemsAbstract.devices > 0) { - abstract = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES"), - this.selectedItemsAbstract.walls, - this.selectedItemsAbstract.devices, - this.selectedItemsAbstract.wallsDevices + this.selectedItemsAbstract.devices - ); - } else { - // only complete walls - abstract = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS"), - this.selectedItemsAbstract.walls, - this.selectedItemsAbstract.wallsDevices + /** variables eligible to modification */ + public availableVariables: any[]; + + /** symbols of the variables eligible to modification */ + public availableVariableSymbols: string[]; + + /** action to apply to the variable */ + public varAction: string; + + /** value to set to all occurrences of the variable */ + public valueToSet: number; + + /** delta to apply (add) to all occurrences of the variable */ + public delta: number; + + /** true if selected devices are contained in one unique column */ + public vertical: boolean; + + /** variable to modify on every selected object */ + private _variable: string; + + /** number of selected walls and devices */ + private selectedItemsAbstract: { walls: number, wallsDevices: number, devices: number }; + + constructor( + public dialogRef: MatDialogRef<DialogEditPabComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + this.selectedItemsAbstract = this.data.selectedItemsAbstract; + this.vertical = this.data.vertical; + this.availableVariables = this.data.availableVariables; + // console.log("AV VAR", this.availableVariables); + this.availableVariableSymbols = this.availableVariables.map(av => av.value); + this.variable = this.availableVariableSymbols[0]; + // default action + this.varAction = "set-value"; + // example values for validation / avoiding using a placeholder + this.valueToSet = this.availableVariables[0].first; + this.delta = 0; + } + + public get variable(): string { + return this._variable; + } + + // find available variable details from key + private findVariableDetails(variable: string): any { + let details: any; + for (const av of this.availableVariables) { + if (av.value === variable) { + details = av; + } + } + return details; + } + + // preloads valueToSet depending on variable chosen + public set variable(v: string) { + this._variable = v; + const av = this.findVariableDetails(v); + this.valueToSet = av.first; + } + + /** closes dialog and tells parent to apply modifications */ + public applyValues() { + this.dialogRef.close({ + action: this.varAction, + variable: this.variable, + value: Number(this.valueToSet), + delta: Number(this.delta), + variableDetails: this.findVariableDetails(this.variable) + }); + } + + public buttonDisabled(value: any, delta: any) { + return ( + (this.varAction === "set-value" && !value.valid) + || (this.varAction === "delta" && !delta.valid) ); - } - } else { - // no complete wall, devices only - abstract = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_DEVICES"), - this.selectedItemsAbstract.devices - ); - } - return abstract; - } - - public variableLabel(v: string) { - const av = this.findVariableDetails(v); - return av.label; - } - - public get interpolationEnabled() { - const varDetails = this.findVariableDetails(this.variable); - return ( - this.vertical - && (this.selectedItemsAbstract.devices + this.selectedItemsAbstract.wallsDevices) > 1 - && (varDetails.occurrences > 1) - && ([ "ZRAM", "ZRMB", "ZDV" ].includes(this.variable)) - ); - } - - public get interpolationBounds() { - let bounds = ""; - if (this.interpolationEnabled) { - const varDetails = this.findVariableDetails(this.variable); - if (varDetails) { - bounds = sprintf( - this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS"), - varDetails.first, - varDetails.last + } + + /** returns a short text summing up what is selected */ + public get selectionAbstract() { + let abstract = ""; + if (this.selectedItemsAbstract.walls > 0) { + // devices outside of complete walls ? + if (this.selectedItemsAbstract.devices > 0) { + abstract = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES"), + this.selectedItemsAbstract.walls, + this.selectedItemsAbstract.devices, + this.selectedItemsAbstract.wallsDevices + this.selectedItemsAbstract.devices + ); + } else { + // only complete walls + abstract = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_WALLS"), + this.selectedItemsAbstract.walls, + this.selectedItemsAbstract.wallsDevices + ); + } + } else { + // no complete wall, devices only + abstract = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_N_DEVICES"), + this.selectedItemsAbstract.devices + ); + } + return abstract; + } + + public variableLabel(v: string) { + const av = this.findVariableDetails(v); + return av.label; + } + + public get interpolationEnabled() { + const varDetails = this.findVariableDetails(this.variable); + return ( + this.vertical + && (this.selectedItemsAbstract.devices + this.selectedItemsAbstract.wallsDevices) > 1 + && (varDetails.occurrences > 1) + && (["ZRAM", "ZRMB", "ZDV"].includes(this.variable)) ); - } } - return bounds; - } - public get uitextEditPabTitle() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_TITLE"); - } + public get interpolationBounds() { + let bounds = ""; + if (this.interpolationEnabled) { + const varDetails = this.findVariableDetails(this.variable); + if (varDetails) { + bounds = sprintf( + this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS"), + varDetails.first, + varDetails.last + ); + } + } + return bounds; + } - public get uitextVariable() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE"); - } + public get uitextEditPabTitle() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_TITLE"); + } - public get uitextSetValue() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE"); - } + public get uitextVariable() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE"); + } + + public get uitextSetValue() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE"); + } - public get uitextDelta() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_DELTA"); - } + public get uitextDelta() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_DELTA"); + } - public get uitextInterpolate() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_INTERPOLATE"); - } + public get uitextInterpolate() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_OPTION_INTERPOLATE"); + } - public get uitextSetValueInput() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_SET_VALUE_INPUT"); - } + public get uitextSetValueInput() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_SET_VALUE_INPUT"); + } - public get uitextDeltaInput() { - return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_DELTA_INPUT"); - } + public get uitextDeltaInput() { + return this.intlService.localizeText("INFO_DIALOG_EDIT_PAB_DELTA_INPUT"); + } - public get uitextMustBeANumber(): string { - return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); - } + public get uitextMustBeANumber(): string { + return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); + } - public get uitextValidate() { - return this.intlService.localizeText("INFO_OPTION_VALIDATE"); - } + public get uitextValidate() { + return this.intlService.localizeText("INFO_OPTION_VALIDATE"); + } - public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); - } + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } } diff --git a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html index e3a40065da10db038c0e6aebc7f63cf657bd19d2..0ec1a116e403907574eb6db4a0c039b2061bbdb7 100644 --- a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html +++ b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.html @@ -2,17 +2,17 @@ <form> - <div mat-dialog-content> - <ngparam-input [title]="param.title" ></ngparam-input> - </div> + <div mat-dialog-content> + <ngparam-input [title]="param.title"></ngparam-input> + </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="true" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button color="warn" (click)="onValidate()"> - {{ uitextValidate }} - </button> - </div> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="true" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button color="warn" (click)="onValidate()"> + {{ uitextValidate }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts index d971e1ea6851430ebe9cae41ded481c02ca89d6e..4984494eb4220fc5b73ae2b588afb6a7a62ca6bb 100644 --- a/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts +++ b/src/app/components/dialog-edit-param-computed/dialog-edit-param-computed.component.ts @@ -20,17 +20,17 @@ export class DialogEditParamComputedComponent implements OnInit { private _ngParamInputComponent: NgParamInputComponent; constructor( - public dialogRef: MatDialogRef<DialogEditParamComputedComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any + public dialogRef: MatDialogRef<DialogEditParamComputedComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any ) { - // copy given parameter in a "fake" Ngparameter - const nP = data.param as NgParameter; - const p = nP.paramDefinition as ParamDefinition; - const pDef = new ParamDefinition(undefined, p.symbol, p.domain, p.unit, p.getValue(), p.family, p.visible); - this.param = new NgParameter(pDef, undefined); - this.param.setLabel(nP.label); - this.param.unit = nP.unit; + // copy given parameter in a "fake" Ngparameter + const nP = data.param as NgParameter; + const p = nP.paramDefinition as ParamDefinition; + const pDef = new ParamDefinition(undefined, p.symbol, p.domain, p.unit, p.getValue(), p.family, p.visible); + this.param = new NgParameter(pDef, undefined); + this.param.setLabel(nP.label); + this.param.unit = nP.unit; } public get uitextCancel(): string { @@ -42,16 +42,16 @@ export class DialogEditParamComputedComponent implements OnInit { } public get uitextEditParamComputedInitialValue() { - return this.intlService.localizeText("INFO_DIALOG_COMPUTED_VALUE_TITLE"); + return this.intlService.localizeText("INFO_DIALOG_COMPUTED_VALUE_TITLE"); } public ngOnInit() { - this._ngParamInputComponent.model = this.param; + this._ngParamInputComponent.model = this.param; } public onValidate() { - this.dialogRef.close({ - value: this.param.getValue() - }); + this.dialogRef.close({ + value: this.param.getValue() + }); } } diff --git a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html index 594a6de2c606b0fb3ffc03b01e03c9e5aecdcfc6..8a454d5c176463e73a6ebf8b8f54c95be76b6121 100644 --- a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html +++ b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.html @@ -5,15 +5,15 @@ <h1 mat-dialog-title>{{ uitextEditParamVariableValues }} ({{ numberOfValues }})</h1> - <div mat-dialog-content *ngIf="! viewChart"> +<div mat-dialog-content *ngIf="! viewChart"> <mat-form-field> - <mat-select [placeholder]="uiTextModeSelection" [(value)]="selectedValueMode" (selectionChange)="onValueModeChange($event)" - data-testid="variable-value-mode-select"> - <mat-option *ngFor="let e of valueModes" [value]="e.value"> - {{ e.label }} - </mat-option> - </mat-select> + <mat-select [placeholder]="uiTextModeSelection" [(value)]="selectedValueMode" + (selectionChange)="onValueModeChange($event)" data-testid="variable-value-mode-select"> + <mat-option *ngFor="let e of valueModes" [value]="e.value"> + {{ e.label }} + </mat-option> + </mat-select> </mat-form-field> <div *ngIf="isMinMax" class="min-max-step-container"> @@ -21,8 +21,8 @@ <mat-form-field> <input matInput class="form-control" type="number" inputmode="numeric" name="min-value" step="0.01" [placeholder]="uitextValeurMini" [(ngModel)]="minValue" #min="ngModel" name="min" - (input)="minMaxForm.controls.max.updateValueAndValidity()" - [appJalhydModelValidationMin]="param" required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + (input)="minMaxForm.controls.max.updateValueAndValidity()" [appJalhydModelValidationMin]="param" + required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> <mat-error *ngIf="min.errors"> <div *ngIf="min.errors.required || min.errors.pattern"> @@ -37,28 +37,27 @@ <mat-form-field> <input matInput class="form-control" type="number" inputmode="numeric" name="max-value" step="0.01" [placeholder]="uitextValeurMaxi" [(ngModel)]="maxValue" #max="ngModel" name="max" - (input)="minMaxForm.controls.min.updateValueAndValidity()" - [appJalhydModelValidationMax]="param" required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - - <mat-error *ngIf="max.errors"> - <div *ngIf="max.errors.required || max.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - <div *ngIf="! max.errors.required && max.errors.jalhydModelMax"> - {{ max.errors.jalhydModelMax.message }} - </div> - </mat-error> + (input)="minMaxForm.controls.min.updateValueAndValidity()" [appJalhydModelValidationMax]="param" + required pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + + <mat-error *ngIf="max.errors"> + <div *ngIf="max.errors.required || max.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + <div *ngIf="! max.errors.required && max.errors.jalhydModelMax"> + {{ max.errors.jalhydModelMax.message }} + </div> + </mat-error> </mat-form-field> <mat-form-field> <input matInput class="form-control" type="number" inputmode="numeric" name="step-value" step="0.01" [placeholder]="uitextPasVariation" [(ngModel)]="stepValue" #step="ngModel" name="step" - [appJalhydModelValidationStep]="param" - required pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> + [appJalhydModelValidationStep]="param" required pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$"> - <mat-error *ngIf="step.errors"> - {{ uitextMustBePositive }} - </mat-error> + <mat-error *ngIf="step.errors"> + {{ uitextMustBePositive }} + </mat-error> </mat-form-field> </form> </div> @@ -68,7 +67,7 @@ <mat-form-field> <textarea matInput matTextareaAutosize [placeholder]="uitextListeValeurs" formControlName="valuesList" [value]="valuesList"></textarea> - <!-- (input)="valuesList = $event.target.value" --> + <!-- (input)="valuesList = $event.target.value" --> <mat-error> <span *ngIf="valuesListForm.controls.valuesList.hasError('model')"> {{ valuesListForm.controls.valuesList.errors.model }} @@ -92,8 +91,8 @@ <div fxHide.xs fxFlex.gt-xs="0 0 16px"></div> <mat-form-field class="values-file file-input-field" fxFlex.gt-xs="1 0 auto" fxFlex.lt-sm="1 0 100%"> - <ngx-mat-file-input #valuesFile [placeholder]="uitextImportFile" - (change)="onFileSelected($event)" formControlName="file"> + <ngx-mat-file-input #valuesFile [placeholder]="uitextImportFile" (change)="onFileSelected($event)" + formControlName="file"> </ngx-mat-file-input> <button mat-icon-button matSuffix *ngIf="!valuesFile.empty" (click)="valuesFile.clear($event)"> <mat-icon>clear</mat-icon> @@ -104,22 +103,22 @@ </div> <mat-form-field> - <mat-select [placeholder]="uitextExtensionStrategy" [(value)]="selectedExtensionStrategy" - data-testid="variable-extension-strategy-select"> - <mat-option *ngFor="let e of extensionStrategies" [value]="e.value" [title]="e.label"> - {{ e.label }} - </mat-option> - </mat-select> + <mat-select [placeholder]="uitextExtensionStrategy" [(value)]="selectedExtensionStrategy" + data-testid="variable-extension-strategy-select"> + <mat-option *ngFor="let e of extensionStrategies" [value]="e.value" [title]="e.label"> + {{ e.label }} + </mat-option> + </mat-select> </mat-form-field> - </div> +</div> - <div mat-dialog-content *ngIf="viewChart"> - <chart id="values-chart" type="scatter" [data]="chartData" [options]="chartOptions"> - </chart> - </div> +<div mat-dialog-content *ngIf="viewChart"> + <chart id="values-chart" type="scatter" [data]="chartData" [options]="chartOptions"> + </chart> +</div> - <div mat-dialog-actions [attr.align]="'end'"> +<div mat-dialog-actions [attr.align]="'end'"> <div *ngIf="isMinMax || viewChart"> <button mat-raised-button [mat-dialog-close]="true" [disabled]="minMaxFormInvalid" cdkFocusInitial> {{ uitextClose }} @@ -133,4 +132,4 @@ {{ uitextValidate }} </button> </div> - </div> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts index 7da1e632c09e9dcb65956a268df582f92131a3a1..3c419f000945cd25d2e946e2d8518ad516727484 100644 --- a/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts +++ b/src/app/components/dialog-edit-param-values/dialog-edit-param-values.component.ts @@ -215,7 +215,10 @@ export class DialogEditParamValuesComponent implements OnInit { if (this.param.paramDefinition.step === 0) { return 0; } else { - return Math.max(0, Math.ceil((this.param.paramDefinition.max - this.param.paramDefinition.min) / this.param.paramDefinition.step) + 1); + return Math.max( + 0, + Math.ceil((this.param.paramDefinition.max - this.param.paramDefinition.min) / this.param.paramDefinition.step) + 1 + ); } } catch (e) { // min > max or something, silent fail diff --git a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html index c1161f20c451d272622d87db4d7f3b5d795b9a02..2f1ad4f3bfd9aaac1f0fa6ab74515300fed75cf7 100644 --- a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html +++ b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.html @@ -2,48 +2,48 @@ <form id="form-generate-pab"> - <div mat-dialog-content> - - <mat-form-field> - <input matInput required [placeholder]="uitextDebit" pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" - [(ngModel)]="debit" name="debit" #inputDebit="ngModel" id="generatePabDebit"> - </mat-form-field> - <mat-error *ngIf="inputDebit.invalid && (inputDebit.dirty || inputDebit.touched)"> - <div *ngIf="inputDebit.errors.required || inputDebit.errors.pattern"> - {{ uitextMustBePositive }} - </div> - </mat-error> - - <mat-form-field> - <input matInput required [placeholder]="uitextCoteAmont" pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" - [(ngModel)]="coteAmont" name="coteAmont" #inputCoteAmont="ngModel" id="generatePabCoteAmont"> - </mat-form-field> - <mat-error *ngIf="inputCoteAmont.invalid && (inputCoteAmont.dirty || inputCoteAmont.touched)"> - <div *ngIf="inputCoteAmont.errors.required || inputCoteAmont.errors.pattern"> - {{ uitextMustBeANumber }} - </div> - </mat-error> - - <mat-form-field> - <input matInput required [placeholder]="uitextNBBassins" pattern="^([2-9]|[1-9][0-9]+)$" - [(ngModel)]="nbBassins" name="nbBassins" #inputNbBassins="ngModel" id="generatePabNbBassins"> - </mat-form-field> - <mat-error *ngIf="inputNbBassins.invalid && (inputNbBassins.dirty || inputNbBassins.touched)"> - <div *ngIf="inputNbBassins.errors.required || inputNbBassins.errors.pattern"> - {{ uitextMustBeAtLeastTwo }} - </div> - </mat-error> - - </div> - - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="generatePAB()" id="do-generate" - [disabled]="(inputDebit.invalid || inputCoteAmont.invalid || inputNbBassins.invalid)"> - {{ uitextGenerate }} - </button> - </div> - -</form> + <div mat-dialog-content> + + <mat-form-field> + <input matInput required [placeholder]="uitextDebit" pattern="^([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" + [(ngModel)]="debit" name="debit" #inputDebit="ngModel" id="generatePabDebit"> + </mat-form-field> + <mat-error *ngIf="inputDebit.invalid && (inputDebit.dirty || inputDebit.touched)"> + <div *ngIf="inputDebit.errors.required || inputDebit.errors.pattern"> + {{ uitextMustBePositive }} + </div> + </mat-error> + + <mat-form-field> + <input matInput required [placeholder]="uitextCoteAmont" pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" + [(ngModel)]="coteAmont" name="coteAmont" #inputCoteAmont="ngModel" id="generatePabCoteAmont"> + </mat-form-field> + <mat-error *ngIf="inputCoteAmont.invalid && (inputCoteAmont.dirty || inputCoteAmont.touched)"> + <div *ngIf="inputCoteAmont.errors.required || inputCoteAmont.errors.pattern"> + {{ uitextMustBeANumber }} + </div> + </mat-error> + + <mat-form-field> + <input matInput required [placeholder]="uitextNBBassins" pattern="^([2-9]|[1-9][0-9]+)$" + [(ngModel)]="nbBassins" name="nbBassins" #inputNbBassins="ngModel" id="generatePabNbBassins"> + </mat-form-field> + <mat-error *ngIf="inputNbBassins.invalid && (inputNbBassins.dirty || inputNbBassins.touched)"> + <div *ngIf="inputNbBassins.errors.required || inputNbBassins.errors.pattern"> + {{ uitextMustBeAtLeastTwo }} + </div> + </mat-error> + + </div> + + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="generatePAB()" id="do-generate" + [disabled]="(inputDebit.invalid || inputCoteAmont.invalid || inputNbBassins.invalid)"> + {{ uitextGenerate }} + </button> + </div> + +</form> \ No newline at end of file diff --git a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts index 062a4f2375fe5d0870f32857a51f59c6048e0e9b..9634a342bf3e3109f3670613af3adbb00a7cb1ff 100644 --- a/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts +++ b/src/app/components/dialog-generate-pab/dialog-generate-pab.component.ts @@ -14,76 +14,76 @@ import { round } from "jalhyd"; }) export class DialogGeneratePABComponent { - public debit = 1.5; - - public coteAmont = 102; - - public chute: number; - - public nbBassins = 6; - - constructor( - public dialogRef: MatDialogRef<DialogGeneratePABComponent>, - private intlService: I18nService, - private appSetupService: ApplicationSetupService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - const nDigits = this.appSetupService.displayPrecision; - this.coteAmont = round(data.coteAmont, nDigits); - this.debit = round(data.debit, nDigits); - this.chute = round(data.chute, nDigits); - } - - public generatePAB() { - // calculate downstream elevation - const coteAval = this.coteAmont - (this.chute * this.nbBassins); - // create PAB - this.dialogRef.close({ - generate: true, - debit: this.debit, - coteAmont: this.coteAmont, - coteAval: coteAval, - nbBassins: this.nbBassins - }); - } - - public get uitextDebit() { - return this.intlService.localizeText("INFO_DIALOG_PAB_Q"); - } - - public get uitextCoteAmont() { - return this.intlService.localizeText("INFO_DIALOG_PAB_Z1"); - } - - public get uitextCoteAval() { - return this.intlService.localizeText("INFO_DIALOG_PAB_Z2"); - } - - public get uitextNBBassins() { - return this.intlService.localizeText("INFO_DIALOG_PAB_NB"); - } - - public get uitextMustBeANumber() { - return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); - } - - public get uitextMustBePositive() { - return this.intlService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"); - } - - public get uitextMustBeAtLeastTwo() { - return sprintf(this.intlService.localizeText("ERROR_PARAM_MUST_BE_AT_LEAST"), 2); - } - - public get uitextGeneratePAB() { - return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAB"); - } - - public get uitextGenerate() { - return this.intlService.localizeText("INFO_OPTION_GENERATE"); - } - - public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); - } + public debit = 1.5; + + public coteAmont = 102; + + public chute: number; + + public nbBassins = 6; + + constructor( + public dialogRef: MatDialogRef<DialogGeneratePABComponent>, + private intlService: I18nService, + private appSetupService: ApplicationSetupService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + const nDigits = this.appSetupService.displayPrecision; + this.coteAmont = round(data.coteAmont, nDigits); + this.debit = round(data.debit, nDigits); + this.chute = round(data.chute, nDigits); + } + + public generatePAB() { + // calculate downstream elevation + const coteAval = this.coteAmont - (this.chute * this.nbBassins); + // create PAB + this.dialogRef.close({ + generate: true, + debit: this.debit, + coteAmont: this.coteAmont, + coteAval: coteAval, + nbBassins: this.nbBassins + }); + } + + public get uitextDebit() { + return this.intlService.localizeText("INFO_DIALOG_PAB_Q"); + } + + public get uitextCoteAmont() { + return this.intlService.localizeText("INFO_DIALOG_PAB_Z1"); + } + + public get uitextCoteAval() { + return this.intlService.localizeText("INFO_DIALOG_PAB_Z2"); + } + + public get uitextNBBassins() { + return this.intlService.localizeText("INFO_DIALOG_PAB_NB"); + } + + public get uitextMustBeANumber() { + return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER"); + } + + public get uitextMustBePositive() { + return this.intlService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"); + } + + public get uitextMustBeAtLeastTwo() { + return sprintf(this.intlService.localizeText("ERROR_PARAM_MUST_BE_AT_LEAST"), 2); + } + + public get uitextGeneratePAB() { + return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAB"); + } + + public get uitextGenerate() { + return this.intlService.localizeText("INFO_OPTION_GENERATE"); + } + + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } } diff --git a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html index 3f42734c8ba1676103d58b21cb70f5c59d028367..dd11243cc6d0ef6fd9cb3c7a2ae70e895f979434 100644 --- a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html +++ b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.html @@ -2,27 +2,27 @@ <form id="form-generate-par-simulation"> - <div mat-dialog-content> - <div id="generate-par-sim-desc"> - {{ uitextDescription }} + <div mat-dialog-content> + <div id="generate-par-sim-desc"> + {{ uitextDescription }} + </div> + <mat-form-field> + <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> + <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> + {{ entryLabel(e) }} + </mat-option> + </mat-select> + </mat-form-field> </div> - <mat-form-field> - <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> - <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> - {{ entryLabel(e) }} - </mat-option> - </mat-select> - </mat-form-field> - </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="generatePARSimulation()" id="do-generate" - [disabled]=""> - {{ uitextGenerate }} - </button> - </div> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="generatePARSimulation()" id="do-generate" + [disabled]=""> + {{ uitextGenerate }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts index dcb9569028dc7588dd3db80e1514ab95b0bdbe19..ff941247e077a8b17258024d630da1701eafa70c 100644 --- a/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts +++ b/src/app/components/dialog-generate-par-simulation/dialog-generate-par-simulation.component.ts @@ -13,97 +13,97 @@ import { fv, longestVarNgParam } from "../../util"; }) export class DialogGeneratePARSimulationComponent { - public selectedValue: number; - - /** résultats de la ParCalage */ - private _results: MultiDimensionResults; - - /** size of the longest variable value */ - private size = 0; - - /** inferred extended values list for each variating parameter */ - private varValues = []; - - constructor( - public dialogRef: MatDialogRef<DialogGeneratePARSimulationComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - this._results = data.results; - this.selectedValue = 0; - - if (this._results) { - // pre-extract variable parameters values - this.varValues = []; - // find longest list - const lvp = longestVarNgParam(this._results.variatedParameters); - this.size = lvp.size; - // get extended values lists for each variable parameter - for (const v of this._results.variatedParameters) { - const vv = []; - const iter = v.getExtendedValuesIterator(this.size); - while (iter.hasNext) { - const nv = iter.next(); - vv.push(fv(nv.value)); - } - this.varValues.push(vv); - } - } - } - - public generatePARSimulation() { - this.dialogRef.close({ - generate: true, - selected: this.selectedValue, - size: this.size - }); - } - - public get uitextDescription() { - return this.intlService.localizeText("INFO_DIALOG_PARSIM_DESC"); - } - - public get uitextGeneratePARSimulation() { - return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAR_SIMULATION"); - } - - public get uitextGenerate() { - return this.intlService.localizeText("INFO_OPTION_GENERATE"); - } - - public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); - } - - public get entries(): number[] { - const ret: number[] = []; - for (let i = 0; i < this.size; i++) { - ret.push(i); - } - return ret; - } - - protected entryLabel(index: number): string { - const kv = []; - for (let i = 0; i < this.varValues.length; i++) { - const vv = this.varValues[i]; - const vp = this._results.variatedParameters[i]; - let symbol = vp.symbol; - // is vp a parameter of a child Nub ? - if ( - vp.paramDefinition.parentNub - && vp.paramDefinition.parentNub !== vp.paramDefinition.originNub - ) { - const pos = vp.paramDefinition.parentNub.findPositionInParent() + 1; - symbol = this.intlService.localizeText("INFO_LIB_RADIER_N_COURT") + pos + "_" + symbol; - } - kv.push(`${symbol} = ${vv[index]}`); - } - return kv.join(", "); - } - - public get label() { - return this.intlService.localizeText("INFO_PARAMFIELD_BOUNDARY_CONDITIONS"); - } + public selectedValue: number; + + /** résultats de la ParCalage */ + private _results: MultiDimensionResults; + + /** size of the longest variable value */ + private size = 0; + + /** inferred extended values list for each variating parameter */ + private varValues = []; + + constructor( + public dialogRef: MatDialogRef<DialogGeneratePARSimulationComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + this._results = data.results; + this.selectedValue = 0; + + if (this._results) { + // pre-extract variable parameters values + this.varValues = []; + // find longest list + const lvp = longestVarNgParam(this._results.variatedParameters); + this.size = lvp.size; + // get extended values lists for each variable parameter + for (const v of this._results.variatedParameters) { + const vv = []; + const iter = v.getExtendedValuesIterator(this.size); + while (iter.hasNext) { + const nv = iter.next(); + vv.push(fv(nv.value)); + } + this.varValues.push(vv); + } + } + } + + public generatePARSimulation() { + this.dialogRef.close({ + generate: true, + selected: this.selectedValue, + size: this.size + }); + } + + public get uitextDescription() { + return this.intlService.localizeText("INFO_DIALOG_PARSIM_DESC"); + } + + public get uitextGeneratePARSimulation() { + return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAR_SIMULATION"); + } + + public get uitextGenerate() { + return this.intlService.localizeText("INFO_OPTION_GENERATE"); + } + + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } + + public get entries(): number[] { + const ret: number[] = []; + for (let i = 0; i < this.size; i++) { + ret.push(i); + } + return ret; + } + + protected entryLabel(index: number): string { + const kv = []; + for (let i = 0; i < this.varValues.length; i++) { + const vv = this.varValues[i]; + const vp = this._results.variatedParameters[i]; + let symbol = vp.symbol; + // is vp a parameter of a child Nub ? + if ( + vp.paramDefinition.parentNub + && vp.paramDefinition.parentNub !== vp.paramDefinition.originNub + ) { + const pos = vp.paramDefinition.parentNub.findPositionInParent() + 1; + symbol = this.intlService.localizeText("INFO_LIB_RADIER_N_COURT") + pos + "_" + symbol; + } + kv.push(`${symbol} = ${vv[index]}`); + } + return kv.join(", "); + } + + public get label() { + return this.intlService.localizeText("INFO_PARAMFIELD_BOUNDARY_CONDITIONS"); + } } diff --git a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html new file mode 100644 index 0000000000000000000000000000000000000000..d82ff2f0734064bf5ea0803d34257bd409984487 --- /dev/null +++ b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.html @@ -0,0 +1,25 @@ +<h1 mat-dialog-title [innerHTML]="uitextLoadPredefinedEspece"></h1> + +<form id="form-load-predefined-espece"> + + <div mat-dialog-content> + <mat-form-field> + <mat-select id="select-combination" [placeholder]="label" [(value)]="selectedValue"> + <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> + {{ entryLabel(e) }} + </mat-option> + </mat-select> + </mat-form-field> + </div> + + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="loadPredefinedEspece()" id="do-load" + [disabled]=""> + {{ uitextLoad }} + </button> + </div> + +</form> \ No newline at end of file diff --git a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.scss b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..afeb091e7754d5a64c1fa3c808a882563a9b62d3 --- /dev/null +++ b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.scss @@ -0,0 +1,7 @@ +#form-load-predefined-espece { + max-width: 500px; +} + +mat-form-field { + width: 100%; +} diff --git a/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.ts b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..afebdcecbf375f99b84ee25b85a729a28a4b290b --- /dev/null +++ b/src/app/components/dialog-load-predefined-espece/dialog-load-predefined-espece.component.ts @@ -0,0 +1,61 @@ +import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; +import { Inject, Component } from "@angular/core"; + +import { I18nService } from "../../services/internationalisation.service"; + +import { FishSpecies } from "jalhyd"; + +@Component({ + selector: "dialog-load-predefined-espece", + templateUrl: "dialog-load-predefined-espece.component.html", + styleUrls: ["dialog-load-predefined-espece.component.scss"] +}) +export class DialogLoadPredefinedEspeceComponent { + + public selectedValue: number; + + constructor( + public dialogRef: MatDialogRef<DialogLoadPredefinedEspeceComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + this.selectedValue = 1; + } + + public loadPredefinedEspece() { + this.dialogRef.close({ + load: true, + selected: this.selectedValue + }); + } + + public get uitextLoadPredefinedEspece() { + return this.intlService.localizeText("INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE"); + } + + public get uitextLoad() { + return this.intlService.localizeText("INFO_OPTION_LOAD"); + } + + public get uitextCancel() { + return this.intlService.localizeText("INFO_OPTION_CANCEL"); + } + + public get entries(): number[] { + const ret: number[] = []; + for (let j = 1; j < Object.keys(FishSpecies).length / 2; j++) { // exclude "0" (SPECIES_CUSTOM) + // const spgId = FishSpecies[j].substring(FishSpecies[j].lastIndexOf("_") + 1); + ret.push(j); + } + return ret; + } + + protected entryLabel(index: number): string { + return this.intlService.localizeText("INFO_ENUM_" + FishSpecies[index]); + } + + public get label() { + return this.intlService.localizeText("INFO_ESPECE_TITRE_COURT"); + } + +} diff --git a/src/app/components/dialog-load-session/dialog-load-session.component.html b/src/app/components/dialog-load-session/dialog-load-session.component.html index ba088e2bfa6021366e8118e3073701683278952b..bbb1ed6f6e4ed95a76afce4b56bf2e5e6bbce69a 100644 --- a/src/app/components/dialog-load-session/dialog-load-session.component.html +++ b/src/app/components/dialog-load-session/dialog-load-session.component.html @@ -2,70 +2,71 @@ <form [formGroup]="loadSessionForm"> - <div mat-dialog-content> + <div mat-dialog-content> - <mat-form-field class="file-input-field"> - <ngx-mat-file-input id="session-file-input" #sessionFile formControlName="file"[placeholder]="uitextLoadSessionFilename" - (change)="onFileSelected($event)"></ngx-mat-file-input> - <button mat-icon-button matSuffix *ngIf="!sessionFile.empty" (click)="sessionFile.clear($event)"> - <mat-icon>clear</mat-icon> - </button> - </mat-form-field> + <mat-form-field class="file-input-field"> + <ngx-mat-file-input id="session-file-input" #sessionFile formControlName="file" + [placeholder]="uitextLoadSessionFilename" (change)="onFileSelected($event)"></ngx-mat-file-input> + <button mat-icon-button matSuffix *ngIf="!sessionFile.empty" (click)="sessionFile.clear($event)"> + <mat-icon>clear</mat-icon> + </button> + </mat-form-field> - <div class="cb-container"> - <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" (change)="checkLinkedParamsAndModelsDependencies()" - [(ngModel)]="c.selected" [ngModelOptions]="{standalone: true}"> - {{ c.title }} - </mat-checkbox> - </div> + <div class="cb-container"> + <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" + (change)="checkLinkedParamsAndModelsDependencies()" [(ngModel)]="c.selected" + [ngModelOptions]="{standalone: true}"> + {{ c.title }} + </mat-checkbox> + </div> - <div class="btn-container"> - <button mat-raised-button (click)="selectAll()" [disabled]="calculators.length === 0"> - {{ uitextAll }} - </button> - <button mat-raised-button (click)="selectNone()" [disabled]="calculators.length === 0"> - {{ uitextNone }} - </button> - </div> + <div class="btn-container"> + <button mat-raised-button (click)="selectAll()" [disabled]="calculators.length === 0"> + {{ uitextAll }} + </button> + <button mat-raised-button (click)="selectNone()" [disabled]="calculators.length === 0"> + {{ uitextNone }} + </button> + </div> - <div class="file-problem" *ngIf="fileProblem"> - <mat-list role="list"> - <mat-list-item role="listitem"> - <mat-icon color="warn">error_outline</mat-icon> {{ uitextFileProblem }} - </mat-list-item> - </mat-list> - </div> + <div class="file-problem" *ngIf="fileProblem"> + <mat-list role="list"> + <mat-list-item role="listitem"> + <mat-icon color="warn">error_outline</mat-icon> {{ uitextFileProblem }} + </mat-list-item> + </mat-list> + </div> - <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> - <mat-list role="list"> - <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> - <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} - </mat-list-item> - </mat-list> - <p> - <button mat-raised-button (click)="fixDependencies()" - [matBadge]="dependenciesProblems.length" matBadgeColor="warn"> - {{ uitextFixMissingDependencies }} - </button> - </p> + <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> + <mat-list role="list"> + <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> + <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} + </mat-list-item> + </mat-list> + <p> + <button mat-raised-button (click)="fixDependencies()" [matBadge]="dependenciesProblems.length" + matBadgeColor="warn"> + {{ uitextFixMissingDependencies }} + </button> + </p> + </div> </div> - </div> - <div class="cb-container"> - <mat-checkbox [(ngModel)]="emptyCurrentSession" [ngModelOptions]="{standalone: true}"> - {{ uitextEmptyCurrentSession }} - </mat-checkbox> - </div> + <div class="cb-container"> + <mat-checkbox [(ngModel)]="emptyCurrentSession" [ngModelOptions]="{standalone: true}"> + {{ uitextEmptyCurrentSession }} + </mat-checkbox> + </div> - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="loadSession()" - [disabled]="(loadSessionForm.invalid || ! atLeastOneCheckboxSelected)"> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="loadSession()" + [disabled]="(loadSessionForm.invalid || ! atLeastOneCheckboxSelected)"> - {{ uitextLoad }} - </button> - </div> + {{ uitextLoad }} + </button> + </div> -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-load-session/dialog-load-session.component.ts b/src/app/components/dialog-load-session/dialog-load-session.component.ts index a8f7aa8170bd9f4921dd8a0dcde1a70e79dde4a4..653cf5ff55a9376e8ccdce2a7072cb90fa274801 100644 --- a/src/app/components/dialog-load-session/dialog-load-session.component.ts +++ b/src/app/components/dialog-load-session/dialog-load-session.component.ts @@ -38,31 +38,31 @@ export class DialogLoadSessionComponent { private loadingComplete = false; constructor( - public dialogRef: MatDialogRef<DialogLoadSessionComponent>, - private intlService: I18nService, - private fb: FormBuilder, - @Inject(MAT_DIALOG_DATA) public data: any + public dialogRef: MatDialogRef<DialogLoadSessionComponent>, + private intlService: I18nService, + private fb: FormBuilder, + @Inject(MAT_DIALOG_DATA) public data: any ) { - this.loadSessionForm = this.fb.group({ - file: [null, Validators.required] - }); - this.libFormatVersion = config.serialisation.fileFormatVersion; + this.loadSessionForm = this.fb.group({ + file: [null, Validators.required] + }); + this.libFormatVersion = config.serialisation.fileFormatVersion; } public selectAll() { - for (const c of this.calculators) { - c.selected = true; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = true; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public selectNone() { - for (const c of this.calculators) { - c.selected = false; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = false; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } /** @@ -71,186 +71,186 @@ export class DialogLoadSessionComponent { * - PabCloisons depend on their models */ public checkLinkedParamsAndModelsDependencies() { - this.dependenciesProblems = []; - // for all checked Nubs - this.calculators.forEach((c) => { - if (c.selected) { - // do all required nubs are checked ? - c.requires.forEach((r) => { - if (! this.isCalculatorOrParentSelected(r)) { - const realUid = this.getUidOrParentUid(r); - const depTitle = this.getTitleFromUid(realUid); - this.dependenciesProblems.push({ - requiring: c.title, - required: depTitle, - requiredUid: realUid, - message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle - }); + this.dependenciesProblems = []; + // for all checked Nubs + this.calculators.forEach((c) => { + if (c.selected) { + // do all required nubs are checked ? + c.requires.forEach((r) => { + if (!this.isCalculatorOrParentSelected(r)) { + const realUid = this.getUidOrParentUid(r); + const depTitle = this.getTitleFromUid(realUid); + this.dependenciesProblems.push({ + requiring: c.title, + required: depTitle, + requiredUid: realUid, + message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle + }); + } + }); } - }); - } - }); + }); } public fixDependencies() { - for (const dp of this.dependenciesProblems) { - this.selectRequiredModule(dp.requiredUid); - } + for (const dp of this.dependenciesProblems) { + this.selectRequiredModule(dp.requiredUid); + } } private isCalculatorOrParentSelected(uid: string): boolean { - let isSelected = false; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - isSelected = c.selected; - } - }); - return isSelected; + let isSelected = false; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + isSelected = c.selected; + } + }); + return isSelected; } private getUidOrParentUid(uid: string): string { - let realUid: string; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - realUid = c.uid; - } - }); - return realUid; + let realUid: string; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + realUid = c.uid; + } + }); + return realUid; } private getTitleFromUid(uid: string): string { - let title: string; - this.calculators.forEach((c) => { - if (c.uid === uid) { - title = c.title; - } - }); - return title; + let title: string; + this.calculators.forEach((c) => { + if (c.uid === uid) { + title = c.title; + } + }); + return title; } private selectRequiredModule(uid: string) { - this.calculators.forEach((c) => { - if (c.uid === uid) { - c.selected = true; - } - }); - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + this.calculators.forEach((c) => { + if (c.uid === uid) { + c.selected = true; + } + }); + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public onFileSelected(event: any) { - if (event.target.files && event.target.files.length) { - this.file = event.target.files[0]; - // reinit file infos - this.calculators = []; - this.fileFormatVersion = ""; - // reinit flags - this.loadingError = false; - this.loadingComplete = false; - - const formService = ServiceFactory.instance.formulaireService; - formService.calculatorInfosFromSessionFile(this.file).then( - calcInfos => { - this.fileFormatVersion = calcInfos.formatVersion; - this.calculators = calcInfos.nubs; - for (const n of this.calculators) { - n.selected = true; - // if no title was given, generate a default one - if (! n.title) { - n.title = decode(formService.getLocalisedShortTitleFromCalculatorType(n.type)); - } - } - this.loadingComplete = true; - } - ).catch((err) => { - console.error(err); - this.loadingError = true; - }); - } + if (event.target.files && event.target.files.length) { + this.file = event.target.files[0]; + // reinit file infos + this.calculators = []; + this.fileFormatVersion = ""; + // reinit flags + this.loadingError = false; + this.loadingComplete = false; + + const formService = ServiceFactory.formulaireService; + formService.calculatorInfosFromSessionFile(this.file).then( + calcInfos => { + this.fileFormatVersion = calcInfos.formatVersion; + this.calculators = calcInfos.nubs; + for (const n of this.calculators) { + n.selected = true; + // if no title was given, generate a default one + if (!n.title) { + n.title = decode(formService.getLocalisedShortTitleFromCalculatorType(n.type)); + } + } + this.loadingComplete = true; + } + ).catch((err) => { + console.error(err); + this.loadingError = true; + }); + } } public loadSession() { - this.dialogRef.close({ - calculators: this.calculators, - file: this.file, - emptySession: this.emptyCurrentSession - }); + this.dialogRef.close({ + calculators: this.calculators, + file: this.file, + emptySession: this.emptyCurrentSession + }); } public get atLeastOneCheckboxSelected() { - let ok = false; - for (const c of this.calculators) { - ok = (ok || c.selected); - } - return ok; + let ok = false; + for (const c of this.calculators) { + ok = (ok || c.selected); + } + return ok; } /** * @returns true if any problem occurred during file loading */ public get fileProblem(): boolean { - return ( - this.loadingError - || - this.fileFormatVersionProblem() - || - this.fileIsEmpty() - ); + return ( + this.loadingError + || + this.fileFormatVersionProblem() + || + this.fileIsEmpty() + ); } private fileFormatVersionProblem(): boolean { - return this.fileFormatVersion && (this.fileFormatVersion !== this.libFormatVersion); + return this.fileFormatVersion && (this.fileFormatVersion !== this.libFormatVersion); } private fileIsEmpty(): boolean { - return this.loadingComplete && this.calculators.length === 0; + return this.loadingComplete && this.calculators.length === 0; } public get uitextLoad() { - return this.intlService.localizeText("INFO_OPTION_LOAD"); + return this.intlService.localizeText("INFO_OPTION_LOAD"); } public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextAll() { - return this.intlService.localizeText("INFO_OPTION_ALL"); + return this.intlService.localizeText("INFO_OPTION_ALL"); } public get uitextNone() { - return this.intlService.localizeText("INFO_OPTION_NONE"); + return this.intlService.localizeText("INFO_OPTION_NONE"); } public get uitextLoadSessionFilename() { - return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_FILENAME"); + return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_FILENAME"); } public get uitextLoadSessionTitle() { - return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_TITLE"); + return this.intlService.localizeText("INFO_DIALOG_LOAD_SESSION_TITLE"); } public get uitextFixMissingDependencies() { - return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); + return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); } public get uitextEmptyCurrentSession() { - return this.intlService.localizeText("INFO_DIALOG_EMPTY_CURRENT_SESSION"); + return this.intlService.localizeText("INFO_DIALOG_EMPTY_CURRENT_SESSION"); } public get uitextFileProblem() { - if (this.loadingError) { - return this.intlService.localizeText("INFO_DIALOG_ERROR_LOADING_FILE"); - } - if (this.fileFormatVersionProblem()) { - return sprintf( - this.intlService.localizeText("INFO_DIALOG_FORMAT_VERSIONS_MISMATCH"), - this.fileFormatVersion, - this.libFormatVersion - ); - } - if (this.fileIsEmpty()) { - return this.intlService.localizeText("INFO_DIALOG_FILE_IS_EMPTY"); - } + if (this.loadingError) { + return this.intlService.localizeText("INFO_DIALOG_ERROR_LOADING_FILE"); + } + if (this.fileFormatVersionProblem()) { + return sprintf( + this.intlService.localizeText("INFO_DIALOG_FORMAT_VERSIONS_MISMATCH"), + this.fileFormatVersion, + this.libFormatVersion + ); + } + if (this.fileIsEmpty()) { + return this.intlService.localizeText("INFO_DIALOG_FILE_IS_EMPTY"); + } } } diff --git a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html index a5dd7a17fd6216ee1eec3f6ff2504e15a21a2b7f..ad7493bec95630fb7e629cf9ebdb94e171f6ec35 100644 --- a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html +++ b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.html @@ -4,7 +4,7 @@ <log-entry *ngFor="let m of data.messages" [_message]="m"></log-entry> </div> <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button [mat-dialog-close]="true"> - {{ uitextClose }} - </button> -</div> + <button mat-raised-button [mat-dialog-close]="true"> + {{ uitextClose }} + </button> +</div> \ No newline at end of file diff --git a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts index b9669a32f9330f0301025a41bfc112c11061125f..08be1c7121c29207e0ed708ef54c446700d9012e 100644 --- a/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts +++ b/src/app/components/dialog-log-entries-details/dialog-log-entries-details.component.ts @@ -15,10 +15,10 @@ export class DialogLogEntriesDetailsComponent { ) { } public get uitextLogEntriesDetailsTitle() { - return this.intlService.localizeText("INFO_TITREJOURNAL"); + return this.intlService.localizeText("INFO_TITREJOURNAL"); } public get uitextClose() { - return this.intlService.localizeText("INFO_OPTION_CLOSE"); + return this.intlService.localizeText("INFO_OPTION_CLOSE"); } } diff --git a/src/app/components/dialog-save-session/dialog-save-session.component.html b/src/app/components/dialog-save-session/dialog-save-session.component.html index 4e522ee37715e047227c5e56381d47fe263e22c8..4d15ec7f098dcb721ade121c273e2fb65218139b 100644 --- a/src/app/components/dialog-save-session/dialog-save-session.component.html +++ b/src/app/components/dialog-save-session/dialog-save-session.component.html @@ -2,48 +2,48 @@ <form> - <div mat-dialog-content> - <div class="cb-container"> - <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" [(ngModel)]="c.selected" - (change)="checkLinkedParamsAndModelsDependencies()"> - {{ c.title }} - </mat-checkbox> + <div mat-dialog-content> + <div class="cb-container"> + <mat-checkbox [name]="c.uid" *ngFor="let c of calculators" [(ngModel)]="c.selected" + (change)="checkLinkedParamsAndModelsDependencies()"> + {{ c.title }} + </mat-checkbox> + </div> + + <div class="btn-container"> + <button mat-raised-button (click)="selectAll()">{{ uitextAll }}</button> + <button mat-raised-button (click)="selectNone()">{{ uitextNone }}</button> + </div> + + <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> + <mat-list role="list"> + <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> + <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} + </mat-list-item> + </mat-list> + <p> + <button mat-raised-button (click)="fixDependencies()" [matBadge]="dependenciesProblems.length" + matBadgeColor="warn"> + {{ uitextFixMissingDependencies }} + </button> + </p> + </div> + + <mat-form-field> + <input matInput required [placeholder]="uitextFilenameInput" [(ngModel)]="fileName" name="filename" + #filename="ngModel" (keydown.enter)="onEnterPressed($event)"> + </mat-form-field> </div> - <div class="btn-container"> - <button mat-raised-button (click)="selectAll()">{{ uitextAll }}</button> - <button mat-raised-button (click)="selectNone()">{{ uitextNone }}</button> - </div> + <div mat-dialog-actions [attr.align]="'end'"> + <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> + {{ uitextCancel }} + </button> + <button mat-raised-button type="submit" color="warn" (click)="saveSession()" + [disabled]="(! filename.valid) || (! atLeastOneCheckboxSelected)"> - <div class="dependencies-problems" *ngIf="dependenciesProblems.length > 0"> - <mat-list role="list"> - <mat-list-item role="listitem" *ngFor="let dp of dependenciesProblems"> - <mat-icon color="warn">error_outline</mat-icon> {{ dp.message }} - </mat-list-item> - </mat-list> - <p> - <button mat-raised-button (click)="fixDependencies()" - [matBadge]="dependenciesProblems.length" matBadgeColor="warn"> - {{ uitextFixMissingDependencies }} + {{ uitextSave }} </button> - </p> </div> - <mat-form-field> - <input matInput required [placeholder]="uitextFilenameInput" [(ngModel)]="fileName" - name="filename" #filename="ngModel" (keydown.enter)="onEnterPressed($event)"> - </mat-form-field> - </div> - - <div mat-dialog-actions [attr.align]="'end'"> - <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial> - {{ uitextCancel }} - </button> - <button mat-raised-button type="submit" color="warn" (click)="saveSession()" - [disabled]="(! filename.valid) || (! atLeastOneCheckboxSelected)"> - - {{ uitextSave }} - </button> - </div> - -</form> +</form> \ No newline at end of file diff --git a/src/app/components/dialog-save-session/dialog-save-session.component.ts b/src/app/components/dialog-save-session/dialog-save-session.component.ts index 092b245f2b2488233b41b2373af191d4feb7dcbc..b9b5eb10d56a2954927293edf5ec194409b00861 100644 --- a/src/app/components/dialog-save-session/dialog-save-session.component.ts +++ b/src/app/components/dialog-save-session/dialog-save-session.component.ts @@ -16,29 +16,29 @@ export class DialogSaveSessionComponent { public dependenciesProblems: any[] = []; constructor( - public dialogRef: MatDialogRef<DialogSaveSessionComponent>, - private intlService: I18nService, - @Inject(MAT_DIALOG_DATA) public data: any + public dialogRef: MatDialogRef<DialogSaveSessionComponent>, + private intlService: I18nService, + @Inject(MAT_DIALOG_DATA) public data: any ) { - this.calculators = data.calculators; - // run dependency checking at first - this.checkLinkedParamsAndModelsDependencies(); + this.calculators = data.calculators; + // run dependency checking at first + this.checkLinkedParamsAndModelsDependencies(); } public selectAll() { - for (const c of this.calculators) { - c.selected = true; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = true; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public selectNone() { - for (const c of this.calculators) { - c.selected = false; - } - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + for (const c of this.calculators) { + c.selected = false; + } + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } /** @@ -47,114 +47,114 @@ export class DialogSaveSessionComponent { * - PabCloisons depend on their models */ public checkLinkedParamsAndModelsDependencies() { - this.dependenciesProblems = []; - // for all checked Nubs - this.calculators.forEach((c) => { - if (c.selected) { - // do all required nubs are checked ? - c.requires.forEach((r) => { - if (! this.isCalculatorOrParentSelected(r)) { - const realUid = this.getUidOrParentUid(r); - const depTitle = this.getTitleFromUid(realUid); - this.dependenciesProblems.push({ - requiring: c.title, - required: depTitle, - requiredUid: realUid, - message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle - }); + this.dependenciesProblems = []; + // for all checked Nubs + this.calculators.forEach((c) => { + if (c.selected) { + // do all required nubs are checked ? + c.requires.forEach((r) => { + if (!this.isCalculatorOrParentSelected(r)) { + const realUid = this.getUidOrParentUid(r); + const depTitle = this.getTitleFromUid(realUid); + this.dependenciesProblems.push({ + requiring: c.title, + required: depTitle, + requiredUid: realUid, + message: c.title + " " + this.intlService.localizeText("INFO_REQUIRES") + " " + depTitle + }); + } + }); } - }); - } - }); + }); } public fixDependencies() { - for (const dp of this.dependenciesProblems) { - this.selectRequiredModule(dp.requiredUid); - } + for (const dp of this.dependenciesProblems) { + this.selectRequiredModule(dp.requiredUid); + } } private isCalculatorOrParentSelected(uid: string): boolean { - let isSelected = false; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - isSelected = c.selected; - } - }); - return isSelected; + let isSelected = false; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + isSelected = c.selected; + } + }); + return isSelected; } private getUidOrParentUid(uid: string): string { - let realUid: string; - this.calculators.forEach((c) => { - if (c.uid === uid || c.children.includes(uid)) { - realUid = c.uid; - } - }); - return realUid; + let realUid: string; + this.calculators.forEach((c) => { + if (c.uid === uid || c.children.includes(uid)) { + realUid = c.uid; + } + }); + return realUid; } private getTitleFromUid(uid: string): string { - let title: string; - this.calculators.forEach((c) => { - if (c.uid === uid) { - title = c.title; - } - }); - return title; + let title: string; + this.calculators.forEach((c) => { + if (c.uid === uid) { + title = c.title; + } + }); + return title; } private selectRequiredModule(uid: string) { - this.calculators.forEach((c) => { - if (c.uid === uid) { - c.selected = true; - } - }); - // re-run dependency checking - this.checkLinkedParamsAndModelsDependencies(); + this.calculators.forEach((c) => { + if (c.uid === uid) { + c.selected = true; + } + }); + // re-run dependency checking + this.checkLinkedParamsAndModelsDependencies(); } public saveSession() { - this.dialogRef.close({ - calculators: this.calculators, - filename: this.fileName - }); + this.dialogRef.close({ + calculators: this.calculators, + filename: this.fileName + }); } public get atLeastOneCheckboxSelected() { - let ok = false; - for (const c of this.calculators) { - ok = (ok || c.selected); - } - return ok; + let ok = false; + for (const c of this.calculators) { + ok = (ok || c.selected); + } + return ok; } public get uitextSave() { - return this.intlService.localizeText("INFO_OPTION_SAVE"); + return this.intlService.localizeText("INFO_OPTION_SAVE"); } public get uitextCancel() { - return this.intlService.localizeText("INFO_OPTION_CANCEL"); + return this.intlService.localizeText("INFO_OPTION_CANCEL"); } public get uitextAll() { - return this.intlService.localizeText("INFO_OPTION_ALL"); + return this.intlService.localizeText("INFO_OPTION_ALL"); } public get uitextNone() { - return this.intlService.localizeText("INFO_OPTION_NONE"); + return this.intlService.localizeText("INFO_OPTION_NONE"); } public get uitextSaveSessionTitle() { - return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_TITLE"); + return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_TITLE"); } public get uitextFilenameInput() { - return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_FILENAME"); + return this.intlService.localizeText("INFO_DIALOG_SAVE_SESSION_FILENAME"); } public get uitextFixMissingDependencies() { - return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); + return this.intlService.localizeText("INFO_DIALOG_FIX_MISSING_DEPENDENCIES"); } public onEnterPressed(event) { diff --git a/src/app/components/field-set/field-set.component.html b/src/app/components/field-set/field-set.component.html index 59f755bbc1c8a46dfd8d56423b9c916274cc2edc..808d883ec6ebc96030ee985ddf107647ff5c820f 100644 --- a/src/app/components/field-set/field-set.component.html +++ b/src/app/components/field-set/field-set.component.html @@ -9,25 +9,31 @@ {{ i }} </mat-option> </mat-select> - <button type="button" mat-icon-button (click)="onAddClick()" class="add-structure" [title]="uitextAddStructure"> + <button type="button" mat-icon-button (click)="onAddClick()" class="add-structure" + [title]="uitextAddStructure"> <mat-icon>add_box</mat-icon> </button> - <button type="button" mat-icon-button (click)="onCopyClick()" class="copy-structure" [title]="uitextCopyStructure"> + <button type="button" mat-icon-button (click)="onCopyClick()" class="copy-structure" + [title]="uitextCopyStructure"> <mat-icon>content_copy</mat-icon> </button> | - <button type="button" mat-icon-button [disabled]="! enableRemoveButton" (click)="onRemoveClick()" [title]="uitextRemoveStructure"> + <button type="button" mat-icon-button [disabled]="! enableRemoveButton" (click)="onRemoveClick()" + [title]="uitextRemoveStructure"> <mat-icon>delete</mat-icon> </button> - <button type="button" mat-icon-button [disabled]="! enableUpButton" (click)="onMoveUpClick()" [title]="uitextMoveStructureUp"> + <button type="button" mat-icon-button [disabled]="! enableUpButton" (click)="onMoveUpClick()" + [title]="uitextMoveStructureUp"> <mat-icon>arrow_upward</mat-icon> </button> - <button type="button" mat-icon-button [disabled]="! enableDownButton" (click)="onMoveDownClick()" [title]="uitextMoveStructureDown"> + <button type="button" mat-icon-button [disabled]="! enableDownButton" (click)="onMoveDownClick()" + [title]="uitextMoveStructureDown"> <mat-icon>arrow_downward</mat-icon> </button> <span *ngIf="enableHelpButton">|</span> </span> - <button *ngIf="enableHelpButton" class="help-button" type="button" mat-icon-button (click)="openHelp()" [title]="uitextOpenHelp"> + <button *ngIf="enableHelpButton" class="help-button" type="button" mat-icon-button (click)="openHelp()" + [title]="uitextOpenHelp"> <mat-icon id="help-fieldset">help</mat-icon> </button> </div> @@ -42,4 +48,4 @@ <select-field-line *ngIf="isSelectField(p)" [_select]=p> </select-field-line> </ng-template> -</mat-card-content> +</mat-card-content> \ No newline at end of file diff --git a/src/app/components/fixedvar-results/fixed-results.component.html b/src/app/components/fixedvar-results/fixed-results.component.html index 723677e79fb13a4e5c7fa563f1e70426865ec8bc..d9bca96253f0a62db118c20b9cf88b8dd74cd0e9 100644 --- a/src/app/components/fixedvar-results/fixed-results.component.html +++ b/src/app/components/fixedvar-results/fixed-results.component.html @@ -12,15 +12,17 @@ <ng-container matColumnDef="parametre"> <th mat-header-cell *matHeaderCellDef>{{ uitextParamFixes }}</th> - <td mat-cell *matCellDef="let element" [innerHTML]="element.label" [ngClass]="{'highlightedResult': element.isCalcResult}"></td> + <td mat-cell *matCellDef="let element" [innerHTML]="element.label" + [ngClass]="{'highlightedResult': element.isCalcResult}"></td> </ng-container> <ng-container matColumnDef="valeur"> <th mat-header-cell *matHeaderCellDef>{{ uitextValeurs }}</th> - <td mat-cell *matCellDef="let element" [ngClass]="{'highlightedResult': element.isCalcResult}">{{ element.value }}</td> + <td mat-cell *matCellDef="let element" [ngClass]="{'highlightedResult': element.isCalcResult}"> + {{ element.value }}</td> </ng-container> <tr mat-header-row *matHeaderRowDef="tableColumns"></tr> <tr mat-row *matRowDef="let row; columns: tableColumns;"></tr> </table> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/fixedvar-results/results.component.ts b/src/app/components/fixedvar-results/results.component.ts index e1829e929bf3b587e1d41e3859b592e12931034a..8ba53061af029d00787e37c77061108fd1f87830 100644 --- a/src/app/components/fixedvar-results/results.component.ts +++ b/src/app/components/fixedvar-results/results.component.ts @@ -15,10 +15,6 @@ export class ResultsComponentDirective { /** max number of decimals for auto-adjusting charts axis graduations */ public static CHARTS_AXIS_PRECISION = 10; - public constructor() { - const sf = <Screenfull>screenfull; - } - /** tracks the fullscreen state */ public get isFullscreen() { const sf = <Screenfull>screenfull; @@ -106,7 +102,7 @@ export class ResultsComponentDirective { } else if (typeof p === "number") { originalValue = p; } - const nDigits = ServiceFactory.instance.applicationSetupService.displayPrecision; + const nDigits = ServiceFactory.applicationSetupService.displayPrecision; const minRenderableNumber = Number("1E-" + nDigits); // if required precision is too low, avoid rendering only zeroes if (originalValue < minRenderableNumber) { diff --git a/src/app/components/fixedvar-results/var-results.component.html b/src/app/components/fixedvar-results/var-results.component.html index d0b7573043567e68b5dc6fc90cf88e524030184b..f09451b74bf318085fa597b5465ff9b8c5497fbf 100644 --- a/src/app/components/fixedvar-results/var-results.component.html +++ b/src/app/components/fixedvar-results/var-results.component.html @@ -1,10 +1,12 @@ -<div class="var-results-container" #variableResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="var-results-container" #variableResults *ngIf="hasResults" fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="var-results-buttons"> <button mat-icon-button (click)="exportAsSpreadsheet()" [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(variableResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(variableResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -42,4 +44,4 @@ </div> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html index b1b3ec2b01f6c9fa07ee75cbced472c8803fd769..f5ccefc0fd6f60664002184281dd7510c3ac9c52 100644 --- a/src/app/components/generic-calculator/calculator.component.html +++ b/src/app/components/generic-calculator/calculator.component.html @@ -4,7 +4,8 @@ <div class="hyd-window-btns"> <!-- bouton d'aide --> - <mat-icon id="help-calc" *ngIf="enableHelpButton" (click)="openHelp()" color="accent" [title]="uitextOpenHelp"> + <mat-icon id="help-calc" *ngIf="enableHelpButton" (click)="openHelp()" color="accent" + [title]="uitextOpenHelp"> help </mat-icon> <!-- bouton de duplication --> @@ -27,7 +28,7 @@ <h1 [innerHTML]="uitextTitre"></h1> <div id="calculator-used-by" *ngIf="calculatorsUsingThisOne.length > 0"> {{ uitextUsedBy }} - <span *ngFor="let c of calculatorsUsingThisOne; let i = index; trackBy:tbIndex" > + <span *ngFor="let c of calculatorsUsingThisOne; let i = index; trackBy:tbIndex"> <a class="used-by-item" (click)="toCalc(c.uid)"> {{ c.label }} </a> @@ -47,25 +48,29 @@ <!-- nom du module de calcul --> <calc-name id="calculator-name" [title]="uitextCalculatorName"></calc-name> - <div id="calc-cards-container" class="container" - [fxLayout]="isWide ? 'column' : 'row wrap'" - [fxLayoutAlign]="isWide ? 'space-around stretch' : 'space-around start'"> + <button mat-raised-button type="button" color="accent" id="load-predefined-espece" *ngIf="isEspece" + (click)="loadPredefinedEspece()" [title]="uitextLoadPredefinedEspece"> + {{ uitextLoadPredefinedEspece }} + </button> + + <div id="calc-cards-container" class="container" [fxLayout]="isWide ? 'column' : 'row wrap'" + [fxLayoutAlign]="isWide ? 'space-around stretch' : 'space-around start'"> <!-- chapitres --> - <mat-card id="calc-card-field-sets" - [class.pab-field-sets]="isWide" - [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" - [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" - [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> + <mat-card id="calc-card-field-sets" [class.pab-field-sets]="isWide" + [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" + [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" + [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> <ng-template ngFor let-fe [ngForOf]="formElements"> <field-set *ngIf="isFieldset(fe)" [style.display]="getElementStyleDisplay(fe.id)" [fieldSet]=fe - (radio)=onRadioClick($event) (validChange)=onElementValid() (inputChange)=onInputChange($event) - (tabPressed)="onTabPressed($event)"> + (radio)=onRadioClick($event) (validChange)=onElementValid() + (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)"> </field-set> - <fieldset-container *ngIf="isFieldsetContainer(fe)" [style.display]="getElementStyleDisplay(fe.id)" [_container]=fe - (radio)=onRadioClick($event) (validChange)=onElementValid() (inputChange)=onInputChange($event) + <fieldset-container *ngIf="isFieldsetContainer(fe)" + [style.display]="getElementStyleDisplay(fe.id)" [_container]=fe (radio)=onRadioClick($event) + (validChange)=onElementValid() (inputChange)=onInputChange($event) (tabPressed)="onTabPressed($event)"> </fieldset-container> @@ -76,22 +81,24 @@ <mat-card-actions> <!-- bouton calculer --> - <button type="submit" id="trigger-calculate" mat-raised-button color="accent" name="Calculer" (click)="doCompute()" [disabled]="isCalculateDisabled"> + <button type="submit" id="trigger-calculate" mat-raised-button color="accent" name="Calculer" + (click)="doCompute()" [disabled]="isCalculateDisabled" + [hidden]="calculateDisabledPermanently"> {{ uitextCalculer }} </button> </mat-card-actions> </mat-card> <!-- résultats --> - <mat-card id="calc-card-results" - [class.pab-results]="isWide" - [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" - [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" - [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> + <mat-card id="calc-card-results" [hidden]="calculateDisabledPermanently" [class.pab-results]="isWide" + [fxFlex.gt-sm]="isWide ? '1 0 auto' : '1 0 400px'" + [fxFlex.lt-md]="isWide ? '1 0 auto' : '1 0 500px'" + [fxFlex.lt-sm]="isWide ? '1 0 auto' : '1 0 300px'"> <div id="fake-results-anchor"></div> - <quicknav [ngClass.lt-xs]="'extraSmall'" [fxHide.gt-sm]="! isWide" [items]="quicknavItems" [currentItem]="'results'" [align]="'left'"></quicknav> + <quicknav [ngClass.lt-xs]="'extraSmall'" [fxHide.gt-sm]="! isWide" [items]="quicknavItems" + [currentItem]="'results'" [align]="'left'"></quicknav> <mat-card-header *ngIf="! isWide" [fxHide.lt-md]="! isWide"> <mat-card-title> @@ -99,8 +106,8 @@ </mat-card-title> </mat-card-header> - <button mat-raised-button color="accent" id="generate-pab" *ngIf="isPABCloisons" (click)="generatePAB()" - [disabled]="! generatePABEnabled" [title]="uitextGeneratePabTitle"> + <button mat-raised-button color="accent" id="generate-pab" *ngIf="isPABCloisons" + (click)="generatePAB()" [disabled]="! generatePABEnabled" [title]="uitextGeneratePabTitle"> {{ uitextGeneratePAB }} </button> @@ -115,13 +122,14 @@ </button> </div> - <button mat-raised-button color="accent" id="generate-ru-sp" *ngIf="isRegimeUniforme" (click)="generateRuSp()" - [disabled]="! generateRuSpEnabled" [title]="uitextGenerateRuSpTitle"> + <button mat-raised-button color="accent" id="generate-ru-sp" *ngIf="isRegimeUniforme" + (click)="generateRuSp()" [disabled]="! generateRuSpEnabled" [title]="uitextGenerateRuSpTitle"> {{ uitextGenerateRuSp }} </button> - <button mat-raised-button color="accent" id="generate-par-simulation" *ngIf="isPAR" (click)="generatePARSimulation()" - [disabled]="! generatePARSimulationEnabled" [title]="uitextGenerateParSimulationTitle"> + <button mat-raised-button color="accent" id="generate-par-simulation" *ngIf="isPAR" + (click)="generatePARSimulation()" [disabled]="! generatePARSimulationEnabled" + [title]="uitextGenerateParSimulationTitle"> {{ uitextGeneratePARSimulation }} </button> @@ -135,4 +143,4 @@ </form> -</mat-card> +</mat-card> \ No newline at end of file diff --git a/src/app/components/generic-calculator/calculator.component.scss b/src/app/components/generic-calculator/calculator.component.scss index 8507212be600d28ec94077a2719b865c8bf67a79..1aa9e9e26cef4abd09fc8f0a9594811c82e64d36 100644 --- a/src/app/components/generic-calculator/calculator.component.scss +++ b/src/app/components/generic-calculator/calculator.component.scss @@ -22,6 +22,10 @@ margin-top: -54px; } +#load-predefined-espece { + margin-bottom: 1em; +} + mat-card { margin-bottom: 2em; diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts index 2850e8ce3e8a77a5268aaaaf88b7aaa1abafdf15..b662a5000d25250ee124089a9a93d715453b9ad5 100644 --- a/src/app/components/generic-calculator/calculator.component.ts +++ b/src/app/components/generic-calculator/calculator.component.ts @@ -18,7 +18,8 @@ import { RegimeUniforme, Par, ParSimulationParams, - ParSimulation + ParSimulation, + Espece } from "jalhyd"; import { generateValuesCombination } from "../../util"; @@ -41,9 +42,11 @@ import { MatDialog } from "@angular/material/dialog"; import { DialogConfirmCloseCalcComponent } from "../dialog-confirm-close-calc/dialog-confirm-close-calc.component"; import { DialogGeneratePABComponent } from "../dialog-generate-pab/dialog-generate-pab.component"; import { DialogGeneratePARSimulationComponent } from "../dialog-generate-par-simulation/dialog-generate-par-simulation.component"; +import { DialogLoadPredefinedEspeceComponent } from "../dialog-load-predefined-espece/dialog-load-predefined-espece.component"; import { PabTable } from "../../formulaire/elements/pab-table"; import { MultiDimensionResults } from "../../results/multidimension-results"; import { NgParameter } from "../../formulaire/elements/ngparam"; +import { FormulaireFixedVar } from "../../formulaire/definition/form-fixedvar"; import { HotkeysService, Hotkey } from "angular2-hotkeys"; @@ -128,6 +131,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe private confirmCloseCalcDialog: MatDialog, private generatePABDialog: MatDialog, private generatePARSimulationDialog: MatDialog, + private loadPredefinedEspeceDialog: MatDialog, private _elementRef: ElementRef, private hotkeysService: HotkeysService, private appSetupService: ApplicationSetupService, @@ -157,6 +161,10 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe return this._formulaire.kids as FormulaireElement[]; } + public get calculateDisabledPermanently(): boolean { + return this._formulaire.calculateDisabled; + } + /** * détermine si un FormulaireElement est du type FieldSet */ @@ -227,6 +235,10 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe return this.intlService.localizeText("INFO_CALCULATOR_RESULTS_GENERATE_PAR_SIMULATION"); } + public get uitextLoadPredefinedEspece(): string { + return this.intlService.localizeText("INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE"); + } + public get uitextOpenHelp() { return this.intlService.localizeText("INFO_CALCULATOR_OPEN_HELP"); } @@ -421,8 +433,8 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe this.setForm(this.formulaireService.getFormulaireFromId(uid)); this.resultsComponent.formulaire = this._formulaire; this._calculatorNameComponent.model = this._formulaire; - // reload localisation in all cases - this.formulaireService.loadUpdateFormulaireLocalisation(this._formulaire); + // reload localisation in all cases (it does not eat bread) + this.formulaireService.updateFormulaireLocalisation(this._formulaire); // call Form init hook this._formulaire.onCalculatorInit(); break; @@ -444,47 +456,49 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe */ private updateUIValidity() { this._isUIValid = false; - - if (this._fieldsetComponents !== undefined) { - this._isUIValid = this._fieldsetComponents.reduce( - // callback - ( - // accumulator (valeur précédente du résultat) - acc, - // currentValue (élément courant dans le tableau) - fieldset, - // currentIndex (indice courant dans le tableau) - currIndex, - // array (tableau parcouru) - array - ) => { - return acc && fieldset.isValid; - } - // valeur initiale - , this._fieldsetComponents.length > 0); - } - - if (this._fieldsetContainerComponents !== undefined) { - this._isUIValid = this._isUIValid && this._fieldsetContainerComponents.reduce<boolean>( - // callback - ( - // accumulator (valeur précédente du résultat) - acc, - // currentValue (élément courant dans le tableau) - fieldsetContainer, - // currentIndex (indice courant dans le tableau) - currIndex, - // array (tableau parcouru) - array - ): boolean => { - return acc && fieldsetContainer.isValid; - } - // valeur initiale - , true); - } - - if (this._pabTableComponent !== undefined) { - this._isUIValid = this._isUIValid && this._pabTableComponent.isValid; + if (! this._formulaire.calculateDisabled) { + // all fieldsets must be valid + if (this._fieldsetComponents !== undefined) { + this._isUIValid = this._fieldsetComponents.reduce( + // callback + ( + // accumulator (valeur précédente du résultat) + acc, + // currentValue (élément courant dans le tableau) + fieldset, + // currentIndex (indice courant dans le tableau) + currIndex, + // array (tableau parcouru) + array + ) => { + return acc && fieldset.isValid; + } + // valeur initiale + , this._fieldsetComponents.length > 0); + } + // all fieldset containers must be valid + if (this._fieldsetContainerComponents !== undefined) { + this._isUIValid = this._isUIValid && this._fieldsetContainerComponents.reduce<boolean>( + // callback + ( + // accumulator (valeur précédente du résultat) + acc, + // currentValue (élément courant dans le tableau) + fieldsetContainer, + // currentIndex (indice courant dans le tableau) + currIndex, + // array (tableau parcouru) + array + ): boolean => { + return acc && fieldsetContainer.isValid; + } + // valeur initiale + , true); + } + // special components must be valid + if (this._pabTableComponent !== undefined) { + this._isUIValid = this._isUIValid && this._pabTableComponent.isValid; + } } } @@ -612,6 +626,11 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe return this.is(CalculatorType.Par); } + // true if current Nub is Espece + public get isEspece() { + return this.is(CalculatorType.Espece); + } + /** * Returns true if no parameter is varying; ignores parameters having * one of the given {except} symbols, if any @@ -693,7 +712,11 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe if (bief.prms.Z1 === bief.calculatedParam) { return this.hasResults && ! bief.result.hasErrorMessages(); } else { - return true; + // check that linked values are available, if any + return ( + (bief.prms.Z1.valueMode !== ParamValueMode.LINK || bief.prms.Z1.referencedValue.isDefined()) + && (bief.prms.ZF1.valueMode !== ParamValueMode.LINK || bief.prms.ZF1.referencedValue.isDefined()) + ); } } @@ -702,7 +725,11 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe if (bief.prms.Z2 === bief.calculatedParam) { return this.hasResults && ! bief.result.hasErrorMessages(); } else { - return true; + // check that linked values are available, if any + return ( + (bief.prms.Z2.valueMode !== ParamValueMode.LINK || bief.prms.Z2.referencedValue.isDefined()) + && (bief.prms.ZF2.valueMode !== ParamValueMode.LINK || bief.prms.ZF2.referencedValue.isDefined()) + ); } } @@ -793,7 +820,12 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe // do not link Y and If && ! [ "If", "Y" ].includes(p.symbol) ) { - p.defineReference(bief.section, p.symbol); + const bP = bief.section.getParameter(p.symbol); + if (bP.valueMode === ParamValueMode.LINK) { + p.defineReference(bP.referencedValue.nub, p.symbol); + } else { + p.defineReference(bief.section, p.symbol); + } } } @@ -917,7 +949,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe ZD1: pres.ZD1, ZR2: pres.ZR2, ZD2: pres.ZD2, - a: pres.a + a: pcal.a.hasMultipleValues ? pcal.a.getInferredValuesList(s)[i] : pcal.a.V, }); } }); @@ -937,7 +969,7 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe ZD1: pres.ZD1, ZR2: pres.ZR2, ZD2: pres.ZD2, - a: pres.a + a: pcal.a.V }); } } @@ -969,6 +1001,29 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe ); } + /** + * Opens a modal that allows to choose a predefined Espece + * and load its values in current Espece module + */ + public loadPredefinedEspece() { + const dialogRef = this.loadPredefinedEspeceDialog.open( + DialogLoadPredefinedEspeceComponent, + { + data: { }, + disableClose: false + } + ); + dialogRef.afterClosed().subscribe(result => { + if (result && result.load) { + const form = this._formulaire as FormulaireFixedVar; + const nub = (form.currentNub as Espece); + nub.loadPredefinedSpecies(result.selected); + console.log("================ espèce chargée, refresh tout"); + form.refreshFieldsets(); + } + }); + } + public saveCalculator() { this.formulaireService.saveForm(this._formulaire); } diff --git a/src/app/components/generic-input/generic-input.component.html b/src/app/components/generic-input/generic-input.component.html index 99eea0a6e607473f831fb1e616b0a1817f6f4b94..3b240e96f6840c8bc13c17a7662cbe120c3cc7e6 100644 --- a/src/app/components/generic-input/generic-input.component.html +++ b/src/app/components/generic-input/generic-input.component.html @@ -1,6 +1,6 @@ <mat-form-field> - <input matInput #inputControl="ngModel" class="form-control" type="text" inputmode="numeric" - [id]="inputId" [name]="inputId" [disabled]="isDisabled" [(ngModel)]="uiValue" [placeholder]="title" + <input matInput #inputControl="ngModel" class="form-control" type="text" inputmode="numeric" [id]="inputId" + [name]="inputId" [disabled]="isDisabled" [(ngModel)]="uiValue" [placeholder]="title" (keydown.Tab)="onTabPressed($event, false)" (keydown.shift.Tab)="onTabPressed($event, true)" pattern="^-?([0-9]*\.)?([0-9]+[Ee]-?)?[0-9]+$" [required]="isRequired"> @@ -11,4 +11,4 @@ </div> <mat-error [innerHTML]="errorMessage"></mat-error> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/generic-input/generic-input.component.ts b/src/app/components/generic-input/generic-input.component.ts index 1af5e585973d9d08912d8f96b3d800ba67056179..3d9472e3b957f89f234c0c0cf8f9a49a02a28c50 100644 --- a/src/app/components/generic-input/generic-input.component.ts +++ b/src/app/components/generic-input/generic-input.component.ts @@ -18,25 +18,14 @@ import { ApplicationSetupService } from "../../services/app-setup.service"; */ @Directive() export abstract class GenericInputComponentDirective implements OnChanges { - /** - * entité mémoire gérée - */ - protected _model: NgParameter | FormulaireDefinition; // CalcName utilise un FormDefinition ici !? - /** - * flag de désactivation de l'input - */ - @Input() - private _inputDisabled = false; + /** entité mémoire gérée */ + protected _model: NgParameter | FormulaireDefinition; // CalcName utilise un FormDefinition ici !? - /** - * flag d'affichage du message d'erreur - */ + /** flag d'affichage du message d'erreur */ public showError = true; - /** - * id de l'input, utilisé notamment pour les tests - */ + /** id de l'input, utilisé notamment pour les tests */ public get inputId() { let id = "error-in-inputId"; if (this._model) { @@ -110,7 +99,11 @@ export abstract class GenericInputComponentDirective implements OnChanges { ) { } public get isDisabled(): boolean { - return this._inputDisabled; + if (this._model instanceof NgParameter) { + return this._model.disabled; + } else { + return false; + } } /** diff --git a/src/app/components/generic-select/generic-select.component.html b/src/app/components/generic-select/generic-select.component.html index 4df1d37416498c096054c4b29a132894cf98b06c..5dcaf95e7f8ff6c617cd2d2792c395720602f020 100644 --- a/src/app/components/generic-select/generic-select.component.html +++ b/src/app/components/generic-select/generic-select.component.html @@ -1,12 +1,23 @@ <mat-form-field> - <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue"> + <mat-select [id]="selectId" [placeholder]="label" [(value)]="selectedValue" [multiple]="isMultiple" + [disabled]="isDisabled"> + <mat-select-trigger *ngIf="isMultiple"> + {{ selectedValue && selectedValue[0] ? entryLabel(selectedValue[0]) : '' }} + <span *ngIf="selectedValue?.length > 1" class="multiple-selection-label"> + (+ {{ selectedValue.length - 1 }} {{ selectedValue?.length === 2 ? uitextAndOther : uitextAndOthers }}) + </span> + </mat-select-trigger> <mat-option *ngFor="let e of entries" [value]="e" [title]="entryLabel(e)"> {{ entryLabel(e) }} </mat-option> </mat-select> + <button mat-button *ngIf="showClearButton" matSuffix mat-icon-button aria-label="Clear" + (click)="selectedValue=[]; $event.stopPropagation()"> + <mat-icon>close</mat-icon> + </button> <div *ngIf="enableHelpButton" class="overlap-select"> <mat-icon id="help-select" (click)="openHelp($event)" [title]="uitextOpenHelp" color="accent"> help </mat-icon> </div> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/jet-results/jet-results.component.ts b/src/app/components/jet-results/jet-results.component.ts index 50d8a1a1df5782adedfe615da6cd47490d1ebdd3..455521eab4bc96b50418d4839f8bb2e794ad4074 100644 --- a/src/app/components/jet-results/jet-results.component.ts +++ b/src/app/components/jet-results/jet-results.component.ts @@ -28,7 +28,7 @@ export class JetResultsComponent extends FixedVarResultsComponent { return this.hasResults && ( this._fixedResults && this._fixedResults.result && this._fixedResults.result.sourceNub.result.ok || - this._varResults&& this._varResults.result && this._varResults.result.sourceNub.result.ok + this._varResults && this._varResults.result && this._varResults.result.sourceNub.result.ok ); } @@ -46,8 +46,7 @@ export class JetResultsComponent extends FixedVarResultsComponent { protected updateResults() { const superUpdated = super.updateResults(); - let trajectoryChartUpdated: boolean; - trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; + const trajectoryChartUpdated = this.jetTrajectoryChartComponent !== undefined; if (trajectoryChartUpdated) { // draw chart whether params are variating or not, diff --git a/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html b/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html index a30d03c37094423e1225f969015f26bfd659bdd9..1087a424a449b1eaa643bbbf4fbe0b961f547b0e 100644 --- a/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html +++ b/src/app/components/jet-trajectory-chart/jet-trajectory-chart.component.html @@ -7,7 +7,8 @@ <button mat-icon-button (click)="exportAsImage(graphProfile)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> diff --git a/src/app/components/log-drawer/log-drawer.component.html b/src/app/components/log-drawer/log-drawer.component.html new file mode 100644 index 0000000000000000000000000000000000000000..f2139f7c2cac8da90895a812a9cf9de5c61b3e51 --- /dev/null +++ b/src/app/components/log-drawer/log-drawer.component.html @@ -0,0 +1,24 @@ +<div *ngIf="hasEntries"> + <div class="hyd_log_drawer"> + <!-- titre --> + <div class="titre">{{ uitextTitreJournal }}</div> + <!-- entrées du journal --> + <div class="log-entry" *ngFor="let entry of log"> + <log-entry [_message]="entry.message"></log-entry> + <div *ngIf="entry.subLog.messages.length" class="drawer"> + <div class="open-drawer"> + <span *ngIf="! entry.isOpen"> + <a (click)="entry.isOpen = true;">{{ uitextShowDetails }}</a> + </span> + <span *ngIf="entry.isOpen"> + <a (click)="entry.isOpen = false">{{ uitextHideDetails }}</a> + </span> + </div> + <div class="drawer-contents" [hidden]="! entry.isOpen"> + <log-entry *ngFor="let m of entry.subLog.messages" [_message]="m"></log-entry> + </div> + </div> + </div> + + </div> +</div> \ No newline at end of file diff --git a/src/app/components/log-drawer/log-drawer.component.scss b/src/app/components/log-drawer/log-drawer.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..2ae464717598efb54a675c04e7773a8baf11b4de --- /dev/null +++ b/src/app/components/log-drawer/log-drawer.component.scss @@ -0,0 +1,41 @@ +:host { + display: block; +} + +.hyd_log_drawer { + margin-top: 2.5em; + border: solid #ccc 1px; + border-radius: 2px; + padding: 1em; + padding-top : 1.3em; + + > .log-entry { + margin-bottom: 1.5em; + } +} + +.titre { + background-color: white; + border: 1px solid #ccc; + border-radius: 2px; + float: left; + font-weight: bold; + margin-bottom: -1em; + margin-top: -2.3em; + padding: 0.2em 0.5em; +} + +.open-drawer { + margin-top: -6px; + + a { + // text-decoration: underline; + cursor: pointer; + } +} + +.drawer-contents { + margin-left: 1em; + border-left: solid #ddd 1px; + padding-left: 1em; +} diff --git a/src/app/components/log-drawer/log-drawer.component.ts b/src/app/components/log-drawer/log-drawer.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2394e46b84dffcd3b8f7c3b1439ea967d5b3872f --- /dev/null +++ b/src/app/components/log-drawer/log-drawer.component.ts @@ -0,0 +1,49 @@ +import { Component, Input } from "@angular/core"; + +import { cLog, Message } from "jalhyd"; + +import { I18nService } from "../../services/internationalisation.service"; + +@Component({ + selector: "log-drawer", + templateUrl: "./log-drawer.component.html", + styleUrls: [ + "./log-drawer.component.scss" + ] +}) +/** le log à tiroirs ! */ +export class LogDrawerComponent { + + /** A list of log messages accompanied by a sub-log (multiple messages) */ + public log: Array<{ message: Message, subLog: cLog }>; + + // title to display above the log + @Input() + public logTitle: string; + + constructor( + private intlService: I18nService, + ) { + this.log = []; + } + + public get uitextTitreJournal(): string { + if (this.logTitle) { + return this.logTitle; + } else { + return this.intlService.localizeText("INFO_TITREJOURNAL"); + } + } + + public get hasEntries(): boolean { + return this.log !== undefined && this.log.length !== 0; + } + + public get uitextShowDetails(): string { + return this.intlService.localizeText("INFO_LOG_SHOW_DETAILS"); + } + + public get uitextHideDetails(): string { + return this.intlService.localizeText("INFO_LOG_HIDE_DETAILS"); + } +} diff --git a/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html b/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html index d88bb1753fd6f02918ef90a4f3304895e6e93c80..3883c6eb31b56b8833228e0dd0ae3a483e0b497f 100644 --- a/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html +++ b/src/app/components/macrorugo-compound-results/macrorugo-compound-results-table.component.html @@ -1,10 +1,12 @@ -<div class="macrorugo-compound-results-table-container" #mrcResultsTable fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="macrorugo-compound-results-table-container" #mrcResultsTable fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="macrorugo-compound-results-table-buttons"> <button mat-icon-button (click)="exportAsSpreadsheet()" [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(mrcResultsTable)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(mrcResultsTable)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -28,4 +30,4 @@ </div> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html b/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html index bfbf59270881f8afaf8f0123df4f283e3e67a9e9..85b150db8a3bbdc7f23bbd2aa6a88f0f7915fb46 100644 --- a/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html +++ b/src/app/components/macrorugo-compound-results/macrorugo-compound-results.component.html @@ -9,21 +9,23 @@ <div> <!-- tableau de résultats --> - <macrorugo-compound-results-table *ngIf="hasDisplayableResults" [results]="mrcResults"></macrorugo-compound-results-table> + <macrorugo-compound-results-table *ngIf="hasDisplayableResults" [results]="mrcResults"> + </macrorugo-compound-results-table> </div> <div id="mrcLateralInclination" *ngIf="isInclined"> <strong [innerHTML]="uitextLateralInclination"></strong> {{ lateralInclination }} </div> - <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" - [currentItem]="'charts'" [align]="'left'"></quicknav> + <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" [currentItem]="'charts'" + [align]="'left'"></quicknav> - <div id="macrorugo-compound-graphs-container" class="container" fxLayout="row wrap" fxLayoutAlign="space-around start"> + <div id="macrorugo-compound-graphs-container" class="container" fxLayout="row wrap" + fxLayoutAlign="space-around start"> <!-- <pab-profile-chart *ngIf="hasDisplayableResults" fxFlex.gt-xs="1 0 400px" fxFlex.lt-sm="1 0 300px"> </pab-profile-chart> --> <results-chart *ngIf="hasDisplayableResults" fxFlex.gt-xs="1 0 400px" fxFlex.lt-sm="1 0 300px"> </results-chart> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/modules-diagram/modules-diagram.component.ts b/src/app/components/modules-diagram/modules-diagram.component.ts index 150764b2089c833b495becd94e05fb26d3d9f361..80d08b7b75f72abd58d0ce47dc6bac8346528354 100644 --- a/src/app/components/modules-diagram/modules-diagram.component.ts +++ b/src/app/components/modules-diagram/modules-diagram.component.ts @@ -18,7 +18,10 @@ import { Nub, MacrorugoCompound, Pab, - Solveur + Solveur, + Verificateur, + Espece, + FishSpecies } from "jalhyd"; import { I18nService } from "../../services/internationalisation.service"; @@ -222,6 +225,21 @@ export class ModulesDiagramComponent implements AfterContentInit, AfterViewCheck def.push(nub.uid + "-->|" + finds + ":" + sp.symbol + "|" + sp.parentNub.uid); } } + // add Verificateur links + if (nub instanceof Verificateur) { + const ntv = nub.nubToVerify; + const sp = nub.species.filter((spe) => { + return spe.species === FishSpecies.SPECIES_CUSTOM; + }); + const verifiesPass = this.intlService.localizeText("INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS"); + const verifiesSpecies = this.intlService.localizeText("INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES"); + if (ntv !== undefined) { + def.push(nub.uid + "-->|" + verifiesPass + "|" + ntv.uid); + } + for (const s of sp) { + def.push(nub.uid + "-->|" + verifiesSpecies + "|" + s.uid); + } + } } return def.join("\n"); diff --git a/src/app/components/pab-profile-chart/pab-profile-chart.component.html b/src/app/components/pab-profile-chart/pab-profile-chart.component.html index ae6745863734aab5955aaae0e6946a6565e3f1a6..35c9c9aecdd6b751495e275b5a1e916150faeb31 100644 --- a/src/app/components/pab-profile-chart/pab-profile-chart.component.html +++ b/src/app/components/pab-profile-chart/pab-profile-chart.component.html @@ -7,7 +7,8 @@ <button mat-icon-button (click)="exportAsImage(graphProfile)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphProfile)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> diff --git a/src/app/components/pab-results/pab-results-table.component.html b/src/app/components/pab-results/pab-results-table.component.html index c7334ca62c7b1dd20ae75a6585d8cc3640f5c9d3..c0e77a7b3809e7e2fd53e83e7ada26b823cde63f 100644 --- a/src/app/components/pab-results/pab-results-table.component.html +++ b/src/app/components/pab-results/pab-results-table.component.html @@ -4,7 +4,8 @@ <button mat-icon-button (click)="exportAsSpreadsheet()" [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(pabResultsTable)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(pabResultsTable)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -28,4 +29,4 @@ </div> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/pab-results/pab-results-table.component.ts b/src/app/components/pab-results/pab-results-table.component.ts index 8fb591b99806f6ecffefe634dab2c12a673b2313..45418cf16c9bc1d546e5c2b2f9e17d10efac8fa0 100644 --- a/src/app/components/pab-results/pab-results-table.component.ts +++ b/src/app/components/pab-results/pab-results-table.component.ts @@ -1,6 +1,6 @@ import { Component, ViewChild, ElementRef } from "@angular/core"; -import { CloisonAval, Result } from "jalhyd"; +import { CloisonAval, Result, capitalize } from "jalhyd"; import { PabResults } from "../../results/pab-results"; import { I18nService } from "../../services/internationalisation.service"; @@ -40,7 +40,7 @@ export class PabResultsTableComponent extends ResultsComponentDirective { const devices = re.sourceNub.getChildren(); const jetTypes: string[] = devices.map((device) => { const jt = device.result.resultElements[vi].getValue("ENUM_StructureJetType"); - let jetType = this.intlService.localizeText("INFO_ENUM_STRUCTUREJETTYPE_" + jt); + let jetType = capitalize(this.intlService.localizeText("INFO_ENUM_STRUCTUREJETTYPE_" + jt)); if (devices.length > 1) { // evil HTML injection in table cell (simpler) jetType = this.intlService.localizeText("INFO_LIB_FS_OUVRAGE") + " n°" diff --git a/src/app/components/pab-results/pab-results.component.html b/src/app/components/pab-results/pab-results.component.html index 78f7d98451f94d60873f316ca54f794f29fcdb40..9bb311053cb44654634a6785c8f59407d48e36b8 100644 --- a/src/app/components/pab-results/pab-results.component.html +++ b/src/app/components/pab-results/pab-results.component.html @@ -12,8 +12,8 @@ <pab-results-table *ngIf="hasDisplayableResults" [results]="pabResults"></pab-results-table> </div> - <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" - [currentItem]="'charts'" [align]="'left'"></quicknav> + <quicknav *ngIf="hasDisplayableResults" [items]="[ 'input', 'results', 'charts' ]" [currentItem]="'charts'" + [align]="'left'"></quicknav> <div id="pab-graphs-container" class="container" fxLayout="row wrap" fxLayoutAlign="space-around start"> <pab-profile-chart *ngIf="hasDisplayableResults" fxFlex.gt-xs="1 0 400px" fxFlex.lt-sm="1 0 300px"> @@ -22,4 +22,4 @@ </results-chart> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/pab-results/pab-results.component.ts b/src/app/components/pab-results/pab-results.component.ts index fe282c196d568946b38992b4ee82ab2d97d5e6d1..79551c24dc0ff2267f69f7a762ec763b23038ab1 100644 --- a/src/app/components/pab-results/pab-results.component.ts +++ b/src/app/components/pab-results/pab-results.component.ts @@ -66,7 +66,7 @@ export class PabResultsComponent implements DoCheck { /** * update results table and chart when the variable index changed (event sent by - * PabVariableResultsSelectorComponent); variable index is already set in + * VariableResultsSelectorComponent); variable index is already set in * pabResults at this time */ public variableIndexChanged() { diff --git a/src/app/components/pab-table/pab-table.component.html b/src/app/components/pab-table/pab-table.component.html index 410b7120a08bd2efab951bbd3b5e630d8e53009d..96efe09a17616653a2c7ab330be912aa9af2cc1a 100644 --- a/src/app/components/pab-table/pab-table.component.html +++ b/src/app/components/pab-table/pab-table.component.html @@ -7,8 +7,8 @@ <mat-card-content> <div id="pab-table-toolbar"> - <button type="button" id="edit-pab-table" mat-raised-button color="accent" - [disabled]="! enableEditPabButton" (click)="showEditPab()"> + <button type="button" id="edit-pab-table" mat-raised-button color="accent" [disabled]="! enableEditPabButton" + (click)="showEditPab()"> {{ uitextEditPabTable }} </button> @@ -22,31 +22,31 @@ </mat-option> </mat-select> <button type="button" mat-icon-button color="primary" [disabled]="! enableAddButton" (click)="onAddClick()" - [title]="uitextAdd"> + [title]="uitextAdd"> <mat-icon>add_box</mat-icon> </button> - <button type="button" mat-icon-button color="primary" [disabled]="! enableCopyButton" (click)="onCopyClick()" - [title]="uitextCopy"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableCopyButton" + (click)="onCopyClick()" [title]="uitextCopy"> <mat-icon>content_copy</mat-icon> </button> | - <button type="button" mat-icon-button color="primary" [disabled]="! enableRemoveButton" (click)="onRemoveClick()" - [title]="uitextRemove"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableRemoveButton" + (click)="onRemoveClick()" [title]="uitextRemove"> <mat-icon>delete</mat-icon> </button> - <button type="button" mat-icon-button color="primary" [disabled]="! enableUpButton" (click)="onMoveUpClick()" - [title]="uitextMoveUp"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableUpButton" + (click)="onMoveUpClick()" [title]="uitextMoveUp"> <mat-icon *ngIf="! selectionIsOneDevice">arrow_upward</mat-icon> <mat-icon *ngIf="selectionIsOneDevice">arrow_back</mat-icon> </button> - <button type="button" mat-icon-button color="primary" [disabled]="! enableDownButton" (click)="onMoveDownClick()" - [title]="uitextMoveDown"> + <button type="button" mat-icon-button color="primary" [disabled]="! enableDownButton" + (click)="onMoveDownClick()" [title]="uitextMoveDown"> <mat-icon *ngIf="! selectionIsOneDevice">arrow_downward</mat-icon> <mat-icon *ngIf="selectionIsOneDevice">arrow_forward</mat-icon> </button> | <button type="button" mat-icon-button color="primary" (click)="exportAsSpreadsheet()" - [title]="uitextExportAsSpreadsheet"> + [title]="uitextExportAsSpreadsheet"> <mat-icon color="primary">file_download</mat-icon> </button> </div> @@ -57,20 +57,18 @@ <ng-template pTemplate="header" let-columns> <tr> - <th *ngFor="let h of headers" - (click)="toggleSelection(h, $event)" - (mousedown)="preventCtrlClickBorder($event)" - [attr.rowspan]="h.rowspan ? h.rowspan : null" [attr.colspan]="h.colspan ? h.colspan : null" - [class.selectable-cell]="isSelectable(h)" [class.selected-cell]="isSelected(h)"> + <th *ngFor="let h of headers" (click)="toggleSelection(h, $event)" + (mousedown)="preventCtrlClickBorder($event)" [attr.rowspan]="h.rowspan ? h.rowspan : null" + [attr.colspan]="h.colspan ? h.colspan : null" [class.selectable-cell]="isSelectable(h)" + [class.selected-cell]="isSelected(h)"> {{ h.title }} </th> </tr> <tr> - <th *ngFor="let col of columns" - (click)="toggleSelection(col, $event)" - (mousedown)="preventCtrlClickBorder($event)" - [class.selectable-cell]="isSelectable(col)" [class.selected-cell]="isSelected(col)"> + <th *ngFor="let col of columns" (click)="toggleSelection(col, $event)" + (mousedown)="preventCtrlClickBorder($event)" [class.selectable-cell]="isSelectable(col)" + [class.selected-cell]="isSelected(col)"> {{ col.title }} </th> @@ -79,21 +77,19 @@ <ng-template pTemplate="body" let-row> <tr [class.selected-row]="isSelected(row)"> - <td *ngFor="let cell of row.cells" - (click)="toggleSelection(cell, $event)" - (mousedown)="preventCtrlClickBorder($event)" - [ngClass]="cell.class" - [class.editable-cell]="hasModel(cell)" [class.readonly-cell]="! hasModel(cell)" - [class.selectable-cell]="isSelectable(cell)" [class.selected-cell]="isSelected(cell) && ! isSelected(row)" - [class.invalid-cell]="isInvalid(cell)" [class.select]="isSelect(cell)" - [attr.rowspan]="rowSpan(cell)" [attr.colspan]="colSpan(cell)" - [title]="cellTitle(cell)"> + <td *ngFor="let cell of row.cells" (click)="toggleSelection(cell, $event)" + (mousedown)="preventCtrlClickBorder($event)" [ngClass]="cell.class" + [class.editable-cell]="hasModel(cell)" [class.readonly-cell]="! hasModel(cell)" + [class.selectable-cell]="isSelectable(cell)" + [class.selected-cell]="isSelected(cell) && ! isSelected(row)" [class.invalid-cell]="isInvalid(cell)" + [class.select]="isSelect(cell)" [attr.rowspan]="rowSpan(cell)" [attr.colspan]="colSpan(cell)" + [title]="cellTitle(cell)"> <input matInput *ngIf="isNumberInput(cell)" step="0.00000000000001" type="number" - [(ngModel)]="cell.model.singleValue" (input)="inputValueChanged($event, cell)"> + [(ngModel)]="cell.model.singleValue" (input)="inputValueChanged($event, cell)"> <mat-select #selectWidget *ngIf="isSelect(cell)" [value]="cell.modelValue" - (selectionChange)="loiDebitSelected($event, cell)"> + (selectionChange)="loiDebitSelected($event, cell)"> <mat-option *ngFor="let opt of cell.options" [value]="opt.value" [title]="opt.label"> {{ opt.label }} @@ -106,4 +102,4 @@ </ng-template> </p-table> -</mat-card-content> +</mat-card-content> \ No newline at end of file diff --git a/src/app/components/param-computed/param-computed.component.html b/src/app/components/param-computed/param-computed.component.html index d2d336cfc25540b47b0412423fd880c9e505b000..40320f1ddfc21de3b08313001c1ea11214ee9f39 100644 --- a/src/app/components/param-computed/param-computed.component.html +++ b/src/app/components/param-computed/param-computed.component.html @@ -1,7 +1,9 @@ <!-- a fake input bound to nothing, for the sake of UI consistency --> <mat-form-field> - <input matInput disabled [id]="inputId" class="form-control" type="text" [ngModel]="infoText" [placeholder]="param.title"> - <button type="button" *ngIf="isDicho" mat-icon-button class="param-computed-more" (click)="openDialog()" [title]="uitextEditInitialValue"> + <input matInput disabled [id]="inputId" class="form-control" type="text" [ngModel]="infoText" + [placeholder]="param.title"> + <button type="button" *ngIf="isDicho" mat-icon-button class="param-computed-more" (click)="openDialog()" + [title]="uitextEditInitialValue"> <mat-icon>more_horiz</mat-icon> </button> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/param-field-line/param-field-line.component.html b/src/app/components/param-field-line/param-field-line.component.html index 35c1fd0c841425b97aef1cbe4bc4c4d16427d3ee..1143ac972b73bc22e3b3d8dad26e806443f92ff9 100644 --- a/src/app/components/param-field-line/param-field-line.component.html +++ b/src/app/components/param-field-line/param-field-line.component.html @@ -1,49 +1,48 @@ - <div class="container" fxLayout="row wrap" fxLayoutAlign="space-between start"> <!-- input de saisie de la valeur --> <div fxFlex="1 0 120px"> <!-- composant pour gérer le cas général (valeur numérique à saisir) --> - <ngparam-input [title]="param.title" [hidden]="! isRadioFixChecked" - (change)="onInputChange($event)" (tabPressed)="onTabPressed($event)"> + <ngparam-input [title]="param.title" [hidden]="! isRadioFixChecked" (change)="onInputChange($event)" + (tabPressed)="onTabPressed($event)"> </ngparam-input> - + <!-- composant pour gérer le cas "paramètre calculé" --> <param-computed *ngIf="isRadioCalChecked" [title]="title" [param]="param"> </param-computed> <!-- composant pour gérer le cas "paramètre à varier" (min-max/liste de valeurs) --> - <param-values *ngIf="isRadioVarChecked" [title]="title" [param]="param" - (change)="onInputChange($event)" (valid)=onParamValuesValid($event)> + <param-values *ngIf="isRadioVarChecked" [title]="title" [param]="param" (change)="onInputChange($event)" + (valid)=onParamValuesValid($event)> </param-values> - + <!-- composant pour gérer le cas "paramètre lié" --> - <param-link *ngIf="isRadioLinkChecked" [title]="title" [param]="param" - (change)="onInputChange($event)" (valid)=onParamValuesValid($event)> + <param-link *ngIf="isRadioLinkChecked" [title]="title" [param]="param" (change)="onInputChange($event)" + (valid)=onParamValuesValid($event)> </param-link> </div> <div class="toggle-group-container" fxFlex="0 0 auto"> <mat-button-toggle-group *ngIf="hasRadioFix() || hasRadioVar() || hasRadioCal() || hasRadioLink()"> - <mat-button-toggle class="radio_fix" value="radio_fix" - (click)="onRadioClick('fix')" [checked]="isRadioFixChecked" [disabled]="! canExitCalcMode()"> + <mat-button-toggle class="radio_fix" value="radio_fix" (click)="onRadioClick('fix')" + [checked]="isRadioFixChecked" [disabled]="! canExitCalcMode()"> <span fxHide.xxs>{{ uitextParamFixe }}</span> <span fxHide.gt-xxs>F</span> </mat-button-toggle> - - <mat-button-toggle class="radio_var" value="radio_var" *ngIf="hasRadioVar()" - (click)="onRadioClick('var')" [checked]="isRadioVarChecked" [disabled]="! canExitCalcMode()"> + + <mat-button-toggle class="radio_var" value="radio_var" *ngIf="hasRadioVar()" (click)="onRadioClick('var')" + [checked]="isRadioVarChecked" [disabled]="! canExitCalcMode()"> <span fxHide.xxs>{{ uitextParamVarier }}</span> <span fxHide.gt-xxs>V</span> </mat-button-toggle> - - <mat-button-toggle class="radio_cal" value="radio_cal" *ngIf="hasRadioCal()" - (click)="onRadioClick('cal')" [checked]="isRadioCalChecked"> + + <mat-button-toggle class="radio_cal" value="radio_cal" *ngIf="hasRadioCal()" (click)="onRadioClick('cal')" + [checked]="isRadioCalChecked" [disabled]="isRadioCalDisabled" [title]="radioCalTitle"> <span fxHide.xxs>{{ uitextParamCalculer }}</span> <span fxHide.gt-xxs>C</span> </mat-button-toggle> - + <mat-button-toggle class="radio_link" value="radio_link" *ngIf="hasRadioLink()" (click)="onRadioClick('link')" [checked]="isRadioLinkChecked" [disabled]="! canExitCalcMode()"> <span fxHide.xxs>{{ uitextParamLie }}</span> @@ -53,4 +52,4 @@ </mat-button-toggle-group> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts index a9dae488e839c484a003020dbe93418c15843a1b..22b7a92ad09a49c78ac0f54cb6ee01e44bc06fbc 100644 --- a/src/app/components/param-field-line/param-field-line.component.ts +++ b/src/app/components/param-field-line/param-field-line.component.ts @@ -22,8 +22,8 @@ import { ParamValuesComponent } from "../param-values/param-values.component"; export class ParamFieldLineComponent implements OnChanges { constructor() { - this.intlService = ServiceFactory.instance.i18nService; - this._formService = ServiceFactory.instance.formulaireService; + this.intlService = ServiceFactory.i18nService; + this._formService = ServiceFactory.formulaireService; this.valid = new EventEmitter(); this.inputChange = new EventEmitter(); } @@ -80,7 +80,7 @@ export class ParamFieldLineComponent implements OnChanges { } public get formHasResults(): boolean { - return ServiceFactory.instance.formulaireService.currentFormHasResults; + return ServiceFactory.formulaireService.currentFormHasResults; } @Input() @@ -153,7 +153,7 @@ export class ParamFieldLineComponent implements OnChanges { /** * calcule la présence du radio "paramètre à calculer" */ - public hasRadioCal(): boolean { + public hasRadioCal(): boolean { switch (this.param.radioConfig) { case ParamRadioConfig.CAL: return true; @@ -166,7 +166,7 @@ export class ParamFieldLineComponent implements OnChanges { /** * calcule la présence du radio "paramètre lié" (importé d'un autre module de calcul) */ - public hasRadioLink(): boolean { + public hasRadioLink(): boolean { if (this._formService.formulaires.length > 0) { // au moins 2 modules de calcul ouverts if (this._formService.formulaires.length > 1) { @@ -199,6 +199,30 @@ export class ParamFieldLineComponent implements OnChanges { return ret; } + /** + * Returns true if setting this parameter to Calc mode leads to a links loop + */ + public get isRadioCalDisabled(): boolean { + // find all Nubs that have to be calculated for this one to run + const nub = this.param.paramDefinition.originNub; + const requiredNubs = nub.getRequiredNubsDeep(); + // if one of those Nubs depends on the parameter we're about to set + // to Calc mode, then we shouldn't do so + for (const r of requiredNubs) { + if (r.dependsOnParameter(this.param.paramDefinition)) { + return true; + } + } + return false; + } + + public get radioCalTitle(): string { + if (this.isRadioCalDisabled) { + return this.intlService.localizeText("INFO_PARAMFIELD_CANNOT_CALC_LINKS_LOOP"); + } + return ""; + } + public onRadioClick(option: string) { const oldValue = this.param.valueMode; switch (option) { diff --git a/src/app/components/param-link/param-link.component.html b/src/app/components/param-link/param-link.component.html index eadf8016d6605a44f66637798ec6342b4f030941..d96d4f7543cd5194e1d2dc54014a01b2341fd045 100644 --- a/src/app/components/param-link/param-link.component.html +++ b/src/app/components/param-link/param-link.component.html @@ -1,6 +1,5 @@ <mat-form-field> - <mat-select [id]="selectId" [name]="selectId" [placeholder]="param.title" - [(ngModel)]="currentLinkedParam" required> + <mat-select [id]="selectId" [name]="selectId" [placeholder]="param.title" [(ngModel)]="currentLinkedParam" required> <mat-option *ngFor="let e of linkableParams" [value]="e" [title]="selectItemLabel(e)"> {{ selectItemLabel(e) }} </mat-option> @@ -17,4 +16,4 @@ <mat-icon [title]="uitextAwaitingCalculation" class="status-info" *ngIf="isAwaitingCalculation"> timelapse </mat-icon> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/param-link/param-link.component.ts b/src/app/components/param-link/param-link.component.ts index 565638b45ecedac0c4e5022c09bee8f5a0a0a68d..fbe6f22261d082a4615242e43ed8ae4b85a7c79e 100644 --- a/src/app/components/param-link/param-link.component.ts +++ b/src/app/components/param-link/param-link.component.ts @@ -179,47 +179,47 @@ export class ParamLinkComponent implements OnChanges, Observer, OnDestroy { , (pos + 1) ); } else - // 2. Paramètre / résultat d'une section dans un Nub de type SectionNub - if (i.nub instanceof acSection) { - if (i.isResult()) { - // résultat de section - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_SECTION_RESULT"), - s, c - ); - } else { - // paramètre de section - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_SECTION"), - s, c - ); - } - } else - // 3. Résultat - if (i.isResult()) { - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_RESULT"), - s, c - ); - } else - // 4. Résultat complémentaire - if (i.isExtraResult()) { - if (i.meta["result"]) { - // @TODO not used ? - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT_OF"), - s, c, i.meta["result"] - ); - } else { - return `${preview} - ` + sprintf( - this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT"), - s, c - ); - } - } else { - // 5. Paramètre (cas général) - return `${preview} - ${s} (${c})`; - } + // 2. Paramètre / résultat d'une section dans un Nub de type SectionNub + if (i.nub instanceof acSection) { + if (i.isResult()) { + // résultat de section + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_SECTION_RESULT"), + s, c + ); + } else { + // paramètre de section + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_SECTION"), + s, c + ); + } + } else + // 3. Résultat + if (i.isResult()) { + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_RESULT"), + s, c + ); + } else + // 4. Résultat complémentaire + if (i.isExtraResult()) { + if (i.meta["result"]) { + // @TODO not used ? + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT_OF"), + s, c, i.meta["result"] + ); + } else { + return `${preview} - ` + sprintf( + this.intlService.localizeText("INFO_LINKED_VALUE_EXTRA_RESULT"), + s, c + ); + } + } else { + // 5. Paramètre (cas général) + return `${preview} - ${s} (${c})`; + } } /** diff --git a/src/app/components/param-values/param-values.component.html b/src/app/components/param-values/param-values.component.html index 2561e922040ab17c2b7afce1fce27d7e367f3601..4ffc23cbf03c077b321487381944d7b1b5fd8c43 100644 --- a/src/app/components/param-values/param-values.component.html +++ b/src/app/components/param-values/param-values.component.html @@ -1,8 +1,8 @@ <!-- a fake input bound to nothing, for the sake of UI consistency --> <mat-form-field> - <input matInput disabled class="form-control" type="text" - [id]="inputId" [name]="inputId" [ngModel]="infoText" [placeholder]="param.title"> + <input matInput disabled class="form-control" type="text" [id]="inputId" [name]="inputId" [ngModel]="infoText" + [placeholder]="param.title"> <button type="button" mat-icon-button class="param-values-more" (click)="openDialog()" [title]="uitextEditValues"> <mat-icon>more_horiz</mat-icon> </button> -</mat-form-field> +</mat-form-field> \ No newline at end of file diff --git a/src/app/components/quicknav/quicknav.component.html b/src/app/components/quicknav/quicknav.component.html index 31f1db00b47629aa275cba093bafcd8f4a85cb03..b8d738fcdcbd47637f1bdda9e75f8308b52f32f6 100644 --- a/src/app/components/quicknav/quicknav.component.html +++ b/src/app/components/quicknav/quicknav.component.html @@ -1,7 +1,7 @@ -<div class="quicknav-row" [ngStyle]="alignStyle" *ngIf="hasItems" [id]="id" - [class.autoPadLeft]="align === 'left'" [class.autoPadRight]="align === 'right'"> +<div class="quicknav-row" [ngStyle]="alignStyle" *ngIf="hasItems" [id]="id" [class.autoPadLeft]="align === 'left'" + [class.autoPadRight]="align === 'right'"> <div class="quicknav-item" *ngFor="let i of items" [class.current]="isCurrent(i)" [ngStyle]="paddingStyle"> <a (click)="scrollTo(i)">{{ label(i) }}</a> </div> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/remous-results/remous-results.component.html b/src/app/components/remous-results/remous-results.component.html index 8a51ef96d4ae095aa02c782e212979b90b08f040..ed96cbf12dfdbf619938d462cba2959f7f1b2a83 100644 --- a/src/app/components/remous-results/remous-results.component.html +++ b/src/app/components/remous-results/remous-results.component.html @@ -1,10 +1,12 @@ -<div class="remous-results-container" #remousResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="remous-results-container" #remousResults *ngIf="hasResults" fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="remous-results-buttons"> <button mat-icon-button (click)="exportAsImage(remousResults)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -12,19 +14,21 @@ </button> </div> - <chart id="main-chart" ngClass.lt-sm="height300" ngClass.sm="height400" ngClass.md="height400" ngClass.gt-md="height600" - [type]="graph1_type" [data]="graph1_data" [options]="graph1_options"> + <chart id="main-chart" ngClass.lt-sm="height300" ngClass.sm="height400" ngClass.md="height400" + ngClass.gt-md="height600" [type]="graph1_type" [data]="graph1_data" [options]="graph1_options"> </chart> </div> </div> -<div class="remous-results-extragraph-container" #remousResultsExtra *ngIf="extraChart" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="remous-results-extragraph-container" #remousResultsExtra *ngIf="extraChart" fxLayout="row wrap" + fxLayoutAlign="center center"> <div fxFlex="1 1 100%"> <div class="remous-results-buttons"> <button mat-icon-button (click)="exportAsImage(remousResultsExtra)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResultsExtra)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(remousResultsExtra)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -40,7 +44,8 @@ <!-- journal --> <log></log> -<div [hidden]="! hasData"><!-- *ngIf breaks @ViewChild availability--> +<div [hidden]="! hasData"> + <!-- *ngIf breaks @ViewChild availability--> <!-- résultats numériques --> <var-results></var-results> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/remous-results/remous-results.component.ts b/src/app/components/remous-results/remous-results.component.ts index 1e2f8d7b3a53006a9fcac2fbe0ce2b47308faa8e..db14a54ceea12f5b03ac76e54b617cb3c10e8114 100644 --- a/src/app/components/remous-results/remous-results.component.ts +++ b/src/app/components/remous-results/remous-results.component.ts @@ -141,11 +141,6 @@ export class RemousResultsComponent extends ResultsComponentDirective implements return this._tableHeaders; } - public getResultClass(i: number) { - // tslint:disable-next-line:no-bitwise - return "result_id_" + String(i & 1); - } - public get hasResults(): boolean { return this._remousResults !== undefined && this._remousResults.hasResults; } diff --git a/src/app/components/results-chart/chart-type.component.ts b/src/app/components/results-chart/chart-type.component.ts index f3ed66b5a768c1367b435b1b0e55a7599a1f8bcf..a7be551c1ddfce8695af812969a9f1e0f62c58c8 100644 --- a/src/app/components/results-chart/chart-type.component.ts +++ b/src/app/components/results-chart/chart-type.component.ts @@ -53,6 +53,18 @@ export class ChartTypeSelectComponent implements IObservable { } } + public get isMultiple(): boolean { + return false; + } + + public get isDisabled(): boolean { + return false; + } + + public get showClearButton(): boolean { + return false; + } + public get label() { return this.intlService.localizeText("INFO_PARAMFIELD_CHART_TYPE"); } diff --git a/src/app/components/results-chart/results-chart.component.html b/src/app/components/results-chart/results-chart.component.html index 7b95757ae948e592f0f80b90739f18a39c5384d2..1cf1336d5b43c0c98f79f967a421166a720e799e 100644 --- a/src/app/components/results-chart/results-chart.component.html +++ b/src/app/components/results-chart/results-chart.component.html @@ -7,7 +7,8 @@ <button mat-icon-button (click)="exportAsImage(graphResults)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(graphResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -41,4 +42,4 @@ </mat-option> </mat-select> </mat-form-field> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/section-results/section-results.component.html b/src/app/components/section-results/section-results.component.html index 04625e227ea5500494aa68bd6cb751036bd43063..ff26a315cad7f386d37b69661a6be7d76becdf7c 100644 --- a/src/app/components/section-results/section-results.component.html +++ b/src/app/components/section-results/section-results.component.html @@ -1,10 +1,13 @@ -<div class="section-results-container" #sectionResults *ngIf="hasResults" fxLayout="row wrap" fxLayoutAlign="center center"> +<div class="section-results-container" #sectionResults *ngIf="hasResults" fxLayout="row wrap" + fxLayoutAlign="center center"> + <div fxFlex="1 1 100%"> <div class="section-results-buttons"> <button mat-icon-button (click)="exportAsImage(sectionResults)" [title]="uitextExportImageTitle"> <mat-icon color="primary">image</mat-icon> </button> - <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(sectionResults)" [title]="uitextEnterFSTitle"> + <button mat-icon-button *ngIf="! isFullscreen" (click)="setFullscreen(sectionResults)" + [title]="uitextEnterFSTitle"> <mat-icon color="primary" class="scaled12">fullscreen</mat-icon> </button> <button mat-icon-button *ngIf="isFullscreen" (click)="exitFullscreen()" [title]="uitextExitFSTitle"> @@ -18,3 +21,21 @@ </div> </div> </div> + +<div class="container"> + <!-- journal --> + <log></log> + + <results-chart *ngIf="showVarResults"></results-chart> + <!--<results-chart [hidden]="! showVarResultsChart"></results-chart>--> + + <div> + <!-- table des résultats fixés --> + <fixed-results [results]=fixedResults></fixed-results> + + <!-- table des résultats variés --> + <div *ngIf="showVarResults"> + <var-results [results]=varResults></var-results> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/app/components/section-results/section-results.component.ts b/src/app/components/section-results/section-results.component.ts index 130f45e7fd1453246ee8684820806e49dd814b4e..99df6bb4a1346c5376f452cd64c29d79738aa7d3 100644 --- a/src/app/components/section-results/section-results.component.ts +++ b/src/app/components/section-results/section-results.component.ts @@ -5,9 +5,9 @@ import { ResultElement } from "jalhyd"; import { SectionCanvasComponent } from "../section-canvas/section-canvas.component"; import { SectionResults } from "../../results/section-results"; import { CalculatorResults } from "../../results/calculator-results"; -import { ResultsComponentDirective } from "../fixedvar-results/results.component"; import { I18nService } from "../../services/internationalisation.service"; import { AppComponent } from "../../app.component"; +import { FixedVarResultsComponent } from "../fixedvar-results/fixedvar-results.component"; @Component({ selector: "section-results", @@ -16,7 +16,7 @@ import { AppComponent } from "../../app.component"; "./section-results.component.scss" ] }) -export class SectionResultsComponent extends ResultsComponentDirective implements DoCheck { +export class SectionResultsComponent extends FixedVarResultsComponent implements DoCheck { constructor( private intlService: I18nService, @@ -26,6 +26,7 @@ export class SectionResultsComponent extends ResultsComponentDirective implement } public set results(rs: CalculatorResults[]) { + super.results = rs; this._resultElement = undefined; this._results = undefined; if (rs) { @@ -68,28 +69,17 @@ export class SectionResultsComponent extends ResultsComponentDirective implement */ private _resultElement: ResultElement; - private _doUpdate = false; - @ViewChild(SectionCanvasComponent) - private _sectionCanvas: SectionCanvasComponent; + private _sectionCanvasComponent: SectionCanvasComponent; public updateView() { - if (this._sectionCanvas) { - this._sectionCanvas.reset(); + if (this._sectionCanvasComponent) { + this._sectionCanvasComponent.reset(); } - if (this._results) { this._doUpdate = this._results.hasResults; } - } - - /** - * appelé pour gérer les changements non détectés par Angular - */ - public ngDoCheck() { - if (this._doUpdate) { - this._doUpdate = !this.updateResults(); - } + super.updateView(); } private isSectionLevel(s: string) { @@ -101,17 +91,18 @@ export class SectionResultsComponent extends ResultsComponentDirective implement return false; } - private updateResults() { - if (this._results && this._sectionCanvas) { + protected updateResults() { + const superUpdated = super.updateResults(); + if (this._results && this._sectionCanvasComponent !== undefined) { this._resultElement = new ResultElement(); // compute canvas optimal size the first time - if (this._sectionCanvas.originalSize === undefined) { + if (this._sectionCanvasComponent.originalSize === undefined) { const container = this.element.nativeElement.querySelector(".section-results-container"); const size = Math.min(container.offsetWidth, container.offsetHeight); - this._sectionCanvas.originalSize = size - 17; // 417 - 17 = 400 - this._sectionCanvas.size = this._sectionCanvas.originalSize; + this._sectionCanvasComponent.originalSize = size - 17; // 417 - 17 = 400 + this._sectionCanvasComponent.size = this._sectionCanvasComponent.originalSize; } // traduction des symboles des variables calculées @@ -123,30 +114,27 @@ export class SectionResultsComponent extends ResultsComponentDirective implement this._resultElement.addExtraResult(lbl, er); if (this.isSectionLevel(k)) { - this._sectionCanvas.addLevel(er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k]); + this._sectionCanvasComponent.addLevel( + er, k + " = " + this.formattedValue(er), SectionResultsComponent.labelColors[k] + ); } } } // ajout du tirant d'eau saisi const valY = this._results.result.sourceNub.getParameter("Y").singleValue; - this._sectionCanvas.addLevel(valY, "Y = " + this.formattedValue(valY), SectionResultsComponent.labelColors["Y"]); + this._sectionCanvasComponent.addLevel(valY, "Y = " + this.formattedValue(valY), SectionResultsComponent.labelColors["Y"]); // wait just a little to draw, in case this._sectionCanvas.size was changed above (1st run) setTimeout(() => { if (this._results && this._results.section) { - this._sectionCanvas.section = this._results.section; + this._sectionCanvasComponent.section = this._results.section; } }, 100); - - return true; } - return false; - } - public getResultClass(i: number) { - // tslint:disable-next-line:no-bitwise - return "result_id_" + String(i & 1); + const canvasUpdated = (! this.hasResults || this._sectionCanvasComponent !== undefined); + return superUpdated && canvasUpdated; } public exportAsImage(element: HTMLDivElement) { @@ -155,10 +143,10 @@ export class SectionResultsComponent extends ResultsComponentDirective implement /** redraw canvas on fullscreen state change (scale drawing) */ public fullscreenChange(isFullscreen: boolean) { - this._sectionCanvas.size = this.getContainerSize(! isFullscreen); - this.previousContainerSize = this._sectionCanvas.size; + this._sectionCanvasComponent.size = this.getContainerSize(! isFullscreen); + this.previousContainerSize = this._sectionCanvasComponent.size; setTimeout(() => { - this._sectionCanvas.draw(); + this._sectionCanvasComponent.draw(); }, 100); } @@ -173,7 +161,7 @@ export class SectionResultsComponent extends ResultsComponentDirective implement // when going back from fullscreen mode, container size tends to be // too high for whatever reason; use originalSize on this purpose if (useOriginalSize) { - size = Math.min(size, this._sectionCanvas.originalSize); + size = Math.min(size, this._sectionCanvasComponent.originalSize); } return size; } diff --git a/src/app/components/select-field-line/select-field-line.component.ts b/src/app/components/select-field-line/select-field-line.component.ts index 97ba41d40c123c744ae556778e0a5fcf64c402e3..b438c0256a1cbb02c0ae95cdf675dff11bd4cc71 100644 --- a/src/app/components/select-field-line/select-field-line.component.ts +++ b/src/app/components/select-field-line/select-field-line.component.ts @@ -3,8 +3,9 @@ import { Component, Input, OnInit } from "@angular/core"; import { SelectField } from "../../formulaire/elements/select-field"; import { SelectEntry } from "../../formulaire/elements/select-entry"; import { I18nService } from "../../services/internationalisation.service"; -import { SelectFieldReference } from "../../formulaire/elements/select-field-reference"; import { ApplicationSetupService } from "../../services/app-setup.service"; +import { SelectFieldCustom } from "../../formulaire/elements/select-field-custom"; +import { decodeHtml } from "../../util"; @Component({ selector: "select-field-line", @@ -30,6 +31,14 @@ export class SelectFieldLineComponent implements OnInit { return this._select.id; } + public get isMultiple(): boolean { + return this._select.multiple; + } + + public get isDisabled(): boolean { + return this._select.disabled; + } + public get entries(): SelectEntry[] { if (! this._select) { return []; @@ -38,10 +47,10 @@ export class SelectFieldLineComponent implements OnInit { } protected entryLabel(entry: SelectEntry): string { - return entry.label; + return decodeHtml(entry.label); } - public get selectedValue(): SelectEntry { + public get selectedValue(): SelectEntry | SelectEntry[] { return this._select.getValue(); } @@ -49,7 +58,7 @@ export class SelectFieldLineComponent implements OnInit { return (this._select.getValue() !== undefined); } - public set selectedValue(v: SelectEntry) { + public set selectedValue(v: SelectEntry | SelectEntry[]) { this._select.setValue(v); } @@ -66,9 +75,11 @@ export class SelectFieldLineComponent implements OnInit { if (typeof this._select.helpLink === "string") { link = this._select.helpLink; } else { // object - const cv = this._select.getValue(); - const entryId = cv.id.substring(this._select.entriesBaseId.length); - link = this._select.helpLink[entryId]; + if (! this.isMultiple) { // @TODO manage multiple selections ? + const cv = this._select.getValue() as SelectEntry; + const entryId = cv.id.substring(this._select.entriesBaseId.length); + link = this._select.helpLink[entryId]; + } } window.open("assets/docs/" + this.appSetupService.language + "/calculators/" + link, "_blank"); $event.preventDefault(); @@ -81,21 +92,35 @@ export class SelectFieldLineComponent implements OnInit { if (typeof this._select.helpLink === "string") { return true; } else { // object - const cv = this._select.getValue(); - const entryId = cv.id.substring(this._select.entriesBaseId.length); - return Object.keys(this._select.helpLink).includes(entryId); + if (! this.isMultiple) { // @TODO manage multiple selections ? + const cv = this._select.getValue() as SelectEntry; + const entryId = cv.id.substring(this._select.entriesBaseId.length); + return Object.keys(this._select.helpLink).includes(entryId); + } } } return false; } + public get showClearButton(): boolean { + return this.isMultiple && this.selectedValue && ! (Array.isArray(this.selectedValue) && this.selectedValue.length === 0); + } + public get uitextOpenHelp() { return this.i18nService.localizeText("INFO_CALCULATOR_OPEN_HELP"); } + public get uitextAndOther() { + return this.i18nService.localizeText("INFO_SELECT_MULTIPLE_AND_OTHER"); + } + + public get uitextAndOthers() { + return this.i18nService.localizeText("INFO_SELECT_MULTIPLE_AND_OTHERS"); + } + // called every time we navigate to the module ngOnInit(): void { - if (this._select instanceof SelectFieldReference) { + if (this._select instanceof SelectFieldCustom) { this._select.updateEntries(); } } diff --git a/src/app/components/select-model-field-line/select-model-field-line.component.html b/src/app/components/select-model-field-line/select-model-field-line.component.html deleted file mode 100644 index e85ced8afc0a379e6b71eb12bae14d907f8ea3c7..0000000000000000000000000000000000000000 --- a/src/app/components/select-model-field-line/select-model-field-line.component.html +++ /dev/null @@ -1,24 +0,0 @@ -<div class="container" fxLayout="row wrap" fxLayoutAlign="space-between start"> - - <!-- input de saisie de la valeur --> - <div fxFlex="1 0 120px"> - - <mat-form-field> - <mat-select [id]="selectId" [name]="selectId" [placeholder]="label" [(value)]="selectedValue" required> - <mat-option *ngFor="let e of entries" [value]="e" [title]="selectItemLabel(e)"> - {{ selectItemLabel(e) }} - </mat-option> - </mat-select> - </mat-form-field> - </div> - - <div class="button-container" fxFlex="0 0 auto"> - <button type="button" mat-icon-button *ngIf="selectedValue" [routerLink]="['/calculator/', modelUid]"> - <mat-icon>edit</mat-icon> - </button> - <button type="button" mat-icon-button *ngIf="entries.length === 0" (click)="createModel()" id="create-model"> - <mat-icon>add</mat-icon> - </button> - </div> - -</div> \ No newline at end of file diff --git a/src/app/components/select-model-field-line/select-model-field-line.component.scss b/src/app/components/select-model-field-line/select-model-field-line.component.scss deleted file mode 100644 index a7a72dfa5fe7aded324cfbd83dbb9e9e40f9a1e3..0000000000000000000000000000000000000000 --- a/src/app/components/select-model-field-line/select-model-field-line.component.scss +++ /dev/null @@ -1,12 +0,0 @@ -mat-form-field { - width: calc(100% - 8px); - margin-right: 8px; -} - -.button-container { - text-align: right; - - button { - margin-top: 4px; - } -} diff --git a/src/app/components/select-model-field-line/select-model-field-line.component.ts b/src/app/components/select-model-field-line/select-model-field-line.component.ts deleted file mode 100644 index 592e3032e496ee1ec51c3e534a6d2cf99bf87218..0000000000000000000000000000000000000000 --- a/src/app/components/select-model-field-line/select-model-field-line.component.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { Component, Input, OnInit } from "@angular/core"; -import { Router } from "@angular/router"; - -import { SelectEntry } from "../../formulaire/elements/select-entry"; -import { FormulaireService } from "../../services/formulaire.service"; -import { FieldsetContainer } from "../../formulaire/elements/fieldset-container"; -import { SelectFieldModel } from "../../formulaire/elements/select-field-model"; - -@Component({ - selector: "select-model-field-line", - templateUrl: "./select-model-field-line.component.html", - styleUrls: [ - "./select-model-field-line.component.scss" - ] -}) -export class SelectModelFieldLineComponent implements OnInit { - @Input() - private _select: SelectFieldModel; - - public constructor( - private _formService: FormulaireService, - private router: Router - ) {} - - public get selectId() { - return this._select.id; - } - - public get entries(): SelectEntry[] { - if (! this._select) { - return []; - } - return this._select.entries; - } - - public get modelUid() { - return this.selectedValue ? this.selectedValue.id : ""; - } - - public get isValid(): boolean { - return (this._select.getValue() !== undefined); - } - - // called every time we navigate to the module - ngOnInit(): void { - this._select.updateEntries(); - } - - /** - * Label d'une entrée du select des modèles de cloisons - */ - public selectItemLabel(entry: SelectEntry): string { - if (entry && entry.id) { - const cloisonsForm = this._formService.getFormulaireFromNubId(entry.id); - const name = cloisonsForm.calculatorName; - return name; - } - } - - public get selectedValue(): SelectEntry { - return this._select.getValue(); - } - - public set selectedValue(v: SelectEntry) { - this._select.setValue(v); - } - - public get label() { - if (this._select) { - return this._select.label; - } else { - return ""; - } - } - - /** - * Creates a new Nub of type _select.calcType, to be used as a model - * when no other is available - */ - public createModel() { - this._formService.createFormulaire(this._select.calcType).then(f => { - this.router.navigate(["/calculator", f.uid]); - return f; - }).then(f => { - // on ajoute un ouvrage aux modulex de type "parallèle" - for (const e of f.allFormElements) { - if (e instanceof FieldsetContainer) { - e.addFromTemplate(0); - break; - } - } - }); - } -} diff --git a/src/app/components/session-properties/session-properties.component.html b/src/app/components/session-properties/session-properties.component.html index 13211dc48dc10620103be1624755cfd0f865c0c9..3ad9695b607b77bd0cd6895cfc59f7b907a69d51 100644 --- a/src/app/components/session-properties/session-properties.component.html +++ b/src/app/components/session-properties/session-properties.component.html @@ -16,8 +16,8 @@ </mat-tab> <mat-tab [label]="uitextEdit"> <mat-form-field> - <textarea matInput id="md-editor" [(ngModel)]="content" - cdkTextareaAutosize cdkAutosizeMinRows="15" #autosize="cdkTextareaAutosize"></textarea> + <textarea matInput id="md-editor" [(ngModel)]="content" cdkTextareaAutosize + cdkAutosizeMinRows="15" #autosize="cdkTextareaAutosize"></textarea> </mat-form-field> </mat-tab> </mat-tab-group> @@ -26,4 +26,4 @@ </mat-card> -</div> +</div> \ No newline at end of file diff --git a/src/app/components/session-properties/session-properties.component.ts b/src/app/components/session-properties/session-properties.component.ts index d9cbf6111f62aab70f2f74ff7cf1ee2b7ac45f11..fe82be8a01d96f36f7f217c1075d7bfc9cc57761 100644 --- a/src/app/components/session-properties/session-properties.component.ts +++ b/src/app/components/session-properties/session-properties.component.ts @@ -30,7 +30,7 @@ export class SessionPropertiesComponent implements OnInit { throwOnError: false, errorColor: "#cc0000" }; - if (! isDevMode()) { + if (!isDevMode()) { this.matomoTracker.trackPageView("notes"); } } @@ -57,8 +57,8 @@ export class SessionPropertiesComponent implements OnInit { public ngOnInit() { // if app is started on this page but session is empty, redirect to home page - if (! this.hasModules) { - this.router.navigate([ "/list" ]); + if (!this.hasModules) { + this.router.navigate(["/list"]); } // if notes content is empty, switch to editor if (this.content === undefined || this.content === "") { diff --git a/src/app/components/verificateur-results/verificateur-results.component.html b/src/app/components/verificateur-results/verificateur-results.component.html new file mode 100644 index 0000000000000000000000000000000000000000..1d0f784795249b95dd9efe67895a5ee24087c843 --- /dev/null +++ b/src/app/components/verificateur-results/verificateur-results.component.html @@ -0,0 +1,8 @@ +<div class="container"> + <log #generalLog [logTitle]="uitextGeneralLogTitle">log général</log> + + <variable-results-selector [results]="verificateurResults" (indexChange)="variableIndexChanged()"> + </variable-results-selector> + + <log-drawer #iterationLog></log-drawer> +</div> diff --git a/src/app/components/verificateur-results/verificateur-results.component.scss b/src/app/components/verificateur-results/verificateur-results.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/app/components/verificateur-results/verificateur-results.component.ts b/src/app/components/verificateur-results/verificateur-results.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..1d76c0420f3a10d49246900585a910fa85c3240a --- /dev/null +++ b/src/app/components/verificateur-results/verificateur-results.component.ts @@ -0,0 +1,178 @@ +import { Component, ViewChild, DoCheck } from "@angular/core"; + +import { cLog, Message } from "jalhyd"; + +import { LogComponent } from "../log/log.component"; +import { CalculatorResults } from "../../results/calculator-results"; +import { VariableResultsSelectorComponent } from "../variable-results-selector/variable-results-selector.component"; +import { I18nService } from "../../services/internationalisation.service"; +import { VerificateurResults } from "../../results/verificateur-results"; +import { ResultsComponentDirective } from "../fixedvar-results/results.component"; +import { LogDrawerComponent } from "../log-drawer/log-drawer.component"; + +@Component({ + selector: "verificateur-results", + templateUrl: "./verificateur-results.component.html", + styleUrls: [ + "./verificateur-results.component.scss" + ] +}) +export class VerificateurResultsComponent extends ResultsComponentDirective implements DoCheck { + + /** résultats non mis en forme */ + private _verificateurResults: VerificateurResults; + + /** true si les résultats doiventt être remis à jour */ + private _doUpdate = false; + + @ViewChild(VariableResultsSelectorComponent) + private variableResultsSelectorComponent: VariableResultsSelectorComponent; + + @ViewChild("generalLog") + private generalLogComponent: LogComponent; + + @ViewChild("iterationLog") + private iterationLogComponent: LogDrawerComponent; + + constructor( + private i18nService: I18nService, + ) { + super(); + } + + public set results(rs: CalculatorResults[]) { + this._verificateurResults = undefined; + if (rs.length > 0 && rs[0] instanceof VerificateurResults) { + this._verificateurResults = rs[0] as VerificateurResults; + } + this.updateView(); + } + + /** + * update iteration log when the variable index changed (event sent by + * VariableResultsSelectorComponent); variable index is already set in + * verificateurResults at this time + */ + public variableIndexChanged() { + this.updateView(); + } + + public updateView() { + if (this.iterationLogComponent) { + this.iterationLogComponent.log = undefined; + } + if (this.generalLogComponent) { + this.generalLogComponent.log = undefined; + } + if (this.variableResultsSelectorComponent) { + this.variableResultsSelectorComponent.results = undefined; + } + // set _doUpdate flag so that results are rebuilt on the next Angular display cycle + this._doUpdate = false; + if (this._verificateurResults !== undefined) { + this._doUpdate = this._doUpdate || this._verificateurResults.hasResults || this._verificateurResults.hasLog; + } + } + + public ngDoCheck() { + if (this._doUpdate) { + this._doUpdate = !this.updateResults(); + } + } + + /* + * Retourne les messages à afficher dans le composant de log global, au dessus + * du sélecteur d'itération : messages globaux du Verificateur + */ + private get globalLog(): cLog { + const l = new cLog(); + if (this._verificateurResults && this._verificateurResults.result && this._verificateurResults.result.hasGlobalLog()) { + l.addLog(this._verificateurResults.result.globalLog); + } + return l; + } + + /** + * Retourne les messages à afficher dans le composant de log "du bas" : logs de l'itération + * en cours (messages non-globaux du Vérificateur et eds Espèce), que le résultat varie ou non + */ + private get iterationLog(): Array<{ message: Message, subLog: cLog }> { + const l: Array<{ message: Message, subLog: cLog }> = []; + if (this._verificateurResults) { + // = 0 lorsque rien ne varie + const vi = this._verificateurResults.variableIndex; + if ( + this._verificateurResults.result + && this._verificateurResults.result.hasResultElements() + && this._verificateurResults.result.resultElements[vi] + && this._verificateurResults.result.resultElements[vi].hasLog() + ) { + // every log message of Verificateur is supposed to always be a status message for the nth Espece + const verLog: cLog = this._verificateurResults.result.resultElements[vi].log; + for (const vm of verLog.messages) { + l.push({ + message: vm, + subLog: new cLog() + }); + } + } + // logs des Espece pour l'itération en cours; l.length devrait toujours être égal à especeResults.length, + // sauf s'il y a une erreur dans la passe calculée + if (l.length === this._verificateurResults.especeResults.length) { + for (let i = 0; i < this._verificateurResults.especeResults.length; i++) { + const er = this._verificateurResults.especeResults[i]; + if ( + er + && er.hasResultElements() + && er.resultElements[vi] + && er.resultElements[vi].hasLog()) + // tslint:disable-next-line:one-line + { + l[i].subLog.addLog(er.resultElements[vi].log); + } + } + } // else silent fail + } + return l; + } + + /** + * met à jour l'affichage des résultats + * @returns true si les résultats ont pu être mis à jour + */ + private updateResults() { + let selectorUpdated: boolean; + + // results or not, there might be a log + const logUpdated = (this.iterationLogComponent !== undefined || this.generalLogComponent !== undefined); // gne ? + if (logUpdated) { + // order of logs is important ! + this.iterationLogComponent.log = this.iterationLog; + this.generalLogComponent.log = this.globalLog; + } + + if (this.hasResults) { + selectorUpdated = this.variableResultsSelectorComponent !== undefined; + if (selectorUpdated) { + this.variableResultsSelectorComponent.results = this._verificateurResults; + } + } else { + selectorUpdated = true; + } + + return logUpdated && selectorUpdated; + } + + public get verificateurResults() { + return this._verificateurResults; + } + + public get hasResults(): boolean { + return this._verificateurResults && this._verificateurResults.hasResults; + } + + public get uitextGeneralLogTitle(): string { + return this.i18nService.localizeText("INFO_TITREJOURNAL_GLOBAL"); + } + +} diff --git a/src/app/config.json b/src/app/config.json index 81a0d953fdaf5d1aedf58a66a6fcfcd96d8ca028..35925d7698c2eea9e7e93e31e6f9e324a494d549 100644 --- a/src/app/config.json +++ b/src/app/config.json @@ -33,6 +33,14 @@ }, "calculators": [ 11, 17, 27 ] }, + { + "name": "VERIFICATION", + "image": { + "path": "verification.jpg", + "credits": "S. Richard / OFB" + }, + "calculators": [ 31, 30 ] + }, { "name": "DEVALAISON", "image": { diff --git a/src/app/directives/jalhyd-model-validation.directive.ts b/src/app/directives/jalhyd-model-validation.directive.ts index 71445d72f2b2e62a44b2cdb7fbb56206b0a2903e..758242ff9e50284dfa0f43f4e7890260658da8f6 100644 --- a/src/app/directives/jalhyd-model-validation.directive.ts +++ b/src/app/directives/jalhyd-model-validation.directive.ts @@ -110,7 +110,7 @@ export function jalhydModelValidatorMin(ngParam: NgParameter): ValidatorFn { "jalhydModelMin": { value: control.value, message: sprintf( - ServiceFactory.instance.i18nService.localizeText("ERROR_MINMAXSTEP_MIN"), + ServiceFactory.i18nService.localizeText("ERROR_MINMAXSTEP_MIN"), ngParam.domain.minValue, ngParam.maxValue ) @@ -130,7 +130,7 @@ export function jalhydModelValidatorMax(ngParam: NgParameter): ValidatorFn { "jalhydModelMax": { value: control.value, message: sprintf( - ServiceFactory.instance.i18nService.localizeText("ERROR_MINMAXSTEP_MAX"), + ServiceFactory.i18nService.localizeText("ERROR_MINMAXSTEP_MAX"), ngParam.minValue, ngParam.domain.maxValue ) @@ -153,8 +153,8 @@ export function jalhydModelValidatorStep(ngParam: NgParameter): ValidatorFn { "jalhydModelStep": { value: control.value, message: sprintf( - // ServiceFactory.instance.i18nService.localizeText("ERROR_MINMAXSTEP_STEP"), - ServiceFactory.instance.i18nService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"), + // ServiceFactory.i18nService.localizeText("ERROR_MINMAXSTEP_STEP"), + ServiceFactory.i18nService.localizeText("ERROR_PARAM_MUST_BE_POSITIVE"), ngParam.stepRefValue.toString() ) } diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts index 3cb94b538c3290d99fdaa048f7fd3b7becb7e392..e0c346cf8ad5a72a4a242cb85cc4a5cf8bd5b0e9 100644 --- a/src/app/formulaire/definition/form-definition.ts +++ b/src/app/formulaire/definition/form-definition.ts @@ -24,6 +24,7 @@ import { TopFormulaireElementIterator } from "../form-iterator/top-element-itera import { CalculatorResults } from "../../results/calculator-results"; import { ServiceFactory } from "../../services/service-factory"; import { PabTable } from "../elements/pab-table"; +import { SelectEntry } from "../elements/select-entry"; /** * classe de base pour tous les formulaires @@ -45,15 +46,12 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs /** aide en ligne pour les résultats */ protected _resultsHelpLinks: { [key: string]: string }; + /** set to true to definitely gray-out Calculate button */ + protected _calculateDisabled = false; + /** fichier de configuration */ private _jsonConfig: {}; - /** clé-valeurs du fichier de localisation spécifique à ce module */ - private _specificLocalisation: StringMap; - - /** ISO 639-1 language code of the current language (to avoid unnecessary localisation reload) */ - private _currentLanguage: string; - /** copy of options.resultsHelp read by FormDefinition.parseOptions() */ public helpLinks: { [key: string]: string }; @@ -71,12 +69,8 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } } - public get specificLocalisation() { - return this._specificLocalisation; - } - - public get currentLanguage() { - return this._currentLanguage; + public get calculateDisabled(): boolean { + return this._calculateDisabled; } public get calculatorType(): CalculatorType { @@ -100,7 +94,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs "name": name }, this); // convenient trick to notify param-link components - ServiceFactory.instance.formulaireService.propagateFormNameChange(this, name); + ServiceFactory.formulaireService.propagateFormNameChange(this, name); } public get jsonConfig(): {} { @@ -160,10 +154,13 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } this._helpLink = json["help"]; this._resultsHelpLinks = json["resultsHelp"]; + if (json["calculateDisabled"] !== undefined) { + this._calculateDisabled = json["calculateDisabled"]; + } } /** called at the end of parseConfig() */ - protected completeParse(json: {}) { + protected completeParse(firstNotif: boolean = true) { this.helpLinks = this._resultsHelpLinks; } @@ -283,7 +280,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs } } - this.completeParse(this._jsonConfig); + this.completeParse(); } public hasParameter(symbol: string): boolean { @@ -390,7 +387,12 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs */ public getSelectedValue(selectFieldId: string): any { const select: SelectField = <SelectField>this.getFieldById(selectFieldId); - return select.getValue().value; + if (select.multiple) { + const values: string[] = (select.getValue() as SelectEntry[]).map((se) => se.value); + return values; + } else { + return (select.getValue() as SelectEntry).value; + } } /** @@ -398,16 +400,19 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs * @param selectFieldId id du SelectField * @returns label courant du select */ - public getSelectedLabel(selectFieldId: string): string { + public getSelectedLabel(selectFieldId: string): any { const select: SelectField = <SelectField>this.getFieldById(selectFieldId); - return select.getValue().label; + if (select.multiple) { + const labels: string[] = (select.getValue() as SelectEntry[]).map((se) => se.label); + return labels; + } else { + return (select.getValue() as SelectEntry).label; + } } - public updateLocalisation(localisation: StringMap, lang: string) { - this._specificLocalisation = localisation; - this._currentLanguage = lang; + public updateLocalisation(lang: string) { for (const fe of this.topFormElements) { - fe.updateLocalisation(localisation); + fe.updateLocalisation(); } } @@ -472,7 +477,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs // reset model results this.currentNub.resetResult(); // reset the result panels of all forms depending on this one - ServiceFactory.instance.formulaireService.resetAllDependingFormsResults(this, visited, symbol, forceResetAllDependencies); + ServiceFactory.formulaireService.resetAllDependingFormsResults(this, visited, symbol, forceResetAllDependencies); } protected abstract compute(); diff --git a/src/app/formulaire/definition/form-espece.ts b/src/app/formulaire/definition/form-espece.ts new file mode 100644 index 0000000000000000000000000000000000000000..10ded3b83c1994fec8e6ff43cd5d5a684d13a79b --- /dev/null +++ b/src/app/formulaire/definition/form-espece.ts @@ -0,0 +1,43 @@ +import { IObservable, DivingJetSupport } from "jalhyd"; + +import { FormulaireFixedVar } from "./form-fixedvar"; +import { NgParameter } from "../elements/ngparam"; + +/** + * Formulaire pour les espèces (critères de franchissement) + */ +export class FormulaireEspece extends FormulaireFixedVar { + + protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); + this.updateDivingJetCriteriaInputs(this.currentNub.properties.getPropValue("divingJetSupported")); + } + + /** + * Enable or disable inputs related to diving jet PAB criteria + */ + public updateDivingJetCriteriaInputs(supported: DivingJetSupport) { + const fsPABDivingJet = this.getFormulaireNodeById("fs_param_pab_p"); + if (fsPABDivingJet !== undefined) { + for (const e of fsPABDivingJet.allFormElements) { + if (e instanceof NgParameter) { + e.disabled = (supported === DivingJetSupport.NOT_SUPPORTED); + } + } + } + } + + // interface Observer + + public update(sender: IObservable, data: any) { + super.update(sender, data); + if (data.action === "propertyChange") { + switch (data.name) { + case "divingJetSupported": + this.updateDivingJetCriteriaInputs(data.value); + this.reset(); + break; + } + } + } +} diff --git a/src/app/formulaire/definition/form-fixedvar.ts b/src/app/formulaire/definition/form-fixedvar.ts index 20314b5209a40fa200917e1cc31c43f3a94f5be8..87b008f0cad3c3f773555908e934c894789db049 100644 --- a/src/app/formulaire/definition/form-fixedvar.ts +++ b/src/app/formulaire/definition/form-fixedvar.ts @@ -7,6 +7,7 @@ import { ParamRadioConfig, NgParameter } from "../elements/ngparam"; import { FieldSet } from "../elements/fieldset"; import { Nub, IObservable } from "jalhyd"; +import { SelectFieldCustom } from "../elements/select-field-custom"; export class FormulaireFixedVar extends FormulaireDefinition { @@ -16,6 +17,9 @@ export class FormulaireFixedVar extends FormulaireDefinition { /** ids of select fields */ private _selectIds: string[] = []; + /** ids of "custom" select fields */ + private _customSelectIds: string[] = []; + constructor() { super(); this._fixedResults = new FixedResults(); @@ -70,21 +74,40 @@ export class FormulaireFixedVar extends FormulaireDefinition { } public afterParseFieldset(fs: FieldSet) { - // observe all select fields @see this.update() + // observe all Select fields @see this.update() if (this._selectIds.length > 0) { for (const sId of this._selectIds) { const sel = fs.getFormulaireNodeById(sId); if (sel) { + // Formulaire is listening to FieldSet properties (@TODO why not directly Select ?) fs.properties.addObserver(this); } } } } + protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); + // observe all CustomSelect fields @TODO move to afterParseFieldset ? + if (this._customSelectIds.length > 0) { + for (const csId of this._customSelectIds) { + const sel = this.getFormulaireNodeById(csId); + // Formulaire is listening to Select value + sel.addObserver(this); + if (firstNotif) { + // force 1st observation + (sel as SelectFieldCustom).notifyValueChanged(); + } + } + } + } + protected parseOptions(json: {}) { super.parseOptions(json); // get ids of all select fields this._selectIds = this.getOption(json, "selectIds") || []; + // get ids of all "custom" select fields + this._customSelectIds = this.getOption(json, "customSelectIds") || []; } protected compute() { @@ -121,10 +144,11 @@ export class FormulaireFixedVar extends FormulaireDefinition { /** * Forces all fieldsets to update all their fields */ - protected refreshFieldsets() { + public refreshFieldsets() { for (const fs of this.allFieldsets) { fs.updateFields(); } + this.completeParse(false); // re-add observers that were destroyed by updateFields() } // interface Observer diff --git a/src/app/formulaire/definition/form-macrorugo-compound.ts b/src/app/formulaire/definition/form-macrorugo-compound.ts index c94dad30a3aafd7dfd1b3a27ce6d35f391b31f21..f04e6ccfe47b44d0ad032872a2737a080369c54e 100644 --- a/src/app/formulaire/definition/form-macrorugo-compound.ts +++ b/src/app/formulaire/definition/form-macrorugo-compound.ts @@ -51,10 +51,12 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset { } } - protected completeParse(json: {}) { - this.subscribeFieldsetContainer(); - this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron")); - this.helpLinks = this._resultsHelpLinks; + protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); + this.fieldsetContainer.addObserver(this); + if (firstNotif) { + this.updateApronState(this.currentNub.properties.getPropValue("inclinedApron")); + } } protected get fieldsetContainer(): FieldsetContainer { @@ -65,13 +67,6 @@ export class FormulaireMacrorugoCompound extends FormulaireRepeatableFieldset { return n as FieldsetContainer; } - /** - * abonnement en tant qu'observateur du FieldsetContainer - */ - private subscribeFieldsetContainer() { - this.fieldsetContainer.addObserver(this); - } - /** * abonnement en tant qu'observateur des NgParameter des FieldSet contenus dans le FieldsetContainer */ diff --git a/src/app/formulaire/definition/form-pab.ts b/src/app/formulaire/definition/form-pab.ts index 723d0713a7e11c498e08e312533d0cb2bdd0f6b5..593aa219ab297fbe1bb4a517475a03d8e3737778 100644 --- a/src/app/formulaire/definition/form-pab.ts +++ b/src/app/formulaire/definition/form-pab.ts @@ -82,7 +82,7 @@ export class FormulairePab extends FormulaireDefinition { return this._pabResults; } - public resetResults() { + public resetFormResults() { this._pabResults.reset(); } diff --git a/src/app/formulaire/definition/form-parallel-structures.ts b/src/app/formulaire/definition/form-parallel-structures.ts index 6e238dd769a8342766cfb1360625324bfb305075..eaffb9f336341df0784a4d83b56a6c08f43f09e1 100644 --- a/src/app/formulaire/definition/form-parallel-structures.ts +++ b/src/app/formulaire/definition/form-parallel-structures.ts @@ -92,9 +92,9 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset { return newStructure; } - protected completeParse(json: {}) { - this.subscribeFieldsetContainer(); - this.helpLinks = this._resultsHelpLinks; + protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); + this.fieldsetContainer.addObserver(this); } protected get fieldsetContainer(): FieldsetContainer { @@ -128,13 +128,6 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset { } } - /** - * abonnement en tant qu'observateur du FieldsetContainer - */ - private subscribeFieldsetContainer() { - this.fieldsetContainer.addObserver(this); - } - /** * abonnement en tant qu'observateur des NgParameter des FieldSet contenus dans le FieldsetContainer */ diff --git a/src/app/formulaire/definition/form-section.ts b/src/app/formulaire/definition/form-section.ts index 77669213a882cff81572f0712589d834d11ca151..fd45ceb50c782c50436c52886767f4abbba236c0 100644 --- a/src/app/formulaire/definition/form-section.ts +++ b/src/app/formulaire/definition/form-section.ts @@ -6,7 +6,7 @@ import { IObservable, Session, SectionNub } from "jalhyd"; export class FormulaireSection extends FormulaireFixedVar { - update(sender: IObservable, data: any) { + public update(sender: IObservable, data: any) { super.update(sender, data); // changement de propriété du FieldSet contenant le select de choix du type de section if (sender instanceof FieldSet && sender.id === "fs_section" && data.action === "propertyChange") { @@ -21,7 +21,7 @@ export class FormulaireSection extends FormulaireFixedVar { // show / hide dependent fields this.refreshFieldsets(); // empty fields ? only those belonging to the specific section type - if (ServiceFactory.instance.applicationSetupService.enableEmptyFieldsOnFormInit) { + if (ServiceFactory.applicationSetupService.enableEmptyFieldsOnFormInit) { // "LargeurBerge" is hackily used as LargeurFond in Rectangular and Trapez sections, omit it here this.emptyFields([ "Ks", "Q", "If", "YB", "iPrec", "Y" ]); } diff --git a/src/app/formulaire/definition/form-solveur.ts b/src/app/formulaire/definition/form-solveur.ts index b6987a5d5ee756ebf556c71dee6f19f5a915604e..481ea5f6d53bdc020197e68d0828bbbecb0e2212 100644 --- a/src/app/formulaire/definition/form-solveur.ts +++ b/src/app/formulaire/definition/form-solveur.ts @@ -1,7 +1,6 @@ import { IObservable, ParamDefinition, Nub } from "jalhyd"; -import { SelectFieldNub } from "../elements/select-field-nub"; -import { SelectFieldParameter } from "../elements/select-field-parameter"; +import { SelectFieldCustom } from "../elements/select-field-custom"; import { NgParameter } from "../elements/ngparam"; import { FormulaireFixedVar } from "./form-fixedvar"; import { SelectField } from "../elements/select-field"; @@ -12,34 +11,18 @@ import { FieldSet } from "../elements/fieldset"; */ export class FormulaireSolveur extends FormulaireFixedVar { - /** id of select configuring target Nub */ - private _targetNubSelectId: string; - /** id of select configuring targetted result */ private _targettedResultSelectId: string; - /** id of select configuring searched param */ - private _searchedParamSelectId: string; - protected parseOptions(json: {}) { super.parseOptions(json); - this._targetNubSelectId = this.getOption(json, "targetNubSelectId"); this._targettedResultSelectId = this.getOption(json, "targettedResultSelectId"); - this._searchedParamSelectId = this.getOption(json, "searchedParamSelectId"); } - protected completeParse(json: {}, firstNotif: boolean = true) { - super.completeParse(json); - if (this._targetNubSelectId) { - const sel = this.getFormulaireNodeById(this._targetNubSelectId); - if (sel) { - sel.addObserver(this); - if (firstNotif) { - // force 1st observation - (sel as SelectFieldNub).notifySelectValueChanged(); - } - } - } + protected completeParse(firstNotif: boolean = true) { + super.completeParse(firstNotif); + // even though this._targettedResultSelectId is a regular select, an extra action + // is needed: refresh searched parameter selector if (this._targettedResultSelectId) { const sel = this.getFormulaireNodeById(this._targettedResultSelectId); if (sel) { @@ -50,23 +33,12 @@ export class FormulaireSolveur extends FormulaireFixedVar { } } } - if (this._searchedParamSelectId) { - const sel = this.getFormulaireNodeById(this._searchedParamSelectId); - if (sel) { - sel.addObserver(this); - if (firstNotif) { - // force 1st observation - (sel as SelectFieldNub).notifySelectValueChanged(); - } - } - } - } // interface Observer public update(sender: IObservable, data: any) { - // copied from FormDefinition, to avoid calling super.update() + // copied from FormDefinition, to avoid calling super.update() that would trigger an unwanted this.refreshFieldsets(); if (sender instanceof Nub) { switch (data.action) { case "resultUpdated": @@ -80,8 +52,8 @@ export class FormulaireSolveur extends FormulaireFixedVar { this.reset(); } - if (sender instanceof SelectFieldNub) { - if (data.action === "select") { + if (sender instanceof SelectFieldCustom) { + if (sender.id === "select_target_nub" && data.action === "select") { // update Solveur property: Nub to calculate try { // if searchedParam is set to a value that won't be available anymore @@ -94,13 +66,11 @@ export class FormulaireSolveur extends FormulaireFixedVar { if (trSel) { (trSel.parent as FieldSet).updateFields(); // trick to re-set observers - this.completeParse({}, false); + this.completeParse(false); } // refresh parameters selector this.refreshParameterEntries(); - } - } else if (sender instanceof SelectFieldParameter) { - if (data.action === "select") { + } else if (sender.id === "select_searched_param" && data.action === "select") { // update Solveur property: searched Parameter try { const p: ParamDefinition = data.value.value; @@ -114,7 +84,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { inputXinit.notifyValueModified(this); } } else if (sender instanceof SelectField) { - if (sender.id === "select_target_result") { + if (sender.id === this._targettedResultSelectId) { // refresh parameters selector this.refreshParameterEntries(); } @@ -125,7 +95,7 @@ export class FormulaireSolveur extends FormulaireFixedVar { * Re-populate searched parameter selector with fresh entries */ private refreshParameterEntries() { - const pSel = this.getFormulaireNodeById(this._searchedParamSelectId) as SelectFieldParameter; + const pSel = this.getFormulaireNodeById("select_searched_param") as SelectFieldCustom; if (pSel) { pSel.updateEntries(); // reflect changes in GUI diff --git a/src/app/formulaire/definition/form-verificateur.ts b/src/app/formulaire/definition/form-verificateur.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f712ada6a1b1593f6de789246d5a6cd41327201 --- /dev/null +++ b/src/app/formulaire/definition/form-verificateur.ts @@ -0,0 +1,107 @@ +import { IObservable, Nub, Verificateur, Result } from "jalhyd"; + +import { SelectFieldCustom } from "../elements/select-field-custom"; +import { FormulaireFixedVar } from "./form-fixedvar"; +import { VerificateurResults } from "../../results/verificateur-results"; +import { CalculatorResults } from "../../results/calculator-results"; +import { NgParameter } from "../elements/ngparam"; +import { ServiceFactory } from "../../services/service-factory"; + +/** + * Formulaire pour les Vérificateurs + */ +export class FormulaireVerificateur extends FormulaireFixedVar { + + protected _verificateurResults: VerificateurResults; + + constructor() { + super(); + this._verificateurResults = new VerificateurResults(); + } + + public get verificateurNub(): Verificateur { + return this.currentNub as Verificateur; + } + + public get verificateurResults() { + return this._verificateurResults; + } + + protected compute() { + this.runNubCalc(this.currentNub); + // reset variable index to avoid trying to access an index > 0 when nothing varies + const mrcr = this.verificateurResults; + mrcr.variableIndex = 0; + + this.reaffectResultComponents(); + } + + protected findPassVariatedParameters(): NgParameter[] { + let pvp = []; + const passUid = this.verificateurNub.nubToVerify.uid; + const passForm = ServiceFactory.formulaireService.getFormulaireFromNubId(passUid); + pvp = passForm.getVariatedParameters(); + return pvp; + } + + protected reaffectResultComponents() { + const ver: Verificateur = (this.currentNub as Verificateur); + + // résultat de calcul de la passe à macrorugo complexe + const vr = this.verificateurResults; + vr.result = ver.result; + + // paramètres qui varient, pour le sélecteur d'itération + vr.variatedParameters = this.findPassVariatedParameters(); + + // résultat de chaque Espece + const er: Result[] = []; + for (const sp of ver.species) { + er.push(sp.result); + } + vr.especeResults = er; + } + + public resetFormResults() { + this._verificateurResults.reset(); + } + + public get results(): CalculatorResults[] { + return [ this._verificateurResults ]; + } + + public get hasResults(): boolean { + return this._verificateurResults.hasResults; + } + + // interface Observer + + public update(sender: IObservable, data: any) { + // copied from FormDefinition, to avoid calling super.update() that would trigger an unwanted this.refreshFieldsets(); + if (sender instanceof Nub) { + switch (data.action) { + case "resultUpdated": + // forward Nub results update notification to FormCompute objects + this.reaffectResultComponents(); + break; + } + } + // copied from FormFixedVar, to avoid calling super.update() + if (data.action === "propertyChange") { + this.reset(); + } + + if (sender instanceof SelectFieldCustom) { + this.reset(); // reset results + if (sender.id === "select_target_pass" && data.action === "select") { + // update Verificateur property: Pass to check + this._currentNub.properties.setPropValue("nubToVerify", data.value ? data.value.value : undefined); + + } else if (sender.id === "select_species_list" && data.action === "select") { + // update Verificateur property: Species list (string[]) + (this._currentNub as Verificateur).speciesList = data.value.map((v: any) => v.value); + } + } + } + +} diff --git a/src/app/formulaire/elements/fieldset-container.ts b/src/app/formulaire/elements/fieldset-container.ts index 1c31212daed733bd6a8a84e360f6b4a9ed09b5c0..96f719fcf0dd192ee0f7af1bf613bb9b69309b48 100644 --- a/src/app/formulaire/elements/fieldset-container.ts +++ b/src/app/formulaire/elements/fieldset-container.ts @@ -1,15 +1,12 @@ import { FormulaireElement } from "./formulaire-element"; import { FieldSet } from "./fieldset"; import { FieldsetTemplate } from "./fieldset-template"; -import { StringMap } from "../../stringmap"; import { FormulaireNode } from "./formulaire-node"; import { Nub } from "jalhyd"; export class FieldsetContainer extends FormulaireElement { private _templates: FieldsetTemplate[]; - private _localisation: StringMap; - public title: string; constructor(parent: FormulaireNode) { @@ -109,11 +106,4 @@ export class FieldsetContainer extends FormulaireElement { } } } - - public updateLocalisation(loc: StringMap = this._localisation) { - this._localisation = loc; - if (loc !== undefined) { - super.updateLocalisation(loc); - } - } } diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 338328bed7e724a465302aa78dd6da9aa84223aa..dce1e17d48ec85a85578f333ccbf908aaca69413 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -11,20 +11,16 @@ import { FormulaireElement } from "./formulaire-element"; import { Field } from "./field"; import { SelectField } from "./select-field"; import { NgParameter, ParamRadioConfig } from "./ngparam"; -import { StringMap } from "../../stringmap"; import { FieldsetContainer } from "./fieldset-container"; -import { SelectFieldNub } from "./select-field-nub"; -import { SelectFieldParameter } from "./select-field-parameter"; +import { SelectFieldCustom } from "./select-field-custom"; import { FormulaireFixedVar } from "../definition/form-fixedvar"; +import { SelectEntry } from "./select-entry"; export class FieldSet extends FormulaireElement implements Observer { /** Nub associé */ private _nub: Nub; - /** dictionnaire de traduction */ - private _localisation: StringMap; - /** fichier de configuration */ private _jsonConfig: {}; @@ -83,23 +79,12 @@ export class FieldSet extends FormulaireElement implements Observer { return res; } - private parse_select_reference(json: {}): SelectField { - const refType = json["reference"]; + private parse_select_custom(json: {}): SelectField { const source = json["source"]; - let res: SelectField; if (source === undefined || source === "") { - throw new Error(`Fieldset.parse_select_reference(): "source" must not be empty`); - } - switch (refType) { - case "nub": // @TODO upstreamNub / downstreamNub ? - res = new SelectFieldNub(this, source); - break; - case "parameter": - res = new SelectFieldParameter(this, source); - break; - default: - throw new Error(`Fieldset.parse_select_reference(): unknown reference type ${refType}`); + throw new Error(`Fieldset.parse_select_custom(): "source" must not be empty`); } + const res: SelectField = new SelectFieldCustom(this); res.parseConfig(json); res.addObserver(this); return res; @@ -197,8 +182,8 @@ export class FieldSet extends FormulaireElement implements Observer { this.addField(param); break; - case "select_reference": - param = this.parse_select_reference(field); + case "select_custom": + param = this.parse_select_custom(field); this.addField(param); break; @@ -214,18 +199,6 @@ export class FieldSet extends FormulaireElement implements Observer { this.clearKids(); } - public updateLocalisation(loc?: StringMap) { - if (! loc) { - loc = this._localisation; - } else { - this._localisation = loc; - } - - if (loc) { - super.updateLocalisation(loc); - } - } - /** * Reloads the model values and properties, and reloads localisation strings */ @@ -344,11 +317,18 @@ export class FieldSet extends FormulaireElement implements Observer { * @param selectFieldId id du SelectField * @returns valeur courante du select sans le préfixe */ - public getSelectedValue(selectFieldId: string): string { + public getSelectedValue(selectFieldId: string): string | string[] { for (const p of this.kids) { if (p instanceof SelectField && p.isDisplayed && p.id === selectFieldId) { - const value: string = p.getValue().value; - return FormulaireElement.removePrefix(value, selectFieldId + "_"); + if (! p.multiple) { + const value: string = (p.getValue() as SelectEntry).value; + return FormulaireElement.removePrefix(value, selectFieldId + "_"); + } else { + const values: string[] = (p.getValue() as SelectEntry[]).map((se) => { + return FormulaireElement.removePrefix(se.value, selectFieldId + "_"); + }); + return values; + } } } } @@ -383,7 +363,12 @@ export class FieldSet extends FormulaireElement implements Observer { const fe = this.parentForm.getFieldById(sId); if (fe && data.value !== undefined) { const prop = (fe as SelectField).associatedProperty; - this.setPropValue(prop, data.value.value); + // for multiple select + if (Array.isArray(data.value)) { + this.setPropValue(prop, data.value.map((v: any) => v.value)); + } else { + this.setPropValue(prop, data.value.value); + } } } } diff --git a/src/app/formulaire/elements/formulaire-element.ts b/src/app/formulaire/elements/formulaire-element.ts index ae565987e01e88268b738794de0e47c727d8fffc..579b62648b34a662d8edba307d86920a98ff32d3 100644 --- a/src/app/formulaire/elements/formulaire-element.ts +++ b/src/app/formulaire/elements/formulaire-element.ts @@ -1,8 +1,7 @@ import { FormulaireNode } from "./formulaire-node"; -import { StringMap } from "../../stringmap"; -import { I18nService } from "../../services/internationalisation.service"; import { ServiceFactory } from "../../services/service-factory"; import { FormulaireDefinition } from "../definition/form-definition"; +import { FormulaireService } from "../../services/formulaire.service"; /** * élément (enfant) du formulaire : fieldset, input, container, ... @@ -18,7 +17,7 @@ export abstract class FormulaireElement extends FormulaireNode { */ protected _label: string; - private intlService: I18nService; + private formulaireService: FormulaireService; public static removePrefix(s: string, prefix: string): string { if (s.startsWith(prefix)) { @@ -30,7 +29,7 @@ export abstract class FormulaireElement extends FormulaireNode { constructor(parent: FormulaireNode) { super(parent); this._isDisplayed = true; - this.intlService = ServiceFactory.instance.i18nService; + this.formulaireService = ServiceFactory.formulaireService; } get isDisplayed(): boolean { @@ -71,13 +70,10 @@ export abstract class FormulaireElement extends FormulaireNode { * @param loc calculator-specific localised messages map * @param key Element label key */ - public updateLocalisation(loc: StringMap, key?: string) { - if (!key) { - key = this._confId; - } - this._label = this.intlService.localizeText(key, loc); + public updateLocalisation() { + this._label = this.formulaireService.localizeText(this._confId, this.parentForm.currentNub.calcType); for (const f of this.getKids()) { - f.updateLocalisation(loc); + f.updateLocalisation(); } } diff --git a/src/app/formulaire/elements/ngparam.ts b/src/app/formulaire/elements/ngparam.ts index 183c4e241df895a88255d8043c6efe40b694e344..457e689763ece29e593941c39b831d4f07899aa2 100644 --- a/src/app/formulaire/elements/ngparam.ts +++ b/src/app/formulaire/elements/ngparam.ts @@ -31,11 +31,15 @@ export class NgParameter extends InputField implements Observer { private _allowEmpty = false; public unit: string; + public radioConfig: ParamRadioConfig; + public disabled: boolean; + constructor(private _paramDef: ParamDefinition, parent: FormulaireNode) { super(parent); this.radioConfig = this.radioState; + this.disabled = false; } /** @@ -44,7 +48,7 @@ export class NgParameter extends InputField implements Observer { */ public static preview(p: ParamDefinition, compact: boolean = false): string { let valuePreview: string; - const i18n = ServiceFactory.instance.i18nService; + const i18n = ServiceFactory.i18nService; switch (p.valueMode) { case ParamValueMode.SINGLE: @@ -102,7 +106,7 @@ export class NgParameter extends InputField implements Observer { */ public static linkedValuePreview(ref: LinkedValue): string { let valuePreview: string; - const i18n = ServiceFactory.instance.i18nService; + const i18n = ServiceFactory.i18nService; if (ref.isParameter()) { const targetParam = (ref.element as ParamDefinition); diff --git a/src/app/formulaire/elements/select-field-custom.ts b/src/app/formulaire/elements/select-field-custom.ts new file mode 100644 index 0000000000000000000000000000000000000000..a9f28c9c621e7cf9031ce4d026a73f735d8e3632 --- /dev/null +++ b/src/app/formulaire/elements/select-field-custom.ts @@ -0,0 +1,269 @@ +import { SelectEntry } from "./select-entry"; +import { ServiceFactory } from "../../services/service-factory"; +import { SelectField } from "./select-field"; +import { decodeHtml, arraysAreEqual } from "../../util"; + +import { FishSpecies, Session, Solveur, FishPass, CalculatorType, Verificateur, Nub } from "jalhyd"; + +import { sprintf } from "sprintf-js"; + +/** + * A select field that populates itself with custom stuff (ex: references to Nubs, Parameters…) + */ +export class SelectFieldCustom extends SelectField { + + /** + * Loads UI with the value held by the model + */ + protected initSelectedValue() { + const nub = this.parentForm.currentNub; + + switch (this.source) { + + case "solveur_target": // Solveur, module cible (à calculer) + const ntc = (nub as Solveur).nubToCalculate; + if (ntc !== undefined) { + this.setValueFromId(this._entriesBaseId + ntc.uid); + } + break; + + case "solveur_searched": // Solveur, paramètre recherché (à faire varier) + const sp = (nub as Solveur).searchedParameter; + if (sp !== undefined) { + this.setValueFromId(this._entriesBaseId + sp.nubUid + "_" + sp.symbol); + } + break; + + case "verificateur_target": // Vérificateur, passe cible (à vérifier) + const ntv = (nub as Verificateur).nubToVerify; + if (ntv !== undefined) { + this.setValueFromId(this._entriesBaseId + ntv.uid); + } + break; + + case "verificateur_species": // Vérificateur, liste d'espèces (choix multiple) + const sl = (nub as Verificateur).speciesList; + if (sl !== undefined) { + this.setValueFromId(sl.map((s) => { + const spgId = s.substring(s.lastIndexOf("_") + 1); + return this._entriesBaseId + spgId; + })); + } + break; + } + } + + /** + * Populates entries with available options + */ + protected populate() { + const fs = ServiceFactory.formulaireService; + let candidateNubs: any[]; + switch (this.source) { + + case "solveur_target": // Solveur, module cible (à calculer) + // find all Nubs having at least one link to another Nub's result + candidateNubs = + Session.getInstance().getDownstreamNubs().concat( + Session.getInstance().getUpstreamNubsHavingExtraResults() + ).filter( + (element, index, self) => self.findIndex((e) => e.uid === element.uid) === index + ); + for (const cn of candidateNubs) { + const nub = fs.getFormulaireFromId(cn.uid); + if (nub) { + const calc = nub.calculatorName; + let label = calc; + // calculated param + if (cn.calculatedParam !== undefined) { + const varName = fs.expandVariableName(cn.calcType, cn.calculatedParam.symbol); + label += ` / ${varName} (${cn.calculatedParam.symbol})`; + } + this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); + } else { + // silent fail, this Solveur nub was probably loaded before all the candidate nubs are done loading + } + } + break; + + case "solveur_searched": // Solveur, paramètre recherché (à faire varier) + // find all non-calculated, non-linked parameters of all Nubs that + // the current "target" Nub depends on (if any) + const solv = this.parentForm.currentNub as Solveur; + const ntc: Nub = solv.nubToCalculate; + const searchableParams = Solveur.getDependingNubsSearchableParams( + ntc, + solv.targettedResult !== undefined && solv.targettedResult !== "" + ); + for (const p of searchableParams) { + if (p.visible) { + const calc = fs.getFormulaireFromId(p.originNub.uid).calculatorName; + const varName = fs.expandVariableName(p.originNub.calcType, p.symbol); + const label = `${p.symbol} - ${varName} (${calc})`; + this.addEntry(new SelectEntry(this._entriesBaseId + p.originNub.uid + "_" + p.symbol, p, decodeHtml(label))); + } + } + break; + + case "verificateur_target": // Vérificateur, passe cible (à vérifier) + // find all Nubs of type FishPass + candidateNubs = Session.getInstance().getAllNubs().filter((element) => { + return ( + (element instanceof FishPass) + && element.calcType !== CalculatorType.Par // ParSimulation extends Par @TODO find something better + ); + }); + for (const cn of candidateNubs) { + const nub = fs.getFormulaireFromId(cn.uid); + if (nub) { + const label = nub.calculatorName + " (" + fs.getLocalisedTitleFromCalculatorType(nub.calculatorType) + ")"; + this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); + } else { + // silent fail, this Verificateur nub was probably loaded before all the candidate nubs are done loading + } + } + break; + + case "verificateur_species": + // add UIDs of all Espece type Nubs in the session + const especeNubs = Session.getInstance().getAllNubs().filter((element) => element.calcType === CalculatorType.Espece); + for (const en of especeNubs) { + const form = ServiceFactory.formulaireService.getFormulaireFromNubId(en.uid); + this.addEntry( + new SelectEntry( + this._entriesBaseId + en.uid, + en.uid, + sprintf( + ServiceFactory.i18nService.localizeText("INFO_VERIFICATEUR_CUSTOM_SPECIES"), + form ? form.calculatorName : "*** form not loaded yet ***" + ) + ) + ); + } + // add all FishSpecies + for (let j = 1; j < Object.keys(FishSpecies).length / 2; j++) { // exclude "0" (SPECIES_CUSTOM) + const spgId = FishSpecies[j].substring(FishSpecies[j].lastIndexOf("_") + 1); + this.addEntry( + new SelectEntry( + this._entriesBaseId + spgId, + FishSpecies[j], + ServiceFactory.i18nService.localizeText("INFO_ENUM_" + FishSpecies[j]) + ) + ); + } + break; + } + } + + protected setDefaultValue() { + // default to first available entry if any + if (this._entries.length > 0) { + if (this._multiple) { + this.setValue([ this._entries[0] ]); + } else { + this.setValue(this._entries[0]); + } + } else { + // notify observers that no value is selected anymore + this.notifyValueChanged(); + } + } + + /** + * Once config is parsed, init original value from model + * (needs config, for this._entriesBaseId to be set) + */ + protected afterParseConfig() { + this.populate(); + this.initSelectedValue(); + } + + /** + * Reloads available entries, trying to keep the current selected + * value; does not notify observers if value did not change + */ + public updateEntries() { + // store previous selected entry + const pse = this._selectedEntry; + // empty + this.clearEntries(); + // populate + this.populate(); + // if no entry is available anymore, unset value + if (this.entries.length === 0) { + if (this.multiple) { + super.setValue([]); + } else { + super.setValue(undefined); + } + } else { + // keep previously selected entry(ies) if possible + if (pse) { + if (! Array.isArray(pse) && pse.id) { + this.setValueFromId(pse.id); + } else if (Array.isArray(pse) && pse.length > 0) { + this.setValueFromId(pse.map((e) => e.id )); + } else { + this.setDefaultValue(); + } + } else { + this.setDefaultValue(); + } + } + } + + /** + * Updates selectedValue; notifies observers only if + * value.id has changed + */ + public setValue(v: SelectEntry | SelectEntry[]) { + const previousSelectedEntry = this._selectedEntry; + this._selectedEntry = v; + // if value changed + const valueChanged = ( + ! previousSelectedEntry + || ( + ! Array.isArray(previousSelectedEntry) + && ! Array.isArray(v) + && previousSelectedEntry.id !== v.id + ) + || ( + Array.isArray(previousSelectedEntry) + && Array.isArray(v) + && ! arraysAreEqual(previousSelectedEntry, v, "id", true) + ) + ); + if (valueChanged) { + this.notifyValueChanged(); + } + } + + /** + * Sets value from given ID(s); if it was not found, sets the + * first available entry as selectedValue + */ + public setValueFromId(id: string | string[]) { + let found = false; + const entries = []; + if (this._multiple && Array.isArray(id)) { + for (const e of this._entries) { + if (id.includes(e.id)) { + entries.push(e); + found = true; + } + } + this.setValue(entries); + } else { + for (const e of this._entries) { + if (e.id === id) { + found = true; + this.setValue(e); + } + } + } + if (! found) { + this.setDefaultValue(); + } + } + +} diff --git a/src/app/formulaire/elements/select-field-model.ts b/src/app/formulaire/elements/select-field-model.ts deleted file mode 100644 index aa4147022827679642549693fb592553d0b88f3b..0000000000000000000000000000000000000000 --- a/src/app/formulaire/elements/select-field-model.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { SelectField } from "./select-field"; -import { SelectEntry } from "./select-entry"; -import { FormulaireNode } from "./formulaire-node"; -import { CalculatorType } from "jalhyd"; - -/** - * A select field that populates itself with references to - * available modules - */ -export abstract class SelectFieldModel extends SelectField { - - /** type of the targetted models; used by enclosing component to create new model */ - public calcType: CalculatorType; - - constructor(parent: FormulaireNode, calcType: CalculatorType) { - super(parent); - this.calcType = calcType; - this.initSelectedValue(); - } - - protected abstract initSelectedValue(); - - /** - * Populates entries with available models - */ - protected abstract populate(); - - /** - * Reloads available entries, trying to keep the current selected - * value; does not notify observers if value did not change - */ - public updateEntries() { - // store previous selected entry - const pse = this._selectedEntry; - // empty - this.clearEntries(); - // populate - this.populate(); - // keep previously selected entry if possible - if (pse && pse.id) { - this.setValueFromId(pse.id); - } - // if no entry is available anymore, unset value - if (this.entries.length === 0) { - super.setValue(undefined); - } - } - - /** - * Updates selectedValue; notifies observers only if - * value.id has changed - */ - public setValue(v: SelectEntry) { - const previousSelectedEntry = this._selectedEntry; - this._selectedEntry = v; - if ( - ! previousSelectedEntry - || (previousSelectedEntry.id !== v.id) - ) { - this.notifyObservers({ - "action": "select", - "value": v - }, this); - } - } - - /** - * Sets value from given ID; if it was not found, sets the - * first available entry as selectedValue - */ - public setValueFromId(id: string) { - let found = false; - for (const e of this._entries) { - if (e.id === id) { - found = true; - this.setValue(e); - } - } - if (! found) { - // default to first available entry if any - if (this._entries.length > 0) { - this.setValue(this._entries[0]); - } else { - // notify observers that no value is selected anymore - this.notifyObservers({ - "action": "select", - "value": undefined - }, this); - } - } - } -} diff --git a/src/app/formulaire/elements/select-field-nub.ts b/src/app/formulaire/elements/select-field-nub.ts deleted file mode 100644 index 3cbcf0720c2fc42257292ebaf60c89cb202cdd88..0000000000000000000000000000000000000000 --- a/src/app/formulaire/elements/select-field-nub.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { SelectFieldReference } from "./select-field-reference"; -import { SelectEntry } from "./select-entry"; -import { ServiceFactory } from "../../services/service-factory"; -import { decodeHtml } from "../../util"; - -import { Session, Solveur } from "jalhyd"; - -/** - * A select field that populates itself with references to Nubs - */ -export class SelectFieldNub extends SelectFieldReference { - - protected initSelectedValue() { - const nub = this.parentForm.currentNub; - if (nub instanceof Solveur) { - const ntc = nub.nubToCalculate; - if (ntc !== undefined) { - this.setValueFromId(this._entriesBaseId + ntc.uid); - } - } - } - - /** - * Populates entries with available references - */ - protected populate() { - switch (this._source) { - case "solveur_target": // Solveur, module cible (à calculer) - // find all Nubs having at least one link to another Nub's result - const fs = ServiceFactory.instance.formulaireService; - const candidateNubs = - Session.getInstance().getDownstreamNubs().concat( - Session.getInstance().getUpstreamNubsHavingExtraResults() - ).filter( - (element, index, self) => self.findIndex((e) => e.uid === element.uid) === index - ); - for (const cn of candidateNubs) { - const nub = fs.getFormulaireFromId(cn.uid); - if (nub) { - const calc = nub.calculatorName; - let label = calc; - // calculated param - if (cn.calculatedParam !== undefined) { - const varName = fs.expandVariableName(cn.calcType, cn.calculatedParam.symbol); - label += ` / ${varName} (${cn.calculatedParam.symbol})`; - } - this.addEntry(new SelectEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(label))); - } else { - // silent fail, this Solveur nub was probably loaded before all the candidate nubs are done loading - } - } - break; - } - } - -} diff --git a/src/app/formulaire/elements/select-field-parameter.ts b/src/app/formulaire/elements/select-field-parameter.ts deleted file mode 100644 index c5a9d7291af5589382f0e54ebc698df7ce1cae4f..0000000000000000000000000000000000000000 --- a/src/app/formulaire/elements/select-field-parameter.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { SelectFieldReference } from "./select-field-reference"; -import { SelectEntry } from "./select-entry"; -import { decodeHtml } from "../../util"; -import { ServiceFactory } from "../../services/service-factory"; - -import { Nub, Solveur } from "jalhyd"; - -/** - * A select field that populates itself with references to ParamDefinitions - */ -export class SelectFieldParameter extends SelectFieldReference { - - protected initSelectedValue() { - const nub = this.parentForm.currentNub; - if (nub instanceof Solveur) { - const sp = nub.searchedParameter; - if (sp !== undefined) { - this.setValueFromId(this._entriesBaseId + sp.nubUid + "_" + sp.symbol); - } - } - } - - /** - * Populates entries with available references - */ - protected populate() { - switch (this._source) { - case "solveur_searched": // Solveur, paramètre recherché (à faire varier) - // find all non-calculated, non-linked parameters of all Nubs that - // the current "target" Nub depends on (if any) - const fs = ServiceFactory.instance.formulaireService; - const solv = this.parentForm.currentNub as Solveur; - const ntc: Nub = solv.nubToCalculate; - const searchableParams = Solveur.getDependingNubsSearchableParams( - ntc, - solv.targettedResult !== undefined && solv.targettedResult !== "" - ); - for (const p of searchableParams) { - if (p.visible) { - const calc = fs.getFormulaireFromId(p.originNub.uid).calculatorName; - const varName = fs.expandVariableName(p.originNub.calcType, p.symbol); - const label = `${p.symbol} - ${varName} (${calc})`; - this.addEntry(new SelectEntry(this._entriesBaseId + p.originNub.uid + "_" + p.symbol, p, decodeHtml(label))); - } - } - break; - } - } - -} diff --git a/src/app/formulaire/elements/select-field-reference.ts b/src/app/formulaire/elements/select-field-reference.ts deleted file mode 100644 index 4cbe101eda1fe41b69fe935b509cfe51956e3af1..0000000000000000000000000000000000000000 --- a/src/app/formulaire/elements/select-field-reference.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { SelectField } from "./select-field"; -import { SelectEntry } from "./select-entry"; -import { FormulaireNode } from "./formulaire-node"; - -/** - * A select field that populates itself with references to - * available objects (for ex. Nub or ParamDefinition) - */ -export abstract class SelectFieldReference extends SelectField { - - /** source identifier for populate() method */ - protected _source: string; - - constructor(parent: FormulaireNode, source: string) { - super(parent); - this._source = source; - } - - protected abstract initSelectedValue(); - - /** - * Populates entries with available references - */ - protected abstract populate(); - - /** - * Once config is parsed, init original value from model - * (needs config, for this._entriesBaseId to be set) - */ - protected afterParseConfig() { - this.populate(); - this.initSelectedValue(); - } - - /** - * Reloads available entries, trying to keep the current selected - * value; does not notify observers if value did not change - */ - public updateEntries() { - // store previous selected entry - const pse = this._selectedEntry; - // empty - this.clearEntries(); - // populate - this.populate(); - // if no entry is available anymore, unset value - if (this.entries.length === 0) { - super.setValue(undefined); - } else { - // keep previously selected entry if possible - if (pse && pse.id) { - this.setValueFromId(pse.id); - } else { - this.setDefaultValue(); - } - } - } - - /** - * Updates selectedValue; notifies observers only if - * value.id has changed - */ - public setValue(v: SelectEntry) { - const previousSelectedEntry = this._selectedEntry; - this._selectedEntry = v; - if ( - ! previousSelectedEntry - || (previousSelectedEntry.id !== v.id) - ) { - this.notifySelectValueChanged(); - } - } - - public notifySelectValueChanged() { - this.notifyObservers({ - "action": "select", - "value": this._selectedEntry - }, this); - } - - /** - * Sets value from given ID; if it was not found, sets the - * first available entry as selectedValue - */ - public setValueFromId(id: string) { - let found = false; - for (const e of this._entries) { - if (e.id === id) { - found = true; - this.setValue(e); - } - } - if (! found) { - this.setDefaultValue(); - } - } - - protected setDefaultValue() { - // default to first available entry if any - if (this._entries.length > 0) { - this.setValue(this._entries[0]); - } else { - // notify observers that no value is selected anymore - this.notifySelectValueChanged(); - } - } -} diff --git a/src/app/formulaire/elements/select-field.ts b/src/app/formulaire/elements/select-field.ts index 220fc7e2d473621b7dfd91742a9751b2732e6df9..0884f25641cb3a37472be53baa6f0d928a7453fe 100644 --- a/src/app/formulaire/elements/select-field.ts +++ b/src/app/formulaire/elements/select-field.ts @@ -10,7 +10,6 @@ import { import { Field } from "./field"; import { SelectEntry } from "./select-entry"; -import { StringMap } from "../../stringmap"; import { FormulaireNode } from "./formulaire-node"; import { FormulaireDefinition } from "../definition/form-definition"; import { ServiceFactory } from "../../services/service-factory"; @@ -22,7 +21,7 @@ export class SelectField extends Field { protected _entries: SelectEntry[]; - protected _selectedEntry: SelectEntry; + protected _selectedEntry: SelectEntry | SelectEntry[]; /** name of the Nub property associated to this field, if any */ protected _associatedProperty: string; @@ -30,6 +29,15 @@ export class SelectField extends Field { /** default value for this field */ protected _defaultValue: string; + /** if true, user can select multiple values */ + protected _multiple = false; + + /** if true, select box is grayed out */ + public disabled = false; + + /** soruce identifier for populating with available values */ + protected source: string; + constructor(parent: FormulaireNode) { super(parent); this.clearEntries(); @@ -51,6 +59,10 @@ export class SelectField extends Field { return this._defaultValue; } + public get multiple(): boolean { + return this._multiple; + } + public clearEntries() { this._entries = []; } @@ -58,34 +70,14 @@ export class SelectField extends Field { public addEntry(e: SelectEntry) { this._entries.push(e); if (! this._selectedEntry) { - this.setValue(e); - } - } - - /** - * Reloads available entries, trying to keep the current selected - * value; should not notify observers if value did not change - */ - public updateEntries() { - // store previous selected entry - const pse = this._selectedEntry; - this._selectedEntry = undefined; - // empty - this.clearEntries(); - // populate - this.populate(); - // keep previously selected entry if possible - if (pse) { - this.setValue(pse); + if (this._multiple) { + this.setValue([ e ]); + } else { + this.setValue(e); + } } } - /** - * Empties then refills entries list with available entries; does - * nothing by default (to be overloaded) - */ - protected populate() { } - /** * Triggered at the end of parseConfig() */ @@ -99,11 +91,11 @@ export class SelectField extends Field { } } - public getValue() { + public getValue(): SelectEntry | SelectEntry[] { return this._selectedEntry; } - public setValue(v: SelectEntry) { + public setValue(v: SelectEntry | SelectEntry[]) { if (this._selectedEntry !== v) { this._selectedEntry = v; this.notifyValueChanged(); @@ -117,19 +109,32 @@ export class SelectField extends Field { }, this); } - public getLabel() { - if (this._selectedEntry) { - return this._selectedEntry.label; - } - } - - public updateLocalisation(loc: StringMap) { - super.updateLocalisation(loc); + public updateLocalisation() { + super.updateLocalisation(); for (const e of this._entries) { - // some Select fields already have a translated label at this time; translate others - if (e.label === undefined) { + if (this.source === "solveur_targetted_result") { + // @WARNING clodo hack for Solveur + // 1. calculated param + const nub: Nub = (this.parentForm as FormulaireDefinition).currentNub; + const ntc = (nub as Solveur).nubToCalculate; + if (e.value !== undefined && ntc !== undefined) { + if (e.value === "" && ntc.calculatedParam !== undefined) { + const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, ntc.calculatedParam.symbol); + e.label = `${varName} (${ntc.calculatedParam.symbol})`; + } else { + // 2. extra results + const varName = ServiceFactory.formulaireService.expandVariableName(ntc.calcType, e.value); + e.label = `${varName} (${e.value})`; + } + } + } else { + // general case const aId = e.id.split("_"); - e.label = ServiceFactory.instance.i18nService.localizeText(`${aId[1].toUpperCase()}_${aId[2]}`, loc); + const trad = ServiceFactory.formulaireService.localizeText( + `${aId[1].toUpperCase()}_${aId[2]}`, + this.parentForm.currentNub.calcType + ); + e.label = trad; } } } @@ -140,11 +145,23 @@ export class SelectField extends Field { this._helpLink = field["help"]; this._associatedProperty = field["property"]; this._defaultValue = field["default"]; - const source = field["source"]; + if (field["multiple"] !== undefined) { + this._multiple = field["multiple"]; + } + this.source = field["source"]; + + this.loadEntriesFromSource(); + this.afterParseConfig(); + } + + /** + * Adds available entries to the selector, depending on the "source" identifier + */ + protected loadEntriesFromSource() { const nub: Nub = (this.parentForm as FormulaireDefinition).currentNub; // ad-hoc cases - switch (source) { + switch (this.source) { // driven by string[], not enum (easier for variable names) case "remous_target": this.addEntry(new SelectEntry(this._entriesBaseId + "none", "")); @@ -156,25 +173,16 @@ export class SelectField extends Field { // driven by string[], not enum case "solveur_targetted_result": + // @WARNING for localisation, @see hack in this.updateLocalisation() // 1. calculated param const ntc = (nub as Solveur).nubToCalculate; if (ntc !== undefined && ntc.calculatedParam !== undefined) { // some nubs have no calculatedParam, for ex. SectionParam - const varName = ServiceFactory.instance.formulaireService.expandVariableName(ntc.calcType, ntc.calculatedParam.symbol); - this.addEntry(new SelectEntry( - this._entriesBaseId + "none", - "", - `${varName} (${ntc.calculatedParam.symbol})` - )); + this.addEntry(new SelectEntry(this._entriesBaseId + "none", "")); } // 2. extra results if (ntc !== undefined && ntc.resultsFamilies !== undefined) { for (const er of Object.keys(ntc.resultsFamilies)) { - const varName = ServiceFactory.instance.formulaireService.expandVariableName(ntc.calcType, er); - const e: SelectEntry = new SelectEntry( - this._entriesBaseId + er, - er, - `${varName} (${er})` - ); + const e: SelectEntry = new SelectEntry(this._entriesBaseId + er, er); this.addEntry(e); } } @@ -212,7 +220,6 @@ export class SelectField extends Field { } } } - - this.afterParseConfig(); } + } diff --git a/src/app/results/calculator-results.ts b/src/app/results/calculator-results.ts index e4b420907fc2122f8b4bf458663b01e97d878a43..36c23bbf9bd437f9581431e8179e79ac3aab5e40 100644 --- a/src/app/results/calculator-results.ts +++ b/src/app/results/calculator-results.ts @@ -24,10 +24,10 @@ export abstract class CalculatorResults { const children = referenceNub.getChildren(); const parameterNub = p.paramDefinition.parentNub; if (children.includes(parameterNub)) { - const cn = capitalize(ServiceFactory.instance.i18nService.childName(parameterNub.parent)); + const cn = capitalize(ServiceFactory.i18nService.childName(parameterNub.parent)); isChildParam = true; const pos = parameterNub.findPositionInParent() + 1; - res = sprintf(ServiceFactory.instance.i18nService.localizeText("INFO_STUFF_N"), cn) + pos + " : "; + res = sprintf(ServiceFactory.i18nService.localizeText("INFO_STUFF_N"), cn) + pos + " : "; } } if (displaySymbol && ! isChildParam) { @@ -58,7 +58,7 @@ export abstract class CalculatorResults { public getHelpLink(symbol: string): string { // add help link if any if (this.helpLinks !== undefined && this.helpLinks[symbol] !== undefined) { - const helpURL = "assets/docs/" + ServiceFactory.instance.applicationSetupService.language + const helpURL = "assets/docs/" + ServiceFactory.applicationSetupService.language + "/calculators/" + this.helpLinks[symbol]; // pseudo-<mat-icon> dirty trick because <mat-icon> renderer cannot be // triggered when code is set through innerHTML diff --git a/src/app/results/macrorugo-compound-results.ts b/src/app/results/macrorugo-compound-results.ts index a5c609205c67311cca347d6a0d4fa97cc34cb7b9..8aba75366df359fc005419da671cd87be46008d2 100644 --- a/src/app/results/macrorugo-compound-results.ts +++ b/src/app/results/macrorugo-compound-results.ts @@ -52,7 +52,7 @@ export class MacrorugoCompoundResults extends MultiDimensionResults { unit = p.unit; } } catch (e) { /* silent fail */ } - let label = ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct , h, unit); + let label = ServiceFactory.formulaireService.expandVariableNameAndUnit(ct , h, unit); label += this.getHelpLink(h); return label; }); diff --git a/src/app/results/pab-results.ts b/src/app/results/pab-results.ts index bcf4b2b688e409a06fc4daf9e7a9634424618a53..d08b381f1137262d70d32b21f8ae4950f08ed423 100644 --- a/src/app/results/pab-results.ts +++ b/src/app/results/pab-results.ts @@ -52,7 +52,7 @@ export class PabResults extends MultiDimensionResults { if (sn.parent) { ct = sn.parent.calcType; } - let label = ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct , h); + let label = ServiceFactory.formulaireService.expandVariableNameAndUnit(ct , h); label += this.getHelpLink(h); return label; }); diff --git a/src/app/results/param-calc-results.ts b/src/app/results/param-calc-results.ts index 62cd26f84b8ca682534471461b54e08fe38f259d..6a24188484a22305e7e9ba15c2be440f351d13a0 100644 --- a/src/app/results/param-calc-results.ts +++ b/src/app/results/param-calc-results.ts @@ -20,7 +20,7 @@ export abstract class CalculatedParamResults extends CalculatorResults { /** custom variables order for results tables */ public variablesOrder: string[] = []; - protected reset() { + public reset() { this._calculatedParam = undefined; this.calculatedParameterHeader = undefined; this.result = undefined; diff --git a/src/app/results/plottable-pab-results.ts b/src/app/results/plottable-pab-results.ts index 7f52a57173d190f21b414f9dc0d47aed40bb6ba3..0d45afb05dfe1d4199858df4c878bdf60a3f2291 100644 --- a/src/app/results/plottable-pab-results.ts +++ b/src/app/results/plottable-pab-results.ts @@ -31,7 +31,7 @@ export class PlottablePabResults implements PlottableData { */ public getChartAxisLabel(symbol: string): string { if (symbol === "x") { // specific case for wall abscissa - return ServiceFactory.instance.i18nService.localizeText("INFO_LIB_ABSCISSE_CLOISON"); + return ServiceFactory.i18nService.localizeText("INFO_LIB_ABSCISSE_CLOISON"); } else { return this.pabResults.headers[this.pabResults.columns.indexOf(symbol)]; } diff --git a/src/app/results/remous-results.ts b/src/app/results/remous-results.ts index a96934ca72a9a77111726515cb42f707fbf7454f..c6c9e3b8a1daf1f075d182963a5b83c58806ae38 100644 --- a/src/app/results/remous-results.ts +++ b/src/app/results/remous-results.ts @@ -86,7 +86,7 @@ export class RemousResults extends CalculatorResults { // série de valeurs de X this._xValues = new ParamDefinition( p, - ServiceFactory.instance.i18nService.localizeText("INFO_REMOUSRESULTS_ABSCISSE"), + ServiceFactory.i18nService.localizeText("INFO_REMOUSRESULTS_ABSCISSE"), ParamDomainValue.POS_NULL ); } diff --git a/src/app/results/var-results.ts b/src/app/results/var-results.ts index a6322e0f6b52cb0a47933a4c3a0c21c7211c2e38..6e73b5d03c0a8649f6b8c173e58bc6e364614e32 100644 --- a/src/app/results/var-results.ts +++ b/src/app/results/var-results.ts @@ -136,10 +136,10 @@ export class VarResults extends CalculatedParamResults implements PlottableData const pos = +match[1]; // only parent translation file is loaded; look for children translations in it // ct = sn.getChildren()[pos].calcType; symbol = match[2]; - const cn = capitalize(ServiceFactory.instance.i18nService.childName(sn)); - ret += sprintf(ServiceFactory.instance.i18nService.localizeText("INFO_STUFF_N"), cn) + (pos + 1) + " : "; + const cn = capitalize(ServiceFactory.i18nService.childName(sn)); + ret += sprintf(ServiceFactory.i18nService.localizeText("INFO_STUFF_N"), cn) + (pos + 1) + " : "; } - ret += ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, symbol); + ret += ServiceFactory.formulaireService.expandVariableNameAndUnit(ct, symbol); return ret; } @@ -378,19 +378,19 @@ export class VarResults extends CalculatedParamResults implements PlottableData unit = p.unit; } } catch (e) { /* silent fail */ } - let rh = ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, k, unit); + let rh = ServiceFactory.formulaireService.expandVariableNameAndUnit(ct, k, unit); rh += this.getHelpLink(k); this._resultHeaders.push(rh); } // entêtes des résultats des enfants for (const c of sn.getChildren()) { if (c.result) { - const cn = capitalize(ServiceFactory.instance.i18nService.childName(sn)); + const cn = capitalize(ServiceFactory.i18nService.childName(sn)); // using latest ResultElement; results count / types are supposed to be the same on every iteration for (const k of c.result.resultElement.keys) { - let rh = sprintf(ServiceFactory.instance.i18nService.localizeText("INFO_STUFF_N"), cn) + let rh = sprintf(ServiceFactory.i18nService.localizeText("INFO_STUFF_N"), cn) + (c.findPositionInParent() + 1) + " : " - + ServiceFactory.instance.formulaireService.expandVariableNameAndUnit(ct, k); + + ServiceFactory.formulaireService.expandVariableNameAndUnit(ct, k); rh += this.getHelpLink(k); this._resultHeaders.push(rh); } diff --git a/src/app/results/verificateur-results.ts b/src/app/results/verificateur-results.ts new file mode 100644 index 0000000000000000000000000000000000000000..59b1cdd26ed29dae08f92380b11682e7ce0f8ec9 --- /dev/null +++ b/src/app/results/verificateur-results.ts @@ -0,0 +1,19 @@ +import { MultiDimensionResults } from "./multidimension-results"; + +import { Result } from "jalhyd"; + +export class VerificateurResults extends MultiDimensionResults { + + /** résultats des modules Espece */ + public especeResults: Result[]; + + public constructor() { + super(); + this.reset(); + } + + public reset() { + super.reset(); + this.especeResults = []; + } +} diff --git a/src/app/services/error.service.ts b/src/app/services/error.service.ts deleted file mode 100644 index 77620c3b7c82ea97996779c5fae0608514da4ecf..0000000000000000000000000000000000000000 --- a/src/app/services/error.service.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Injectable } from "@angular/core"; - -import { Observable } from "jalhyd"; - -@Injectable() -export class ErrorService extends Observable { - // TODO: add explicit constructor - - doAlert(m: string) { - this.notifyObservers(m); - } -} diff --git a/src/app/services/formulaire.service.ts b/src/app/services/formulaire.service.ts index cd8b20b3ffdab0d621ecfe5b18d4a5a3fc809537..462b312c4440326badecbb5202120e8c6a28d845 100644 --- a/src/app/services/formulaire.service.ts +++ b/src/app/services/formulaire.service.ts @@ -26,7 +26,6 @@ import { FormulaireDefinition } from "../formulaire/definition/form-definition"; import { FormulaireElement } from "../formulaire/elements/formulaire-element"; import { InputField } from "../formulaire/elements/input-field"; import { SelectField } from "../formulaire/elements/select-field"; -import { StringMap } from "../stringmap"; import { FormulaireSectionParametree } from "../formulaire/definition/form-section-parametree"; import { FormulaireCourbeRemous } from "../formulaire/definition/form-courbe-remous"; import { FormulaireParallelStructure } from "../formulaire/definition/form-parallel-structures"; @@ -41,6 +40,8 @@ import { FormulaireSPP } from "../formulaire/definition/form-spp"; import { FormulaireFixedVar } from "../formulaire/definition/form-fixedvar"; import { FormulaireSection } from "../formulaire/definition/form-section"; import { FormulairePAR } from "../formulaire/definition/form-par"; +import { FormulaireVerificateur } from "../formulaire/definition/form-verificateur"; +import { FormulaireEspece } from "../formulaire/definition/form-espece"; @Injectable() export class FormulaireService extends Observable { @@ -50,8 +51,10 @@ export class FormulaireService extends Observable { private _currentFormId: string = null; - /** to avoid loading language files multiple times */ - private _languageCache = {}; + public static getConfigPathPrefix(ct: CalculatorType): string { + const ctName = CalculatorType[ct].toLowerCase(); + return "app/calculators/" + ctName + "/"; + } constructor( private i18nService: I18nService, @@ -64,96 +67,73 @@ export class FormulaireService extends Observable { this._formulaires = []; } - private get _intlService(): I18nService { - return this.i18nService; - } - - private get _httpService(): HttpService { - return this.httpService; - } - public get formulaires(): FormulaireDefinition[] { return this._formulaires; } - public get languageCache() { - return this._languageCache; - } - /** - * Loads the localisation file dedicated to calculator type ct; tries the current - * language then the fallback language; uses cache if available + * Retourne le titre complet du type de module de calcul, dans la langue en cours */ - public loadLocalisation(calc: CalculatorType): Promise<any> { - const lang = this._intlService.currentLanguage; - return this.loadLocalisationForLang(calc, lang).then((localisation) => { - return localisation as StringMap; - }).catch((e) => { - console.error(e); - // try default lang (the one in the config file) ? - const fallbackLang = this.appSetupService.fallbackLanguage; - if (lang !== fallbackLang) { - console.error(`trying fallback language: ${fallbackLang}`); - return this.loadLocalisationForLang(calc, fallbackLang); - } - }); + public getLocalisedTitleFromCalculatorType(type: CalculatorType) { + const sCalculator: string = CalculatorType[type].toUpperCase(); + return this.intlService.localizeText(`INFO_${sCalculator}_TITRE`); } /** - * Loads the localisation file dedicated to calculator type ct for language lang; - * keeps it in cache for subsequent calls () + * Retourne la description du type de module de calcul, dans la langue en cours */ - private loadLocalisationForLang(calc: CalculatorType, lang: string): Promise<any> { - const ct = String(calc); - // already in cache ? - if (Object.keys(this._languageCache).includes(ct) && Object.keys(this._languageCache[calc]).includes(lang)) { - return new Promise((resolve) => { - resolve(this._languageCache[ct][lang]); - }); - } else { - const f: string = this.getConfigPathPrefix(calc) + lang + ".json"; - return this._httpService.httpGetRequestPromise(f).then((localisation) => { - this._languageCache[ct] = this._languageCache[ct] || {}; - this._languageCache[ct][lang] = localisation; - return localisation as StringMap; - }).catch((e) => { - throw new Error(`LOCALISATION_FILE_NOT_FOUND "${f}"`); - }); - } + public getLocalisedDescriptionFromCalculatorType(type: CalculatorType) { + const sCalculator: string = CalculatorType[type].toUpperCase(); + return this.intlService.localizeText(`INFO_${sCalculator}_DESCRIPTION`); } /** - * Loads localisation file corresponding to current language then updates all form strings, - * only if form language was not already set to current language + * Retourne le titre cour du type de module de calcul, dans la langue en cours + * (pour les titres d'onglets par défaut) */ - public loadUpdateFormulaireLocalisation(f: FormulaireDefinition): Promise<FormulaireDefinition> { - const requiredLang = this._intlService.currentLanguage; - if (requiredLang !== f.currentLanguage) { - return this.loadLocalisation(f.calculatorType).then(localisation => { - f.updateLocalisation(localisation, requiredLang); - return f; - }); + public getLocalisedShortTitleFromCalculatorType(type: any) { + if (typeof type !== "string") { // retrocompatibility for old file format + type = CalculatorType[type]; } + const sCalculator: string = type.toUpperCase(); + return this.intlService.localizeText(`INFO_${sCalculator}_TITRE_COURT`); } /** - * Retourne le titre complet du type de module de calcul, dans la langue en cours + * Forces update of all form strings in given Formulaire, with current language */ - public getLocalisedTitleFromCalculatorType(type: CalculatorType) { - const sCalculator: string = CalculatorType[type].toUpperCase(); - return this._intlService.localizeText(`INFO_${sCalculator}_TITRE`); + public updateFormulaireLocalisation(f: FormulaireDefinition) { + const requiredLang = this.intlService.currentLanguage; + f.updateLocalisation(requiredLang); } + /** - * Retourne le titre cour du type de module de calcul, dans la langue en cours - * (pour les titres d'onglets par défaut) + * Tente de trouver une traduction pour textKey dans les fichiers de langues + * spécifiques du module de calcul en cours, dans la langue en cours, puis + * dans la langue par défaut; si aucune traduction n'est trouvée, demande au + * service i18n de rechercher dans les fichiers de langues globaux + * @param textKey la clé du texte à traduire */ - public getLocalisedShortTitleFromCalculatorType(type: any) { - if (typeof type !== "string") { // retrocompatibility for old file format - type = CalculatorType[type]; + public localizeText(textKey: string, ct: CalculatorType): string { + const calcType = /* this.currentForm?.currentNub?.calcType || */ ct; + if (calcType !== undefined) { + // throw new Error("FormulaireService.localizeText(): cannot find CalculatorType for current form's Nub"); + let langCache = this.i18nService.languageCache; + if (langCache && langCache[calcType]) { + langCache = langCache[calcType]; // …for target Nub type + } + // try current language + if ( + langCache + && langCache[this.intlService.currentLanguage] + && langCache[this.intlService.currentLanguage][textKey] !== undefined + ) { + return langCache[this.intlService.currentLanguage][textKey]; + } } - const sCalculator: string = type.toUpperCase(); - return this._intlService.localizeText(`INFO_${sCalculator}_TITRE_COURT`); + // fallback to global (not calculator type specific) translation system + return this.i18nService.localizeText(textKey); } /** @@ -164,7 +144,7 @@ export class FormulaireService extends Observable { public expandVariableName(calcType: CalculatorType, symbol: string): string { let s = ""; // language cache… - let langCache = this.languageCache; + let langCache = this.i18nService.languageCache; if (langCache && langCache[calcType]) { langCache = langCache[calcType]; // …for target Nub type } @@ -172,7 +152,7 @@ export class FormulaireService extends Observable { langCache = langCache[this.intlService.currentLanguage]; // … for current language } if (langCache && langCache[symbol] !== undefined) { - s = this.intlService.localizeText(symbol, langCache); + s = this.localizeText(symbol, calcType); } else { // is symbol of the form ouvrages[i]… ? const re = /([A-Z,a-z]+)\[(\d+)\]\.(.+)/; @@ -180,8 +160,8 @@ export class FormulaireService extends Observable { if (match) { // Les libellés correspondants sont INFO OUVRAGE et INFO_LIB_OUVRAGE_XXX s = this.intlService.localizeText(`INFO_${match[1].toUpperCase()}`) - + " n°" + (+match[2] + 1) + ": " - + this.expandVariableName(calcType, `${match[1].toUpperCase()}_${match[3].toUpperCase()}`); + + " n°" + (+match[2] + 1) + ": " + + this.expandVariableName(calcType, `${match[1].toUpperCase()}_${match[3].toUpperCase()}`); } else { s = this.intlService.localizeText("INFO_LIB_" + symbol.toLocaleUpperCase()); } @@ -197,7 +177,7 @@ export class FormulaireService extends Observable { */ public expandVariableNameAndUnit(calcType: CalculatorType, symbol: string, forceUnit?: string): string { let s = this.expandVariableName(calcType, symbol); - let langCache = this.languageCache; // language cache… + let langCache = this.i18nService.languageCache; // language cache… if (langCache && langCache[calcType]) { langCache = langCache[calcType]; // …for target Nub type } @@ -214,9 +194,20 @@ export class FormulaireService extends Observable { if (forceUnit) { unit = forceUnit; } else { - const unitKey = "UNIT_" + symbolBase; - if (langCache && langCache[unitKey] !== undefined) { - unit = this.intlService.localizeText(unitKey, langCache); + // create dummy Nub from CalcType just to get results units + let dummyNub: Nub; + try { + dummyNub = Session.getInstance().createNub(new Props({ "calcType": calcType })); + } catch (e) { + // silent fail + } + if (dummyNub?.resultsUnits && dummyNub.resultsUnits[symbol]) { + unit = dummyNub.resultsUnits[symbol]; + } else { + const unitKey = "UNIT_" + symbolBase; + if (langCache && langCache[unitKey] !== undefined) { + unit = this.localizeText(unitKey, calcType); + } } } if (unit) { @@ -261,8 +252,8 @@ export class FormulaireService extends Observable { } public loadConfig(ct: CalculatorType): Promise<any> { - const f: string = this.getConfigPathPrefix(ct) + "config.json"; - return this._httpService.httpGetRequestPromise(f); + const f: string = FormulaireService.getConfigPathPrefix(ct) + "config.json"; + return this.httpService.httpGetRequestPromise(f); } private newFormulaire(ct: CalculatorType): FormulaireDefinition { @@ -313,6 +304,14 @@ export class FormulaireService extends Observable { f = new FormulaireSPP(); break; + case CalculatorType.Verificateur: + f = new FormulaireVerificateur(); + break; + + case CalculatorType.Espece: + f = new FormulaireEspece(); + break; + default: f = new FormulaireFixedVar(); } @@ -333,8 +332,7 @@ export class FormulaireService extends Observable { const f: FormulaireDefinition = this.newFormulaire(ct); this._formulaires.push(f); // Charge la configuration dépendamment du type - const prom: Promise<any> = this.loadConfig(ct); - return prom.then(s => { + return this.loadConfig(ct).then(s => { f.preparseConfig(s); // Associe le Nub fourni (chargement de session / duplication de module), sinon en crée un nouveau @@ -501,11 +499,6 @@ export class FormulaireService extends Observable { } } - public getConfigPathPrefix(ct: CalculatorType): string { - const ctName = CalculatorType[ct].toLowerCase(); - return "app/calculators/" + ctName + "/"; - } - /** * Supprime le formulaire ciblé, et demande à JaLHyd d'effacer son Nub de la Session * @param uid formulaire à supprimer @@ -603,8 +596,6 @@ export class FormulaireService extends Observable { if (nn.meta && nn.meta.title) { title = nn.meta.title; } - // pre-fill language cache (for LinkedValues labels for ex.) - await this.loadLocalisation(nn.nub.calcType); await this.createFormulaire(nn.nub.calcType, nn.nub, title); // await guarantees loading order } // apply settings diff --git a/src/app/services/internationalisation.service.ts b/src/app/services/internationalisation.service.ts index 5ba795217ef322500f4534d302e5c58b8a3241fa..451931f1b508a6d8104470a5b855a174053676ae 100644 --- a/src/app/services/internationalisation.service.ts +++ b/src/app/services/internationalisation.service.ts @@ -7,6 +7,7 @@ import { ApplicationSetupService } from "./app-setup.service"; import { HttpService } from "./http.service"; import { fv, decodeHtml } from "../util"; import { ServiceFactory } from "./service-factory"; +import { FormulaireService } from "./formulaire.service"; @Injectable() export class I18nService extends Observable implements Observer { @@ -20,8 +21,8 @@ export class I18nService extends Observable implements Observer { /** localized messages */ private _Messages: StringMap; - /** localized messages in fallback language (the one in the config file) */ - private _fallbackMessages: StringMap; + /** to avoid loading language files multiple times */ + private _languageCache = {}; constructor( private applicationSetupService: ApplicationSetupService, @@ -32,10 +33,6 @@ export class I18nService extends Observable implements Observer { fr: "Français", en: "English" }; - // load fallback language messages once for all - this.httpGetMessages(this.applicationSetupService.fallbackLanguage).then((res: any) => { - this._fallbackMessages = res; - }); // add language preferences observer this.applicationSetupService.addObserver(this); } @@ -52,14 +49,19 @@ export class I18nService extends Observable implements Observer { return this._Messages; } + public get languageCache() { + return this._languageCache; + } + /** * Defines the current language code from its ISO 639-1 code (2 characters) or locale code * (ex: "fr", "en", "fr_FR", "en-US") - * @see this.languageCodeFromLocaleCode() * * @param code ISO 639-1 language code */ public setLanguage(code: string) { + // ensure 2-letter language code + code = code.substring(0, 2); // is language supported ? if (! Object.keys(this._availableLanguages).includes(code)) { throw new Error(`LANGUAGE_UNSUPPORTED "${code}"`); @@ -68,12 +70,56 @@ export class I18nService extends Observable implements Observer { if (this._currentLanguage !== code) { this._currentLanguage = code; this._Messages = undefined; - // reload all messages + // reload all messages: global lang files, plus lang files for all calculators ! const that = this; - this.httpGetMessages(code).then((res: any) => { - that._Messages = res; - // propagate language change to all application - that.notifyObservers(undefined); + const promisesList: Promise<any>[] = []; + for (const ct in CalculatorType) { + const calcType = Number(ct); + if (!isNaN(calcType)) { + promisesList.push(this.loadLocalisation(calcType).catch((err) => { /* silent fail */ })); + } + } + Promise.all(promisesList).then(() => { + this.httpGetMessages(code).then((res: any) => { + that._Messages = res; + // propagate language change to all application + that.notifyObservers(undefined); + }); + }); + } + } + + /** + * Loads the localisation file dedicated to calculator type ct; uses cache if available + */ + public loadLocalisation(calc: CalculatorType): Promise<any> { + const lang = this.currentLanguage; + return this.loadLocalisationForLang(calc, lang).then((localisation) => { + return localisation as StringMap; + }).catch((e) => { + return ""; + }); + } + + /** + * Loads the localisation file dedicated to calculator type ct for language lang; + * keeps it in cache for subsequent calls () + */ + private loadLocalisationForLang(calc: CalculatorType, lang: string): Promise<any> { + const ct = String(calc); + // if not already in cache + if (! Object.keys(this._languageCache).includes(ct) || ! Object.keys(this._languageCache[calc]).includes(lang)) { + const f: string = FormulaireService.getConfigPathPrefix(calc) + lang + ".json"; + return this.httpService.httpGetRequestPromise(f).then((localisation) => { + this._languageCache[ct] = this._languageCache[ct] || {}; + this._languageCache[ct][lang] = localisation; + return localisation as StringMap; + }).catch((e) => { + throw new Error(`LOCALISATION_FILE_NOT_FOUND "${f}"`); + }); + } else { + return new Promise((resolve, reject) => { + resolve(); // does nothing but complies with Promise expectation }); } } @@ -106,30 +152,22 @@ export class I18nService extends Observable implements Observer { * In production mode, looks in different messages collections : * 1. ${msg} if provided * 2. messages for current language - * 3. messages for fallback language * * In dev mode, looks only in 1. if provided, else only in 2. which makes missing * translations easier to detect * * @param textKey id du texte (ex: "ERROR_PARAM_NULL") */ - public localizeText(textKey: string, msg?: StringMap) { - const messages = msg || this._Messages; - if (! messages) { + public localizeText(textKey: string) { + if (! this._Messages) { return `*** messages not loaded: ${this._currentLanguage} ***`; } - if (messages[textKey] !== undefined) { - return messages[textKey]; + if (this._Messages[textKey] !== undefined) { + return decodeHtml(this._Messages[textKey]); } else { // try general message - if(msg !== undefined && this._Messages["INFO_LIB_"+textKey.toUpperCase()] !== undefined) { - return this._Messages["INFO_LIB_"+textKey.toUpperCase()]; - } - if (!isDevMode()) { - // try fallback language before giving up - if (this._fallbackMessages[textKey] !== undefined) { - return this._fallbackMessages[textKey]; - } + if (this._Messages !== undefined && this._Messages["INFO_LIB_" + textKey.toUpperCase()] !== undefined) { + return decodeHtml(this._Messages["INFO_LIB_" + textKey.toUpperCase()]); } return `*** message not found: ${textKey} ***`; } @@ -143,7 +181,7 @@ export class I18nService extends Observable implements Observer { public localizeMessage(r: Message, nDigits: number = 3): string { let text: string; let m: string = this.getMessageFromCode(r.code); - + // replace %X% by formatted value of extraVar.X for (const k in r.extraVar) { if (r.extraVar.hasOwnProperty(k)) { const v: any = r.extraVar[k]; @@ -167,6 +205,22 @@ export class I18nService extends Observable implements Observer { m = this.replaceAll(m, "%" + k + "%", s); } } + // replace "ENUM_X_Y" by translated enum value; + // example for lang "fr" : "ENUM_SPECIES_6" => "INFO_ENUM_SPECIES_6" => "Ombre commun" + m = m.replace(/(ENUM_[^ ,;\.]+)/g, (match, p1) => { + return this.localizeText("INFO_" + p1); + }); + + // replace "FORM_ID_X" by form name in current session, if any + m = m.replace(/FORM_ID_(\w{6})/g, (match, p1) => { + // cannot inject FormulaireService => cyclic dependency :/ + const form = ServiceFactory.formulaireService.getFormulaireFromNubId(p1); + let formName = "**UNKNOWN_FORM**"; + if (form !== undefined) { + formName = form.calculatorName; + } + return formName; + }); // replace "ENUM_X_Y" by translated enum value; // example for lang "fr" : "ENUM_SPECIES_6" => "INFO_ENUM_SPECIES_6" => "Ombre commun" @@ -178,7 +232,7 @@ export class I18nService extends Observable implements Observer { // replace "FORM_ID_X" by form name in current session, if any m = m.replace(/FORM_ID_(\w{6})/g, (match, p1) => { // cannot inject FormulaireService => cyclic dependency :/ - const form = ServiceFactory.instance.formulaireService.getFormulaireFromNubId(p1); + const form = ServiceFactory.formulaireService.getFormulaireFromNubId(p1); let formName = "**UNKNOWN_FORM**"; if (form !== undefined) { formName = form.calculatorName; @@ -239,6 +293,7 @@ export class I18nService extends Observable implements Observer { /** * Met en forme un result en fonction du libellé qui l'accompagne * Les result avec le terme "ENUM_" sont traduit avec le message INFO_ENUM_[Nom de la variable après ENUM_] + * Exemple pour la langue "fr" : "ENUM_STRUCTUREFLOWREGIME_1" => "INFO_ENUM_STRUCTUREFLOWREGIME_1" => "Partiellement noyé" */ public formatResult(label: string, value: number): string { if (value === undefined) { @@ -267,7 +322,8 @@ export class I18nService extends Observable implements Observer { // interface Observer /** - * Should only be triggered once at app startup, when setup service tries loading language + * Should only be triggered once at app startup, when setup service tries loading language, + * then everytime language is changed through Preferences screen * @param sender should always be ApplicationSetupService * @param data object { * action: should always be "languagePreferenceChanged" diff --git a/src/app/services/service-factory.ts b/src/app/services/service-factory.ts index 78d182b9179fafefd04ed09a5499850aa9ccec5c..a566f3aabb97fc5b2db06dcc5388def593fac7b9 100644 --- a/src/app/services/service-factory.ts +++ b/src/app/services/service-factory.ts @@ -4,25 +4,21 @@ import { I18nService } from "./internationalisation.service"; import { HttpService } from "./http.service"; import { NotificationsService } from "./notifications.service"; -export class ServiceFactory { - private static _instance: ServiceFactory; // instance pour le pattern singleton - - private constructor() { } - - public applicationSetupService: ApplicationSetupService; - - public formulaireService: FormulaireService; - - public i18nService: I18nService; - - public httpService: HttpService; - - public notificationsService: NotificationsService; - - public static get instance() { - if (ServiceFactory._instance === undefined) { - ServiceFactory._instance = new ServiceFactory(); - } - return ServiceFactory._instance; - } -} +/** + * A "Singleton" the TS way, that holds pointers to all services, to be accessed + * at any time by classes that do not support injection; fed by AppComponent at + * construction time + */ +export const ServiceFactory: { + applicationSetupService: ApplicationSetupService; + formulaireService: FormulaireService; + i18nService: I18nService; + httpService: HttpService; + notificationsService: NotificationsService; +} = { + applicationSetupService: undefined, + formulaireService: undefined, + i18nService: undefined, + httpService: undefined, + notificationsService: undefined +}; diff --git a/src/app/util.ts b/src/app/util.ts index 6f5719bc5b0888c222f55633d3a6171b17a90e81..48b0981cc44d23bee009dbcb77cd517a1f13b798 100644 --- a/src/app/util.ts +++ b/src/app/util.ts @@ -26,7 +26,7 @@ export function fv(p: NgParameter | number): string { } else if (typeof p === "number") { value = p; } - const nDigits = ServiceFactory.instance.applicationSetupService.displayPrecision; + const nDigits = ServiceFactory.applicationSetupService.displayPrecision; return formattedValue(value, nDigits); } @@ -161,3 +161,27 @@ export function generateValuesCombination( return formula(nub, vals); } } + +export function arraysAreEqual(arrayA: any[], arrayB: any[], property?: string, sort = false): boolean { + const aA: any[] = JSON.parse(JSON.stringify(arrayA)); // array copy + const aB: any[] = JSON.parse(JSON.stringify(arrayB)); // array copy + if (sort) { + aA.sort((a, b) => a - b); + aB.sort((a, b) => a - b); + } + let equal = true; + if (aA.length === aB.length) { + for (let i = 0; i < aA.length; i++) { + const eA = aA[i]; + const eB = aB[i]; + if (property === undefined) { + equal = equal && (eA === eB); + } else { + equal = equal && (eA[property] === eB[property]); + } + } + } else { + equal = false; + } + return equal; +} diff --git a/src/assets/icons/android-chrome-192x192.png b/src/assets/icons/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..2444e0b43af884eeed39e250a3a14d0fe6c8ea24 Binary files /dev/null and b/src/assets/icons/android-chrome-192x192.png differ diff --git a/src/assets/icons/android-chrome-512x512.png b/src/assets/icons/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..67c7918826dd586f53aab4da6d7dbfe3ea96937a Binary files /dev/null and b/src/assets/icons/android-chrome-512x512.png differ diff --git a/src/assets/icons/apple-touch-icon.png b/src/assets/icons/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a140909ce69acde63e07fc47d7ca9571717c89 Binary files /dev/null and b/src/assets/icons/apple-touch-icon.png differ diff --git a/src/assets/icons/favicon-16x16.png b/src/assets/icons/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..2927e70d491b99063f6bdcd58f26b41f35cd18fd Binary files /dev/null and b/src/assets/icons/favicon-16x16.png differ diff --git a/src/assets/icons/favicon-32x32.png b/src/assets/icons/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..42b848cb12a2ccce719aac65f869238a167c5303 Binary files /dev/null and b/src/assets/icons/favicon-32x32.png differ diff --git a/src/assets/images/themes/verification.jpg b/src/assets/images/themes/verification.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e38b8356a431c7260d930a82cab1211db5bb871a Binary files /dev/null and b/src/assets/images/themes/verification.jpg differ diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3612073bc31cd4c1f5d6cbb00318521e9a61bd8a..5d0833162027e2147e99e72a1a94bb7d3cb62843 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,3 +1,3 @@ export const environment = { - production: true + production: true }; diff --git a/src/index.html b/src/index.html index 55f7c58334a62541954f33f05d52e71afb42dc62..24fc414e26f12665c3ac6a32851b93ac0a8cf0a7 100644 --- a/src/index.html +++ b/src/index.html @@ -6,11 +6,11 @@ <meta charset="utf-8"> <title>Cassiopée</title> - <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> - <link rel="icon" type="image/png" sizes="512x512" href="/android-chrome-512x512.png"> - <link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png"> - <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> - <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> + <link rel="apple-touch-icon" sizes="180x180" href="assets/icons/apple-touch-icon.png"> + <link rel="icon" type="image/png" sizes="512x512" href="assets/icons/android-chrome-512x512.png"> + <link rel="icon" type="image/png" sizes="192x192" href="assets/icons/android-chrome-192x192.png"> + <link rel="icon" type="image/png" sizes="32x32" href="assets/icons/favicon-32x32.png"> + <link rel="icon" type="image/png" sizes="16x16" href="assets/icons/favicon-16x16.png"> <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#ffffff"> <meta name="viewport" content="width=device-width, initial-scale=1"> @@ -231,6 +231,7 @@ * at the root of the directory (ex: "fr.irstea.cassiopee_4.5.0_amd64.deb") */ const lookForUpdates = function() { + console.log("looking for updates"); // Web update resources root directory const URL = "https://cassiopee.g-eau.fr/cassiopee-releases/"; @@ -238,6 +239,7 @@ let version = "4.4.2"; // debug cordova.getAppVersion.getVersionNumber((versionNumber) => { version = versionNumber; + console.log("current version", version); // fetch releases information const options = { method: 'get', @@ -246,6 +248,7 @@ cordova.plugin.http.sendRequest(URL + "releases.json", options, (response) => { var data = JSON.parse(response.data); // This is the resultant JSON in useful form // alert(`Youpi ! ${response.status} version=${version}, latest=${data.latest}, comp=${semverCompare(data.latest, version)}`); + console.log("latest version", data !== undefined ? data.latest : "err"); // compare current version to latest version if (data.latest && semverCompare(data.latest, version) == 1) { // get download link for latest version, depending on platform diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json index cba8bbdfb0dce3576687eda6e689be64f3ee3393..acbc4c1501bac560a985122e6d8a3223e51bb0e3 100644 --- a/src/locale/messages.en.json +++ b/src/locale/messages.en.json @@ -57,19 +57,25 @@ "ERROR_REMOUS_PAS_CALCUL": "No possible calculation, neither from upstream nor from downstream", "ERROR_REMOUS_PENTE_FORTE": "The water line slope is too steep at abscissa %x% m (the discretisation step should be reduced)", "ERROR_RU_CIRC_LEVEL_TOO_HIGH": "Uniform flow cannot be calculated with a pipe under load", + "ERROR_NEWTON_NON_CONVERGENCE": "Non-convergence (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG": "Non-convergence of the calculation of the combined depth (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE": "Non-convergence of the calculation of the critical depth (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCOR": "Non convergence of the calculation of the corresponding elevation (Newton's method)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Non convergence of the calculation of the normal depth (Newton's method)", "ERROR_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "The slope is negative or zero, the normal depth is infinite", + "ERROR_SECTION_PERIMETRE_NUL": "Section: calculation is impossible when perimeter is null", + "ERROR_SECTION_RAYON_NUL": "Section: calculation is impossible when radius is null", "ERROR_SECTION_SURFACE_NULLE": "Section: calculation is impossible when surface is null", "ERROR_SOMETHING_FAILED_IN_CHILD": "Calculation of child module #%number% failed", "ERROR_SOLVEUR_NO_VARIATED_PARAMS_ALLOWED": "Solver cannot be used with a modules chain containing variated parameters", "ERROR_STRUCTURE_Q_TROP_ELEVE": "The flow passing through the other devices is too high: the requested parameter is not calculable.", + "ERROR_STRUCTURE_ZDV_PAS_CALCULABLE": "Parameter \"Crest elevation\" cannot be calculated with this discharge law", + "ERROR_STRUCTURE_Z_EGAUX_Q_NON_NUL": "Upstream and downstream elevations are equal but flow is not null", "INFO_CALCULATOR_CALC_NAME": "Calculator name", "INFO_CALCULATOR_CALCULER": "Compute", "INFO_CALCULATOR_CLONE": "Duplicate", "INFO_CALCULATOR_CLOSE": "Close", + "INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE": "Load predefined species", "INFO_CALCULATOR_OPEN_HELP": "Help", "INFO_CALCULATOR_PARAMFIXES": "Fixed parameters", "INFO_CALCULATOR_RESULTS_GENERATE_PAB": "Generate a fish ladder", @@ -81,23 +87,31 @@ "INFO_CALCULATOR_SAVE": "Save", "INFO_CALCULATOR_USED_BY": "Used by", "INFO_CALCULATOR_VALEURS": "Values", + "INFO_BIEF_DESCRIPTION": "open channel canal flow backwater curve", "INFO_BIEF_TITRE_COURT": "Reach", "INFO_BIEF_TITRE": "Up/downstream elevations of a reach", + "INFO_CLOISONS_DESCRIPTION": "step slot weir", "INFO_CLOISONS_TITRE_COURT": "Cross walls", "INFO_CLOISONS_TITRE": "Fish ladder: Cross walls", "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "The following modules depend on the one you are closing:", "INFO_CLOSE_DIALOGUE_TEXT": "Warning ! Parameters and results of this module will be lost.", "INFO_CLOSE_DIALOGUE_TITRE": "Closing calculation module", "INFO_CONCENTRATIONBLOCS_TITRE": "Blocks concentration", + "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "rock ramp fish pass", "INFO_CONCENTRATIONBLOCS_TITRE_COURT": "Blocks conc.", + "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "flow Blasius", "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "Distrib.", "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Distributor pipe", + "INFO_COURBEREMOUS_DESCRIPTION": "open channel regime flow subcritical supercritical hydraulic jump", "INFO_COURBEREMOUS_TITRE_COURT": "Backwater", "INFO_COURBEREMOUS_TITRE": "Backwater curves", + "INFO_DEVER_DESCRIPTION": "slot threshold approach speed head hydraulic", "INFO_DEVER_TITRE_COURT": "Free weir", "INFO_DEVER_TITRE": "Free flow weir stage-discharge laws", "INFO_DIAGRAM_SOLVEUR_FINDS": "finds", "INFO_DIAGRAM_SOLVEUR_READS": "reads", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS": "verifies pass", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES": "verifies species", "INFO_DIAGRAM_TITLE": "Calculation modules diagram", "INFO_DIAGRAM_DRAWING_ERROR": "Error while drawing diagram", "INFO_DIAGRAM_CALCULATED_PARAM": "calculated parameter", @@ -105,8 +119,8 @@ "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Edit initial value", "INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS": "between %s and %s", "INFO_DIALOG_EDIT_PAB_N_DEVICES": "%s device(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s wall(s) : %s device(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s wall(s) + %s device(s) : %s devices", + "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s wall(s): %s device(s)", + "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s wall(s) + %s device(s): %s devices", "INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE": "Variable to edit", "INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE": "Fixed value", "INFO_DIALOG_EDIT_PAB_OPTION_DELTA": "Delta", @@ -139,6 +153,26 @@ "INFO_ENUM_OUVRAGE_Q_REGIME_3": "Zero flow", "INFO_ENUM_PARFLOWREGIME_0": "Free", "INFO_ENUM_PARFLOWREGIME_1": "Submerged", + "INFO_ENUM_SPECIES_1": "Salmon, trout [50-100] (1)", + "INFO_ENUM_SPECIES_2": "Mule (2)", + "INFO_ENUM_SPECIES_3a": "Great shad (3a)", + "INFO_ENUM_SPECIES_3b": "Shad (3b)", + "INFO_ENUM_SPECIES_3c": "Sea lamprey (3c)", + "INFO_ENUM_SPECIES_4a": "Trout [25-55] (4a)", + "INFO_ENUM_SPECIES_4b": "River trout [15-30] (4b)", + "INFO_ENUM_SPECIES_5": "Aspe, pike (5)", + "INFO_ENUM_SPECIES_6": "Common grayling (6)", + "INFO_ENUM_SPECIES_7a": "Barbel, chub, nase (7a)", + "INFO_ENUM_SPECIES_7b": "River lamprey (7b)", + "INFO_ENUM_SPECIES_8a": "Common carp (8a)", + "INFO_ENUM_SPECIES_8b": "Common bream, pike-perch (8b)", + "INFO_ENUM_SPECIES_8c": "White bream, ide, burbot, perch, tench (8c)", + "INFO_ENUM_SPECIES_8d": "Common dace (8d)", + "INFO_ENUM_SPECIES_9a": "Bleak, spirlin, barbel, souffia, crucian carp, roach... (9a)", + "INFO_ENUM_SPECIES_9b": "Apron, sculpins, ruffe, loach... (9b)", + "INFO_ENUM_SPECIES_10": "Sunbleak, bitterling, stickleback, minnow (10)", + "INFO_ENUM_SPECIES_11a": "European eel [yellow] (11a)", + "INFO_ENUM_SPECIES_11b": "European Eel [glass eel] (11b)", "INFO_ENUM_STRUCTUREFLOWMODE_0": "Weir", "INFO_ENUM_STRUCTUREFLOWMODE_1": "Orifice", "INFO_ENUM_STRUCTUREFLOWMODE_2": "Zero flow", @@ -146,9 +180,9 @@ "INFO_ENUM_STRUCTUREFLOWREGIME_1": "Partially submerged", "INFO_ENUM_STRUCTUREFLOWREGIME_2": "Submerged", "INFO_ENUM_STRUCTUREFLOWREGIME_3": "Zero flow", - "INFO_ENUM_STRUCTUREJETTYPE_0": "Not applicable", - "INFO_ENUM_STRUCTUREJETTYPE_1": "Diving", - "INFO_ENUM_STRUCTUREJETTYPE_2": "Surface", + "INFO_ENUM_STRUCTUREJETTYPE_0": "diving", + "INFO_ENUM_STRUCTUREJETTYPE_1": "surface", + "INFO_ENUM_STRUCTUREJETTYPE_2": "not applicable", "INFO_CHART_BUTTON_TITLE_RESET_ZOOM": "Restore default zoom", "INFO_CHART_BUTTON_TITLE_EXPORT_IMAGE": "Save picture", "INFO_CHART_BUTTON_TITLE_ENTER_FS": "Display fullscreen", @@ -183,8 +217,10 @@ "INFO_FIELDSET_MOVE_DOWN": "Move down", "INFO_FIELDSET_MOVE_LEFT": "Move left", "INFO_FIELDSET_MOVE_RIGHT": "Move right", + "INFO_GRILLE_DESCRIPTION": "downstream migration trashrack conventional oriented inclined", "INFO_GRILLE_TITRE_COURT": "Grid", "INFO_GRILLE_TITRE": "Loss of charge, water grid", + "INFO_JET_DESCRIPTION": "downstream migration ichthyocompatible water intakes for small hydroelectric power plants ballistics", "INFO_JET_TITRE_COURT": "Jet", "INFO_JET_TITRE": "Jet trajectory and impact", "INFO_WALL_ADDED": "1 wall added", @@ -198,6 +234,7 @@ "INFO_JET_TITRE_TRAJECTOIRE": "Trajectory", "INFO_JET_TITRE_TRAJECTOIRE_ET_COTE_EAU": "Trajectory and water elevation", "INFO_JET_FOND": "Bottom", + "INFO_LECHAPTCALMON_DESCRIPTION": "pipe flow circular headloss", "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.", "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon", "INFO_LIB_ABSCISSE": "Abscissa (m)", @@ -236,7 +273,7 @@ "INFO_LIB_CV": "Cv: Velocity coefficient", "INFO_LIB_CVQT": "CV.QT: Corrected discharge", "INFO_LIB_DH": "Fall", - "INFO_LIB_DHR": "DHR : Residual fall", + "INFO_LIB_DHR": "DHR: Residual fall", "INFO_LIB_DISTANCE_AMONT": "Distance from upstream (m)", "INFO_LIB_EC": "EC: Kinetic energy", "INFO_LIB_ENUM_MACRORUGOFLOWTYPE": "Flow type", @@ -328,6 +365,21 @@ "INFO_LIB_ZRAM": "Upstream apron elevation", "INFO_LIB_ZRMB": "Downstream basin bottom elevation", "INFO_LIB_ZT": "Triangle top elevation", + "INFO_LIB_DHMAXS": "Maximal fall", + "INFO_LIB_DHMAXP": "Maximal fall", + "INFO_LIB_BMIN": "Minimal slot or weir width", + "INFO_LIB_PMINS": "Minimal basin width", + "INFO_LIB_PMINP": "Minimal basin width", + "INFO_LIB_LMINS": "Minimal basin length", + "INFO_LIB_LMINP": "Minimal basin length", + "INFO_LIB_HMIN": "Minimal head on weir", + "INFO_LIB_YMIN": "Minimal water level", + "INFO_LIB_VEMAX": "Maximal flow velocity", + "INFO_LIB_YMINSB": "Minimal water level on superactive baffles", + "INFO_LIB_YMINPB": "Minimal water level on plane baffles", + "INFO_LIB_PVMAX": "Maximal dissipated power", + "INFO_LIB_PVMAXPREC": "Recommanded maximal dissipated power", + "INFO_LIB_PVMAXLIM": "Limit maximal dissipated power", "INFO_LIB_PAB_CHART_SEUILS": "Weirs (%s)", "INFO_LINKED_VALUE_CHILD": "%s (%s, %s %s)", "INFO_LINKED_VALUE_EXTRA_RESULT_OF": "%s (%s)", @@ -335,21 +387,27 @@ "INFO_LINKED_VALUE_RESULT": "%s (%s)", "INFO_LINKED_VALUE_SECTION_RESULT": "%s (%s, section)", "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", + "INFO_LOG_HIDE_DETAILS": "hide details", + "INFO_LOG_SHOW_DETAILS": "show details", + "INFO_MACRORUGO_DESCRIPTION": "natural block", "INFO_MACRORUGO_TITRE_COURT": "Rock-ramp", "INFO_MACRORUGO_TITRE": "Rock-ramp fishpasses", "INFO_MENU_DIAGRAM_TITLE": "Modules diagram", "INFO_MACRORUGOCOMPOUND_TITRE": "Compound rock-ramp fishpasses", + "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "natural multiple inclined block aprons", "INFO_MACRORUGOCOMPOUND_TITRE_COURT": "Compound RR", "INFO_MACRORUGOCOMPOUND_LINCL": "Lateral inclination (m/m): ", "INFO_ONLY_Q_MAY_VARY": "Only flow may vary", "INFO_ONLY_Z1_Q_MAY_VARY": "Only upstream elevation and flow may vary", "INFO_Z1_Z2_MUST_BE_DEFINED": "Upstream and downstream elevations must be defined", "INFO_PENTE_TITRE": "Slope", + "INFO_PENTE_DESCRIPTION": "open-channel flow drop", "INFO_PENTE_TITRE_COURT": "Slope", "INFO_MENU_EMPTY_SESSION_TITLE": "New session", "INFO_MENU_HELP_TITLE": "Help", "INFO_MENU_LOAD_SESSION_TITLE": "Load session", "INFO_MENU_NOUVELLE_CALC": "New calculation module", + "INFO_MENU_RECHERCHE_MODULES": "Search modules", "INFO_MENU_REPORT_BUG": "Report an issue", "INFO_MENU_RESTORE_DEFAULT_SETTINGS": "Default settings", "INFO_MENU_SAVE_SESSION_TITLE": "Save session", @@ -392,28 +450,37 @@ "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Regulated notch (Villemonte)", "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Notch (Villemonte)", "INFO_PARAMETRES_FIXES": "All parameters must be fixed", + "INFO_PAB_DESCRIPTION": "basins", "INFO_PAB_TITRE_COURT": "Fish ladder", "INFO_PAB_TITRE": "Fish ladder", "INFO_PAB_TITRE_PROFIL": "Fish ladder longitudinal profile", "INFO_PAB_TABLE": "Fish ladder geometry", + "INFO_PABCHUTE_DESCRIPTION": "basins", "INFO_PABCHUTE_TITRE_COURT": "FL: fall", "INFO_PABCHUTE_TITRE": "Fish ladder: fall", + "INFO_PABDIMENSIONS_DESCRIPTION": "basins", "INFO_PABDIMENSIONS_TITRE_COURT": "FL: dimensions", "INFO_PABDIMENSIONS_TITRE": "Fish ladder: dimensions", - "INFO_PABNOMBRE_TITRE_COURT": "FL : number", - "INFO_PABNOMBRE_TITRE": "Fish ladder : number of falls", + "INFO_PABNOMBRE_DESCRIPTION": "basins", + "INFO_PABNOMBRE_TITRE_COURT": "FL: number", + "INFO_PABNOMBRE_TITRE": "Fish ladder: number of falls", + "INFO_PABPUISSANCE_DESCRIPTION": "basins", "INFO_PABPUISSANCE_TITRE_COURT": "FL: diss. power", "INFO_PABPUISSANCE_TITRE": "Fish ladder: dissipated power", + "INFO_PARALLELSTRUCTURE_DESCRIPTION": "orifice gate weir threshold free flow submerged discharge stage-discharge", "INFO_PARALLELSTRUCTURE_TITRE_COURT": "// structures", "INFO_PARALLELSTRUCTURE_TITRE": "Parallel structures", - "INFO_PAR_TITRE": "Humpback fishway: setup", + "INFO_PAR_TITRE": "Baffle fishway: setup", + "INFO_PAR_DESCRIPTION": "planes Denil Fatou superactive mixte chevrons canoe", "INFO_PAR_TITRE_COURT": "HF: setup", - "INFO_PARSIMULATION_TITRE": "Humpback fishway: simulation", + "INFO_PARSIMULATION_TITRE": "Baffle fishway: simulation", + "INFO_PARSIMULATION_DESCRIPTION": "planes Denil Fatou superactive mixte chevrons canoe", "INFO_PARSIMULATION_TITRE_COURT": "HF: simulation", "INFO_PARAMFIELD_AWAITING_CALCULATION": "Awaiting calculation", "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Boundary conditions", "INFO_PARAMFIELD_CALCULATED": "Calculated", "INFO_PARAMFIELD_CALCULATION_FAILED": "Calculation failed", + "INFO_PARAMFIELD_CANNOT_CALC_LINKS_LOOP": "This parameter cannot be calculated (links loop)", "INFO_PARAMFIELD_CHART_SELECT_X_AXIS": "Variable for X axis", "INFO_PARAMFIELD_CHART_SELECT_Y_AXIS": "Variable for Y axis", "INFO_PARAMFIELD_CHART_TYPE_HISTOGRAM": "Histogram", @@ -451,6 +518,7 @@ "INFO_QUICKNAV_INPUT": "input", "INFO_QUICKNAV_RESULTS": "results", "WARNING_PROBLEMS_ENCOUNTERED": "Problems occurred during calculation (info: %info%, warning: %warning%, error: %error%)", + "INFO_REGIMEUNIFORME_DESCRIPTION": "open-channel flow normal depth", "INFO_REGIMEUNIFORME_TITRE_COURT": "Uniform flow", "INFO_REGIMEUNIFORME_TITRE": "Uniform flow calculation", "INFO_REMOUS_CALCUL_FLUVIAL": "Downstream boundary condition >= Critical elevation: calculation of subcritical part from downstream", @@ -470,8 +538,12 @@ "INFO_REPORT_BUG_SUBJECT": "Issue report", "INFO_REQUIRES": "requires", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Export as XLSX", + "INFO_SEARCH_NO_RESULT": "No result", + "INFO_SECTIONPARAMETREE_DESCRIPTION": "open-channel canal rectangular circular trapezoidal depth head normal critical conjugate corresponding subcritical supercritical Froude", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Param. section", "INFO_SECTIONPARAMETREE_TITRE": "Parametric section", + "INFO_SELECT_MULTIPLE_AND_OTHER": "other", + "INFO_SELECT_MULTIPLE_AND_OTHERS": "others", "INFO_SETUP_ENABLE_HOTKEYS": "Enable keyboard shortcuts", "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Create new calculators with empty fields (no default values)", "INFO_SETUP_ENABLE_NOTIFICATIONS": "Enable on-screen notifications", @@ -490,8 +562,10 @@ "INFO_SNACKBAR_RESULTS_INVALIDATED": "Results invalidated for", "INFO_SNACKBAR_SETTINGS_SAVED": "Settings saved on this device", "INFO_SOLVEUR_TITRE": "Multimodule solver", + "INFO_SOLVEUR_DESCRIPTION": "", "INFO_SOLVEUR_TITRE_COURT": "Solver", "INFO_SPP_TITRE": "Sum and product of powers", + "INFO_SPP_DESCRIPTION": "plus times", "INFO_SPP_TITRE_COURT": "SPP", "INFO_THEME_CREDITS": "Credit", "INFO_THEME_DEVALAISON_TITRE": "Downstream migration", @@ -508,10 +582,12 @@ "INFO_THEME_OUTILS_MATHEMATIQUES_DESCRIPTION": "Miscellaneous generic mathematical tools", "INFO_THEME_PASSE_A_BASSIN_DESCRIPTION": "Tools for sizing a fish pass made with pools also called fish steps", "INFO_THEME_PASSE_A_BASSIN_TITRE": "Fish ladder", - "INFO_THEME_PASSE_A_RALENTISSEURS_TITRE": "Humpback fishway", - "INFO_THEME_PASSE_A_RALENTISSEURS_DESCRIPTION": "Humpback fishway", + "INFO_THEME_PASSE_A_RALENTISSEURS_TITRE": "Baffle fishway", + "INFO_THEME_PASSE_A_RALENTISSEURS_DESCRIPTION": "Baffle fishway", "INFO_THEME_PASSE_NATURELLE_DESCRIPTION": "Tools for sizing a natural fish pass also called macroroughness pass or rock-ramp fish pass", "INFO_THEME_PASSE_NATURELLE_TITRE": "Natural pass", + "INFO_THEME_VERIFICATION_DESCRIPTION": "Tools for verifying fish passes crossing capabilities by different fish species", + "INFO_THEME_VERIFICATION_TITRE": "Fish passes verification", "INFO_TITREJOURNAL": "Calculation log", "INFO_TITREJOURNAL_GLOBAL": "Calculation log synthesis", "INFO_WELCOME_CONTENT": "<p>The Cassiopée software was developed by the ecohydraulic R&D pole gathering <a href=\"https://ofb.gouv.fr\" target=\"_blank\">OFB</a> (French Office for Biodiversity) and <a href=\"https://www.imft.fr\" target=\"_blank\">IMFT</a> (Fluids Mechanics Institute of Toulouse) and by <a href=\"http://g-eau.fr/index.php/en/\" target=\"_blank\">UMR G-EAU</a> (Joint Research Unit \"Water Management, Actors, Territories\").</p><p>It includes tools for designing fish crossing devices for upstream and downstream migrations, and hydraulic calculation tools useful for environmental and agricultural engineering.</p><p>For more information, consult <a href=\"assets/docs/en/mentions_legales.html\" target=\"_blank\">legal notice</a> and <a href=\"assets/docs/en/index.html\" target=\"_blank\">documentation</a>.</p>", @@ -525,9 +601,23 @@ "INFO_EXAMPLES_TITLE": "Examples", "INFO_EXAMPLES_SUBTITLE": "Load standard examples", "INFO_YAXB_TITRE": "Linear function", + "INFO_YAXB_DESCRIPTION": "addition plus subtraction minus multiplication division", "INFO_YAXB_TITRE_COURT": "Linear f.", "INFO_TRIGO_TITRE": "Trigonometric function", + "INFO_TRIGO_DESCRIPTION": "cosinus sinus tangent arc", "INFO_TRIGO_TITRE_COURT": "Trigo. f.", + "INFO_VERIF_OK": "Crossing criteria are met for all species", + "INFO_VERIF_VARYING_OK": "Crossing criteria are met for all species and all pass modalities", + "WARNING_VERIF_OK_BUT": "Crossing criteria are met for all species, but there are warnings", + "WARNING_VERIF_VARYING_OK_BUT": "Only certain modalities of the pass are crossable", + "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Custom species: %s", + "INFO_VERIFICATEUR_SPECIES_GROUP": "Species group", + "INFO_VERIFICATEUR_TITRE": "Fish pass verification", + "INFO_VERIFICATEUR_DESCRIPTION": "ichtyocompatible", + "INFO_VERIFICATEUR_TITRE_COURT": "Verification", + "INFO_ESPECE_TITRE": "Fish species characteristics", + "INFO_ESPECE_DESCRIPTION": "ichtyocompatible", + "INFO_ESPECE_TITRE_COURT": "Species", "WARNING_WARNINGS_ABSTRACT": "%nb% warnings occurred during calculation", "ERROR_JET_SUBMERGED_NO_SOLUTION": "There is no solution", "WARNING_DEVER_ZDV_INF_ZR": "Apron elevation of structure #%number% is below river bed elevation", @@ -539,9 +629,10 @@ "WARNING_STRUCTUREKIVI_PELLE_TROP_FAIBLE": "Threshold height should be greater than 0.1 m. Beta coefficient is forced to 0", "WARNING_VANLEV_ZDV_INF_MIN": "Regulated weir: minimum sill elevation reached", "WARNING_VANLEV_ZDV_SUP_MAX": "Regulated weir: maximum sill elevation reached", - "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Recommendation for fish guiding : α ≤ 45°", - "WARNING_GRILLE_BETA_GREATER_THAN_26": "Recommendation for fish guiding : β ≤ 26°", - "WARNING_GRILLE_VN_GREATER_THAN_05": "Recommendation to prevent fish getting stuck on grid plan (physical barrier) or prematurely passing through the grid (behavioural barrier) : VN ≤ 0.5 m/s.<br>Above average value calculated here, refer to the recommendations taken from experimental caracterisation of effective speed values.", + "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Recommendation for fish guiding: α ≤ 45°", + "WARNING_GRILLE_BETA_GREATER_THAN_26": "Recommendation for fish guiding: β ≤ 26°", + "WARNING_GRILLE_VN_GREATER_THAN_05": "Recommendation to prevent fish getting stuck on grid plan (physical barrier) or prematurely passing through the grid (behavioural barrier): VN ≤ 0.5 m/s.<br>Above average value calculated here, refer to the recommendations taken from experimental caracterisation of effective speed values.", + "WARNING_GRILLE_O_LOWER_THAN_OB": "Total obstruction (entered) is lower than obstruction due to bars only (calculated)", "WARNING_LECHAPT_CALMON_SPEED_OUTSIDE_04_2": "This formula is discouraged for a speed that is not between 0.4 and 2 m/s", "WARNING_UPSTREAM_BOTTOM_HIGHER_THAN_WATER": "Upstream water elevation is lower or equal to bottom elevation", "WARNING_DOWNSTREAM_BOTTOM_HIGHER_THAN_WATER": "Downstream water elevation is lower or equal to bottom elevation", @@ -570,5 +661,52 @@ "WARNING_PAR_NOT_SUBMERGED": "Insufficient downstream submergence : fall at the last downstream baffle (%DH% m).", "ERROR_PAR_M_GREATER_THAN_2_N": "Number of longitudinal strips exceeds 2N = %max%", "INFO_PARENT_PREFIX": "%name% #%position%: ", - "INFO_PARENT_PREFIX_DOWNWALL": "downwall: " + "INFO_PARENT_PREFIX_DOWNWALL": "downwall: ", + "ERROR_VERIF_ERRORS_IN_PASS": "Pass to verify contains errors", + "ERROR_VERIF_VARYING_ERRORS_IN_PASS": "Pass to verify contains error at iteration %i%", + "ERROR_VERIF_MISSING_CRITERION": "Criterion %var_criterion% must be defined", + "ERROR_VERIF_MR_VMAX": "Maximum speed %V% too high (maximum: %maxV%)", + "ERROR_VERIF_MR_PVMAX": "Dissipated power %PV% too high (maximum: %maxPV%)", + "ERROR_VERIF_MR_YMIN": "Water level %Y% too low (minimum: %minY%)", + "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "None of the aprons is crossable", + "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "Crossable width %width% m is lower than the width of a block pattern %patternWidth% m", + "WARNING_VERIF_MRC_VMAX_APRON_N": "Maximum speed %V% too high (maximum: %maxV%)", + "WARNING_VERIF_MRC_YMIN_APRON_N": "Water level %Y% too low (minimum: %minY%)", + "INFO_VERIF_MRC_CROSSABLE_WIDTH": "Maximum crossable width is %width% m", + "ERROR_VERIF_NO_PRESET": "This species group is not compatible with this pass type", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Diving jet not supported", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Diving jet not supported", + "ERROR_VERIF_PAB_DHMAX": "Fall %DH% too high (maximum for surface jet: %maxDHS%, maximum for diving jet: %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Fall %DH% too high for jet type ENUM_STRUCTUREJETTYPE_%jetType% (maximum: %maxDH%)", + "ERROR_VERIF_PAB_BMIN": "Slot/weir width %L% too low (minimum: %minB%)", + "WARNING_VERIF_PAB_BMIN": "Slot/weir width %L% too low (minimum: %minB%)", + "ERROR_VERIF_PAB_LMIN": "Basin length %LB% too low (minimum for surface jet: %minLBS%, minimum for diving jet: %minLBS%)", + "ERROR_VERIF_PAB_LMIN_JET": "Basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", + "WARNING_VERIF_PAB_LMIN_JET": "Basin length %LB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minLB%)", + "WARNING_VERIF_PAB_HMIN": "Head on weir %h1% too low (minimum: %minH%)", + "ERROR_VERIF_PAB_SMIN": "Orifice surface %S% is too low (minimum: %minS%)", + "WARNING_VERIF_PAB_SMIN": "Orifice surface %S% is too low (minimum: %minS%)", + "ERROR_VERIF_PAB_YMOY": "Basin depth %PB% too low (minimum for surface jet: %minPBS%, minimum for diving jet: %minPBP%)", + "ERROR_VERIF_PAB_YMOY_JET": "Basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", + "WARNING_VERIF_PAB_YMOY_JET": "Basin depth %PB% too low for jet type ENUM_STRUCTUREJETTYPE_%jetType% (minimum: %minPB%)", + "ERROR_VERIF_PAB_YMOY_2_DH": "Basin depth %PB% lower than 2x fall %DH%", + "WARNING_VERIF_PAB_YMOY_2_DH": "Basin depth %PB% lower than 2x fall %DH%", + "ERROR_VERIF_PAB_PVMAX": "Dissipated power %PV% too high (maximum: %maxPV%)", + "ERROR_VERIF_PAR_DH": "Downstream pass fall prevents crossability", + "ERROR_VERIF_PAR_SLOPE": "Slope %S% too high (maximum: %maxS%)", + "ERROR_VERIF_PAR_YMIN": "Water level %h% too low (minimum: %minY%)", + "ERROR_VERIF_KO": "Crossability criteria are not met for at least one species group", + "ERROR_VERIF_VARYING_KO": "Crossability criteria are not met for at least one species group, for all pass modalities", + "WARNING_VERIF_PAB_PVMAX": "Dissipated power %PV% very high (recommanded: %maxPV%)", + "WARNING_VERIF_PAB_ORIFICE": "Uninsured passage over an orifice", + "ERROR_VERIF_SPECIES_GROUP_KO": "Crossability criteria are not met for species group ENUM_%speciesGroup%", + "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "Crossability criteria are met for species group ENUM_%speciesGroup%, but there are warnings", + "INFO_VERIF_SPECIES_GROUP_OK": "Crossability criteria are met for species group ENUM_%speciesGroup%", + "ERROR_VERIF_SPECIES_NUB_KO": "Crossability criteria are not met for custom species FORM_ID_%uid%", + "WARNING_VERIF_SPECIES_NUB_OK_BUT": "Crossability criteria are met for custom species FORM_ID_%uid%, but there are warnings", + "INFO_VERIF_SPECIES_NUB_OK": "Crossability criteria are met for custom species FORM_ID_%uid%", + "ERROR_VERIF_PAB_WALL_NOT_CROSSABLE": "Wall #%N% is not crossable", + "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "Downwall is not crossable", + "WARNING_VERIF_PAR_SPECIES_GROUP": "Species groups 3a, 3b et 7b are discouraged for this pass type" } diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json index 7825124eb9d823e8969ffe44f9dab7200850a597..2fe2697aaa909d0f891524bba0fede5a4fbe4684 100644 --- a/src/locale/messages.fr.json +++ b/src/locale/messages.fr.json @@ -10,7 +10,7 @@ "WARNING_ERRORS_ABSTRACT": "%nb% erreurs rencontrées lors du calcul", "ERROR_BIEF_Z1_CALC_FAILED": "Impossible de calculer la cote amont (calcul interrompu avant l'amont)", "ERROR_BIEF_Z2_CALC_FAILED": "Impossible de calculer la cote aval (calcul interrompu avant l'aval)", - "ERROR_DICHO_CONVERGE": "La dichotomie n'a pas pu converger. Dernière approximation: %lastApproximation%", + "ERROR_DICHO_CONVERGE": "La dichotomie n'a pas pu converger. Dernière approximation : %lastApproximation%", "ERROR_DICHO_FUNCTION_VARIATION": "Dichotomie : impossible de determiner le sens de variation de la fonction", "ERROR_DICHO_INIT_DOMAIN": "Dichotomie : la valeur cible %targetSymbol%=%targetValue% n'existe pas pour la variable %variableSymbol% prise dans l'intervalle %variableInterval%", "ERROR_DICHO_INVALID_STEP_GROWTH": "Dichotomie : l'augmentation du pas pour la recherche de l'intervalle de départ est incorrecte (=0)", @@ -23,7 +23,7 @@ "WARNING_ERROR_IN_CALC_CHAIN_STEPS": "Des erreurs sont survenues durant le calcul en chaîne", "ERROR_INTERVAL_OUTSIDE": "Intervalle : la valeur %value% est hors de l'intervalle %interval%", "ERROR_INTERVAL_UNDEF": "Interval : valeur 'undefined' incorrecte", - "ERROR_INVALID_AT_POSITION": "Position %s :", + "ERROR_INVALID_AT_POSITION": "Position %s :", "ERROR_LOADING_SESSION": "Impossible de charger la session", "ERROR_MINMAXSTEP_MAX": "La valeur n'est pas dans ]%s,%s]", "ERROR_MINMAXSTEP_MIN": "La valeur n'est pas dans [%s,%s[", @@ -57,19 +57,25 @@ "ERROR_REMOUS_PAS_CALCUL": "Aucun calcul possible ni depuis l'amont ni depuis l'aval", "ERROR_REMOUS_PENTE_FORTE": "La pente de la ligne d'eau est trop forte à l'abscisse %x% m (il faudrait réduire le pas de discrétisation)", "ERROR_RU_CIRC_LEVEL_TOO_HIGH": "Le régime uniforme ne peut pas être calculé avec une conduite en charge", + "ERROR_NEWTON_NON_CONVERGENCE": "Non convergence (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG": "Non convergence du calcul de la hauteur conjuguée (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE": "Non convergence du calcul de la hauteur critique (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCOR": "Non convergence du calcul de la hauteur correspondante (Méthode de Newton)", "ERROR_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Non convergence du calcul de la hauteur normale (Méthode de Newton)", "ERROR_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "La pente est négative ou nulle, la hauteur normale est infinie", - "ERROR_SECTION_SURFACE_NULLE": "Section : calcul impossible à cause d'une surface nulle", + "ERROR_SECTION_PERIMETRE_NUL": "Section : calcul impossible à cause d'un périmètre nul", + "ERROR_SECTION_RAYON_NUL": "Section : calcul impossible à cause d'un rayon nul", + "ERROR_SECTION_SURFACE_NULLE": "Section : calcul impossible à cause d'une surface nulle", "ERROR_SOMETHING_FAILED_IN_CHILD": "Le calcul du module enfant n°%number% a échoué", "ERROR_SOLVEUR_NO_VARIATED_PARAMS_ALLOWED": "Le solveur ne peut pas être utilisé avec une chaîne de modules contenant des paramètres variés", - "ERROR_STRUCTURE_Q_TROP_ELEVE": "Le débit passant par les autres ouvrages est trop élevé: le paramètre demandé n'est pas calculable.", + "ERROR_STRUCTURE_Q_TROP_ELEVE": "Le débit passant par les autres ouvrages est trop élevé : le paramètre demandé n'est pas calculable.", + "ERROR_STRUCTURE_ZDV_PAS_CALCULABLE": "Le paramètre \"Cote de radier\" ne peut pas être calculé avec cette loi de débit", + "ERROR_STRUCTURE_Z_EGAUX_Q_NON_NUL": "Les cotes amont aval sont égales et le débit n'est pas nul", "INFO_CALCULATOR_CALC_NAME": "Nom du module de calcul", "INFO_CALCULATOR_CALCULER": "Calculer", "INFO_CALCULATOR_CLONE": "Dupliquer", "INFO_CALCULATOR_CLOSE": "Fermer", + "INFO_CALCULATOR_LOAD_PREDEFINED_ESPECE": "Charger une espèce prédéfinie", "INFO_CALCULATOR_OPEN_HELP": "Aide", "INFO_CALCULATOR_PARAMFIXES": "Paramètres fixés", "INFO_CALCULATOR_RESULTS_GENERATE_PAB": "Générer une passe à bassins", @@ -81,23 +87,31 @@ "INFO_CALCULATOR_SAVE": "Enregistrer", "INFO_CALCULATOR_USED_BY": "Utilisé par", "INFO_CALCULATOR_VALEURS": "Valeurs", + "INFO_BIEF_DESCRIPTION": "Hydraulique à surface libre courbe de remous amont aval canal chenal régime écoulement fluvial torrentiel", "INFO_BIEF_TITRE_COURT": "Bief", "INFO_BIEF_TITRE": "Cotes amont/aval d'un bief", + "INFO_CLOISONS_DESCRIPTION": "poisson échelle échancrure fente", "INFO_CLOISONS_TITRE_COURT": "Cloisons", "INFO_CLOISONS_TITRE": "Passe à bassins : Cloisons", - "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "Les modules suivants dépendent de celui que vous êtes en train de fermer :", + "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "Les modules suivants dépendent de celui que vous êtes en train de fermer :", "INFO_CLOSE_DIALOGUE_TEXT": "Attention ! Les paramètres et résultats du module de calcul seront perdus.", "INFO_CLOSE_DIALOGUE_TITRE": "Fermeture du module de calcul", "INFO_CONCENTRATIONBLOCS_TITRE": "Concentration de blocs", + "INFO_CONCENTRATIONBLOCS_DESCRIPTION": "passe macro rugosités naturelle poisson", "INFO_CONCENTRATIONBLOCS_TITRE_COURT": "Conc. blocs", + "INFO_CONDUITEDISTRIBUTRICE_DESCRIPTION": "hydraulique en charge Blasius", "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "Conduite distri.", "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Conduite distributrice", + "INFO_COURBEREMOUS_DESCRIPTION": "hydraulique à surface libre régime écoulement fluvial torrentiel ressaut", "INFO_COURBEREMOUS_TITRE_COURT": "Remous", "INFO_COURBEREMOUS_TITRE": "Courbes de remous", + "INFO_DEVER_DESCRIPTION": "seuil vitesse d'approche charge hydraulique", "INFO_DEVER_TITRE_COURT": "Déver. dénoyés", "INFO_DEVER_TITRE": "Lois de déversoirs dénoyés", "INFO_DIAGRAM_SOLVEUR_FINDS": "trouve", "INFO_DIAGRAM_SOLVEUR_READS": "lit", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_PASS": "vérifie la passe", + "INFO_DIAGRAM_VERIFICATEUR_VERIFIES_SPECIES": "vérifie l'espèce", "INFO_DIAGRAM_TITLE": "Diagramme des modules de calcul", "INFO_DIAGRAM_DRAWING_ERROR": "Erreur lors du dessin du diagramme", "INFO_DIAGRAM_CALCULATED_PARAM": "paramètre calculé", @@ -105,8 +119,8 @@ "INFO_DIALOG_COMPUTED_VALUE_TITLE": "Modifier la valeur initiale", "INFO_DIALOG_EDIT_PAB_INTERPOLATION_BOUNDS": "entre %s et %s", "INFO_DIALOG_EDIT_PAB_N_DEVICES": "%s ouvrage(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s cloison(s) : %s ouvrage(s)", - "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s cloison(s) + %s ouvrage(s) : %s ouvrages", + "INFO_DIALOG_EDIT_PAB_N_WALLS": "%s cloison(s) : %s ouvrage(s)", + "INFO_DIALOG_EDIT_PAB_N_WALLS_P_DEVICES": "%s cloison(s) + %s ouvrage(s) : %s ouvrages", "INFO_DIALOG_EDIT_PAB_OPTION_VARIABLE": "Variable à modifier", "INFO_DIALOG_EDIT_PAB_OPTION_SET_VALUE": "Valeur fixe", "INFO_DIALOG_EDIT_PAB_OPTION_DELTA": "Delta", @@ -116,7 +130,7 @@ "INFO_DIALOG_ERROR_LOADING_FILE": "La syntaxe du fichier semble incorrecte", "INFO_DIALOG_FILE_IS_EMPTY": "Le fichier ne contient aucun module", "INFO_DIALOG_FIX_MISSING_DEPENDENCIES": "Résoudre les dépendances", - "INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "Mauvaise version du format de fichier (fichier: %s, jalhyd: %s)", + "INFO_DIALOG_FORMAT_VERSIONS_MISMATCH": "Mauvaise version du format de fichier (fichier : %s, jalhyd : %s)", "INFO_DIALOG_LOAD_SESSION_FILENAME": "Choisir un fichier", "INFO_DIALOG_LOAD_SESSION_TITLE": "Charger des modules de calcul", "INFO_DIALOG_PAB_NB": "Nombre de chutes", @@ -139,6 +153,26 @@ "INFO_ENUM_OUVRAGE_Q_REGIME_3": "Débit nul", "INFO_ENUM_PARFLOWREGIME_0": "Dénoyé", "INFO_ENUM_PARFLOWREGIME_1": "Noyé", + "INFO_ENUM_SPECIES_1": "Saumon, truite [50-100] (1)", + "INFO_ENUM_SPECIES_2": "Mulets (2)", + "INFO_ENUM_SPECIES_3a": "Grande Alose (3a)", + "INFO_ENUM_SPECIES_3b": "Alose feinte (3b)", + "INFO_ENUM_SPECIES_3c": "Lamproie marine (3c)", + "INFO_ENUM_SPECIES_4a": "Truite [25-55] (4a)", + "INFO_ENUM_SPECIES_4b": "Truite de rivière [15-30] (4b)", + "INFO_ENUM_SPECIES_5": "Aspe, brochet (5)", + "INFO_ENUM_SPECIES_6": "Ombre commun (6)", + "INFO_ENUM_SPECIES_7a": "Barbeau, chevaine, hotu (7a)", + "INFO_ENUM_SPECIES_7b": "Lamproie fluviatile (7b)", + "INFO_ENUM_SPECIES_8a": "Carpe commune (8a)", + "INFO_ENUM_SPECIES_8b": "Brème commune, sandre (8b)", + "INFO_ENUM_SPECIES_8c": "Brème bordelière, ide, lotte, perche, tanche (8c)", + "INFO_ENUM_SPECIES_8d": "Vandoises (8d)", + "INFO_ENUM_SPECIES_9a": "Ablette, blageon, carrassin, gardon... (9a)", + "INFO_ENUM_SPECIES_9b": "Apron, chabots, goujons, loche... (9b)", + "INFO_ENUM_SPECIES_10": "Able, bouvière, épinoche(tte), vairons (10)", + "INFO_ENUM_SPECIES_11a": "Anguille européenne [jaune] (11a)", + "INFO_ENUM_SPECIES_11b": "Anguille européenne [civelle] (11b)", "INFO_ENUM_STRUCTUREFLOWMODE_0": "Surface libre", "INFO_ENUM_STRUCTUREFLOWMODE_1": "En charge", "INFO_ENUM_STRUCTUREFLOWMODE_2": "Débit nul", @@ -146,9 +180,9 @@ "INFO_ENUM_STRUCTUREFLOWREGIME_1": "Partiellement noyé", "INFO_ENUM_STRUCTUREFLOWREGIME_2": "Noyé", "INFO_ENUM_STRUCTUREFLOWREGIME_3": "Débit nul", - "INFO_ENUM_STRUCTUREJETTYPE_0": "Sans objet", - "INFO_ENUM_STRUCTUREJETTYPE_1": "Plongeant", - "INFO_ENUM_STRUCTUREJETTYPE_2": "De surface", + "INFO_ENUM_STRUCTUREJETTYPE_0": "plongeant", + "INFO_ENUM_STRUCTUREJETTYPE_1": "de surface", + "INFO_ENUM_STRUCTUREJETTYPE_2": "sans objet", "INFO_CHART_BUTTON_TITLE_RESET_ZOOM": "Réinitialiser le zoom", "INFO_CHART_BUTTON_TITLE_EXPORT_IMAGE": "Enregistrer l'image", "INFO_CHART_BUTTON_TITLE_ENTER_FS": "Afficher en plein écran", @@ -183,8 +217,10 @@ "INFO_FIELDSET_MOVE_DOWN": "Déplacer vers le bas", "INFO_FIELDSET_MOVE_LEFT": "Déplacer vers la gauche", "INFO_FIELDSET_MOVE_RIGHT": "Déplacer vers la droite", + "INFO_GRILLE_DESCRIPTION": "dévalaison plan orientée inclinée conventionnelle centrale hydroélectrique", "INFO_GRILLE_TITRE_COURT": "Grille", "INFO_GRILLE_TITRE": "Perte de charge, grille de prise d'eau", + "INFO_JET_DESCRIPTION": "dévalaison prises d'eau icthyocompatibles centrale hydroélectrique balistique", "INFO_JET_TITRE_COURT": "Jet", "INFO_JET_TITRE": "Trajectoire et impact d'un jet", "INFO_WALL_ADDED": "1 cloison ajoutée", @@ -198,6 +234,7 @@ "INFO_JET_TITRE_TRAJECTOIRE": "Trajectoire", "INFO_JET_TITRE_TRAJECTOIRE_ET_COTE_EAU": "Trajectoire et cote de l'eau", "INFO_JET_FOND": "Fond", + "INFO_LECHAPTCALMON_DESCRIPTION": "Hydraulique en charge conduite colebrook", "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.", "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon", "INFO_LIB_ABSCISSE": "Abscisse (m)", @@ -234,12 +271,12 @@ "INFO_LIB_CLOISON": "Cloison n°", "INFO_LIB_COTE": "Cote (m)", "INFO_LIB_COTE_VANNE_LEVANTE": "Cote vanne levante", - "INFO_LIB_CV": "Cv: Coefficient de vitesse d'approche", - "INFO_LIB_CVQT": "CV.QT: Débit corrigé", + "INFO_LIB_CV": "Cv : Coefficient de vitesse d'approche", + "INFO_LIB_CVQT": "CV.QT : Débit corrigé", "INFO_LIB_DH": "Chute", - "INFO_LIB_DHR": "DHR: Chute résiduelle", + "INFO_LIB_DHR": "DHR : Chute résiduelle", "INFO_LIB_DISTANCE_AMONT": "Distance depuis l'amont (m)", - "INFO_LIB_EC": "EC: Énergie cinétique", + "INFO_LIB_EC": "EC : Énergie cinétique", "INFO_LIB_ENUM_MACRORUGOFLOWTYPE": "Type d'écoulement", "INFO_LIB_ENUM_PARFLOWREGIME": "Régime", "INFO_LIB_FLU": "Ligne d'eau fluviale", @@ -329,6 +366,21 @@ "INFO_LIB_ZRAM": "Cote du radier amont", "INFO_LIB_ZRMB": "Cote de radier mi-bassin", "INFO_LIB_ZT": "Cote haute du triangle", + "INFO_LIB_DHMAXS": "Chute maximale", + "INFO_LIB_DHMAXP": "Chute maximale", + "INFO_LIB_BMIN": "Largeur minimale de fente ou échancrure latérale", + "INFO_LIB_PMINS": "Profondeur minimale de bassin", + "INFO_LIB_PMINP": "Profondeur minimale de bassin", + "INFO_LIB_LMINS": "Longueur minimale de bassin", + "INFO_LIB_LMINP": "Longueur minimale de bassin", + "INFO_LIB_HMIN": "Charge minimale sur l'échancrure", + "INFO_LIB_YMIN": "Tirant d'eau minimal", + "INFO_LIB_VEMAX": "Vitesse d'écoulement maximale", + "INFO_LIB_YMINSB": "Tirant d'eau minimal sur les ralentisseurs suractifs de fond", + "INFO_LIB_YMINPB": "Tirant d'eau minimal sur les ralentisseurs plans", + "INFO_LIB_PVMAX": "Puissance volumique dissipée maximale", + "INFO_LIB_PVMAXPREC": "Puissance volumique dissipée maximale recommandée", + "INFO_LIB_PVMAXLIM": "Puissance volumique dissipée maximale limite", "INFO_LIB_PAB_CHART_SEUILS": "Seuils (%s)", "INFO_LINKED_VALUE_CHILD": "%s (%s, %s %s)", "INFO_LINKED_VALUE_EXTRA_RESULT_OF": "%s (%s)", @@ -336,21 +388,27 @@ "INFO_LINKED_VALUE_RESULT": "%s (%s)", "INFO_LINKED_VALUE_SECTION_RESULT": "%s (%s, section)", "INFO_LINKED_VALUE_SECTION": "%s (%s, section)", + "INFO_LOG_HIDE_DETAILS": "masquer les details", + "INFO_LOG_SHOW_DETAILS": "montrer les details", + "INFO_MACRORUGO_DESCRIPTION": "poisson naturelle bloc", "INFO_MACRORUGO_TITRE_COURT": "Macro-rugo.", "INFO_MACRORUGO_TITRE": "Passe à macro-rugosités", "INFO_MENU_DIAGRAM_TITLE": "Diagramme des modules", "INFO_MACRORUGOCOMPOUND_TITRE": "Passe à macro-rugosités complexe", + "INFO_MACRORUGOCOMPOUND_DESCRIPTION": "poisson naturelle bloc radiers multiples incliné", "INFO_MACRORUGOCOMPOUND_TITRE_COURT": "M-Rugo complexe", "INFO_MACRORUGOCOMPOUND_LINCL": "Dévers latéral (m/m) :", "INFO_ONLY_Q_MAY_VARY": "Seul le débit peut varier", "INFO_ONLY_Z1_Q_MAY_VARY": "Seuls la cote amont et le débit peuvent varier", "INFO_Z1_Z2_MUST_BE_DEFINED": "Les cotes amont et aval doivent être définies", "INFO_PENTE_TITRE": "Pente", + "INFO_PENTE_DESCRIPTION": "hydraulique à surface libre dénivelé", "INFO_PENTE_TITRE_COURT": "Pente", "INFO_MENU_EMPTY_SESSION_TITLE": "Nouvelle session", "INFO_MENU_HELP_TITLE": "Aide", "INFO_MENU_LOAD_SESSION_TITLE": "Charger une session", "INFO_MENU_NOUVELLE_CALC": "Nouveau module de calcul", + "INFO_MENU_RECHERCHE_MODULES": "Rechercher des modules", "INFO_MENU_REPORT_BUG": "Signaler un problème", "INFO_MENU_RESTORE_DEFAULT_SETTINGS": "Paramètres par défaut", "INFO_MENU_SAVE_SESSION_TITLE": "Enregistrer la session", @@ -393,28 +451,37 @@ "INFO_PAB_LOIDEBIT_VANLEVVILLEMONTE": "Échancrure régulée (Villemonte)", "INFO_PAB_LOIDEBIT_WEIRVILLEMONTE": "Échancrure (Villemonte)", "INFO_PARAMETRES_FIXES": "Tous les paramètres doivent être fixés", + "INFO_PAB_DESCRIPTION": "poisson échelle", "INFO_PAB_TITRE_COURT": "PAB", "INFO_PAB_TITRE": "Passe à bassins", "INFO_PAB_TITRE_PROFIL": "Profil en long de la passe", "INFO_PAB_TABLE": "Géométrie de la passe", + "INFO_PABCHUTE_DESCRIPTION": "échelle poisson", "INFO_PABCHUTE_TITRE_COURT": "PAB : chute", "INFO_PABCHUTE_TITRE": "Passe à bassins : chute", + "INFO_PABDIMENSIONS_DESCRIPTION": "échelle poisson", "INFO_PABDIMENSIONS_TITRE_COURT": "PAB : dimensions", "INFO_PABDIMENSIONS_TITRE": "Passe à bassins : dimensions", + "INFO_PABNOMBRE_DESCRIPTION": "échelle poisson", "INFO_PABNOMBRE_TITRE_COURT": "PAB : nombre", "INFO_PABNOMBRE_TITRE": "Passe à bassins : nombre de chutes", + "INFO_PABPUISSANCE_DESCRIPTION": "échelle poisson", "INFO_PABPUISSANCE_TITRE_COURT": "PAB : puissance", "INFO_PABPUISSANCE_TITRE": "Passe à bassins : puissance dissipée", + "INFO_PARALLELSTRUCTURE_DESCRIPTION": "orifice vanne seuil déversoir noyé dénoyé débit", "INFO_PARALLELSTRUCTURE_TITRE_COURT": "Ouvrages", "INFO_PARALLELSTRUCTURE_TITRE": "Lois d'ouvrages", "INFO_PAR_TITRE": "Passe à ralentisseurs : calage", + "INFO_PAR_DESCRIPTION": "plans Denil Fatou fonds suractifs mixte chevrons canoë", "INFO_PAR_TITRE_COURT": "PAR : calage", "INFO_PARSIMULATION_TITRE": "Passe à ralentisseurs : simulation", + "INFO_PARSIMULATION_DESCRIPTION": "plans Denil Fatou fonds suractifs mixte chevrons canoë", "INFO_PARSIMULATION_TITRE_COURT": "PAR : simulation", "INFO_PARAMFIELD_AWAITING_CALCULATION": "En attente de calcul", "INFO_PARAMFIELD_BOUNDARY_CONDITIONS": "Conditions aux limites", "INFO_PARAMFIELD_CALCULATED": "Calculé", "INFO_PARAMFIELD_CALCULATION_FAILED": "Échec du calcul", + "INFO_PARAMFIELD_CANNOT_CALC_LINKS_LOOP": "Ce paramètre ne peut être calculé (boucle dans les liens)", "INFO_PARAMFIELD_CHART_SELECT_X_AXIS": "Variable en abscisse", "INFO_PARAMFIELD_CHART_SELECT_Y_AXIS": "Variable en ordonnée", "INFO_PARAMFIELD_CHART_TYPE_HISTOGRAM": "Histogramme", @@ -431,16 +498,16 @@ "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_REPEAT_LAST": "Répéter la dernière valeur", "INFO_PARAMFIELD_PARAMVARIER_EXT_STRATEGY_RECYCLE": "Réutiliser les valeurs", "INFO_PARAMFIELD_PARAMVARIER_IMPORT_FICHIER": "Importer un fichier", - "INFO_PARAMFIELD_PARAMVARIER_MINMAXSTEP": "min : %s, max : %s, pas : %s", + "INFO_PARAMFIELD_PARAMVARIER_MINMAXSTEP": "min : %s, max : %s, pas : %s", "INFO_PARAMFIELD_PARAMVARIER_MODE": "Mode", "INFO_PARAMFIELD_PARAMVARIER_SEPARATEUR_DECIMAL": "Séparateur décimal", "INFO_PARAMFIELD_PARAMVARIER_SEPARATEUR_POINT": ". (point)", "INFO_PARAMFIELD_PARAMVARIER_SEPARATEUR_VIRGULE": ", (virgule)", "INFO_PARAMFIELD_PARAMVARIER_SHOW_CHART": "Afficher le graphique des valeurs", "INFO_PARAMFIELD_PARAMVARIER_TITLE": "Valeurs multiples", - "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT_ERROR": "Format incorrect; séparateurs acceptés: %s", + "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT_ERROR": "Format incorrect; séparateurs acceptés : %s", "INFO_PARAMFIELD_PARAMVARIER_VALUES_FORMAT": "Liste de valeurs", - "INFO_PARAMFIELD_PARAMVARIER_VALUES": "Valeurs :", + "INFO_PARAMFIELD_PARAMVARIER_VALUES": "Valeurs :", "INFO_PARAMFIELD_PARAMVARIER": "varier", "INFO_PARAMFIELD_PASVARIATION": "Avec un pas de", "INFO_PARAMFIELD_VALEURMAXI": "À la valeur maximum", @@ -451,7 +518,8 @@ "INFO_QUICKNAV_CHARTS": "graphiques", "INFO_QUICKNAV_INPUT": "données", "INFO_QUICKNAV_RESULTS": "résultats", - "WARNING_PROBLEMS_ENCOUNTERED": "Des problèmes sont survenus durant le calcul (info: %info%, avertissement: %warning%, erreur: %error%)", + "WARNING_PROBLEMS_ENCOUNTERED": "Des problèmes sont survenus durant le calcul (info : %info%, avertissement : %warning%, erreur : %error%)", + "INFO_REGIMEUNIFORME_DESCRIPTION": "hydraulique à surface libre hauteur normale", "INFO_REGIMEUNIFORME_TITRE_COURT": "R. uniforme", "INFO_REGIMEUNIFORME_TITRE": "Régime uniforme", "INFO_REMOUS_CALCUL_FLUVIAL": "Condition limite aval >= Hauteur critique : calcul de la partie fluviale à partir de l'aval", @@ -467,17 +535,21 @@ "INFO_REMOUSRESULTS_TIRANT": "Tirant d'eau (m)", "INFO_REMOUSRESULTS_TIRANTCRITIQUE": "Tirant d'eau critique", "INFO_REMOUSRESULTS_TIRANTNORMAL": "Tirant d'eau normal", - "INFO_REPORT_BUG_BODY": "Ceci est un rapport d'erreur.\n\nMerci de décrire rapidement ci-dessous le problème rencontré, et les étapes qui vous y ont mené :\n\n\n\n\n--- État de la session en cours - ne pas modifier le texte ci-dessous ---\n--------------------------------------------------------------------------------------------\n\n", + "INFO_REPORT_BUG_BODY": "Ceci est un rapport d'erreur.\n\nMerci de décrire rapidement ci-dessous le problème rencontré, et les étapes qui vous y ont mené:\n\n\n\n\n--- État de la session en cours - ne pas modifier le texte ci-dessous ---\n--------------------------------------------------------------------------------------------\n\n", "INFO_REPORT_BUG_SUBJECT": "Rapport d'erreur", "INFO_REQUIRES": "dépend de", "INFO_RESULTS_EXPORT_AS_SPREADSHEET": "Exporter en XLSX", + "INFO_SEARCH_NO_RESULT": "Aucun résultat", + "INFO_SECTIONPARAMETREE_DESCRIPTION": "hydraulique à surface libre canal chenal bief rectangulaire circulaire puissance trapézoïdale périmètre charge mouillée rugosité hauteur charge critique normal conjuguée correspondante fluvial torrentiel Froude", "INFO_SECTIONPARAMETREE_TITRE_COURT": "Sec. param.", "INFO_SECTIONPARAMETREE_TITRE": "Section paramétrée", + "INFO_SELECT_MULTIPLE_AND_OTHER": "autre", + "INFO_SELECT_MULTIPLE_AND_OTHERS": "autres", "INFO_SETUP_ENABLE_HOTKEYS": "Activer les raccourcis clavier", "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Créer les nouveaux modules avec des champs vides (aucune valeur par défaut)", "INFO_SETUP_ENABLE_NOTIFICATIONS": "Activer les notifications à l'écran", "INFO_SETUP_LANGUAGE": "Langue", - "INFO_SETUP_NEWTON_MAX_ITER": "Solveur : nombre d'itérations maximum", + "INFO_SETUP_NEWTON_MAX_ITER": "Solveur : nombre d'itérations maximum", "INFO_SETUP_PRECISION_AFFICHAGE": "Nombre de décimales affichées", "INFO_SETUP_PRECISION_CALCUL": "Précision de calcul", "INFO_SETUP_RESTORE_DEFAULT_VALUES": "Restaurer les valeurs par défaut", @@ -491,8 +563,10 @@ "INFO_SNACKBAR_RESULTS_INVALIDATED": "Résultats invalidés pour", "INFO_SNACKBAR_SETTINGS_SAVED": "Paramètres enregistrés sur cet appareil", "INFO_SOLVEUR_TITRE": "Solveur multimodule", + "INFO_SOLVEUR_DESCRIPTION": "", "INFO_SOLVEUR_TITRE_COURT": "Solveur", "INFO_SPP_TITRE": "Somme et produit de puissances", + "INFO_SPP_DESCRIPTION": "plus fois", "INFO_SPP_TITRE_COURT": "SPP", "INFO_THEME_CREDITS": "Crédit", "INFO_THEME_DEVALAISON_TITRE": "Dévalaison", @@ -513,6 +587,8 @@ "INFO_THEME_PASSE_A_RALENTISSEURS_DESCRIPTION": "Passe à ralentisseurs", "INFO_THEME_PASSE_NATURELLE_DESCRIPTION": "Outils de dimensionnement d'une passe à poissons de type passe naturelle ou encore appelée passe à macro-rugosités", "INFO_THEME_PASSE_NATURELLE_TITRE": "Passe naturelle", + "INFO_THEME_VERIFICATION_DESCRIPTION": "Outils de vérification des capacités de franchissement des passes par les différentes espèces de poissons", + "INFO_THEME_VERIFICATION_TITRE": "Vérification de passes", "INFO_TITREJOURNAL": "Journal de calcul", "INFO_TITREJOURNAL_GLOBAL": "Synthèse du journal de calcul", "INFO_WELCOME_CONTENT": "<p>Le logiciel Cassiopée a été développé par le pôle R&D écohydraulique regroupant l'<a href=\"https://ofb.gouv.fr\" target=\"_blank\">OFB</a> (Office Français de la Biodiversité) et l’<a href=\"https://www.imft.fr\" target=\"_blank\">IMFT</a> (Institut de mécanique des fluides de Toulouse) et par l'<a href=\"http://g-eau.fr\" target=\"_blank\">UMR G-EAU</a> (UMR Gestion de l'Eau, Acteurs, Usages).</p><p>Il regroupe des outils d'aide à la conception des dispositifs de franchissement piscicoles pour la montaison et la dévalaison ainsi que des outils de calcul hydraulique utiles pour l'ingénierie en environnement et agriculture.</p><p>Pour plus d'informations, consulter les <a href=\"assets/docs/fr/mentions_legales.html\" target=\"_blank\">mentions légales</a> et la <a href=\"assets/docs/fr/index.html\" target=\"_blank\">documentation</a>.</p>", @@ -526,9 +602,23 @@ "INFO_EXAMPLES_TITLE": "Exemples", "INFO_EXAMPLES_SUBTITLE": "Charger des exemples types", "INFO_YAXB_TITRE": "Fonction affine", + "INFO_YAXB_DESCRIPTION": "addition plus soustraction moins multiplication division", "INFO_YAXB_TITRE_COURT": "F. affine", "INFO_TRIGO_TITRE": "Fonction trigonométrique", + "INFO_TRIGO_DESCRIPTION": "cosinus sinus tangente arc", "INFO_TRIGO_TITRE_COURT": "F. trigo.", + "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces", + "INFO_VERIF_VARYING_OK": "Les critères de franchissement sont remplis pour toutes les espèces et toutes les modalités de la passe", + "WARNING_VERIF_OK_BUT": "Les critères de franchissement sont remplis pour toutes les espèces, mais il y a des avertissements", + "WARNING_VERIF_VARYING_OK_BUT": "Seules certaines modalités de la passe sont franchissables", + "INFO_VERIFICATEUR_CUSTOM_SPECIES": "Espèce personnalisée : %s", + "INFO_VERIFICATEUR_SPECIES_GROUP": "Groupe d'espèces", + "INFO_VERIFICATEUR_TITRE": "Vérification d'une passe", + "INFO_VERIFICATEUR_DESCRIPTION": "ichtyocompatible", + "INFO_VERIFICATEUR_TITRE_COURT": "Vérification", + "INFO_ESPECE_TITRE": "Caractéristiques d'une espèce", + "INFO_ESPECE_DESCRIPTION": "ichtyocompatible", + "INFO_ESPECE_TITRE_COURT": "Espèce", "WARNING_WARNINGS_ABSTRACT": "%nb% avertissements rencontrés lors du calcul", "ERROR_JET_SUBMERGED_NO_SOLUTION": "Il n'y a pas de solution", "WARNING_DEVER_ZDV_INF_ZR": "La cote de radier de l'ouvrage n°%number% est sous la cote de fond du lit", @@ -540,19 +630,20 @@ "WARNING_STRUCTUREKIVI_PELLE_TROP_FAIBLE": "La pelle du seuil doit mesurer au moins 0,1 m. Le coefficient béta est forcé à 0", "WARNING_VANLEV_ZDV_INF_MIN": "Seuil régulé : cote minimale de seuil atteinte", "WARNING_VANLEV_ZDV_SUP_MAX": "Seuil régulé : cote maximale de seuil atteinte", - "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Préconisation pour le guidage des poissons : α ≤ 45°", - "WARNING_GRILLE_BETA_GREATER_THAN_26": "Préconisation pour le guidage des poissons : β ≤ 26°", - "WARNING_GRILLE_VN_GREATER_THAN_05": "Préconisation pour éviter le placage des poissons sur le plan de grille (barrière physique) ou leur passage prématuré au travers (barrière comportementale) : VN ≤ 0.5 m/s.<br>Au-delà de la valeur moyenne calculée ici, se reporter aux préconisations tirées de la caractérisation expérimentale des valeurs effectives de vitesses.", + "WARNING_GRILLE_ALPHA_GREATER_THAN_45": "Préconisation pour le guidage des poissons : α ≤ 45°", + "WARNING_GRILLE_BETA_GREATER_THAN_26": "Préconisation pour le guidage des poissons : β ≤ 26°", + "WARNING_GRILLE_VN_GREATER_THAN_05": "Préconisation pour éviter le placage des poissons sur le plan de grille (barrière physique) ou leur passage prématuré au travers (barrière comportementale) : VN ≤ 0.5 m/s.<br>Au-delà de la valeur moyenne calculée ici, se reporter aux préconisations tirées de la caractérisation expérimentale des valeurs effectives de vitesses.", + "WARNING_GRILLE_O_LOWER_THAN_OB": "L'obstruction totale (saisie) est inférieure à l'obstruction due aux barreaux seulement (calculée)", "WARNING_LECHAPT_CALMON_SPEED_OUTSIDE_04_2": "Cette formule n'est pas conseillée pour une vitesse non comprise entre 0.4 et 2 m/s", "WARNING_UPSTREAM_BOTTOM_HIGHER_THAN_WATER": "La cote de l'eau à l'amont est plus basse ou égale à la cote de fond", "WARNING_DOWNSTREAM_BOTTOM_HIGHER_THAN_WATER": "La cote de l'eau à l'aval est plus basse ou égale à la cote de fond", "WARNING_NEGATIVE_SILL": "La pelle du seuil devrait être positive", "WARNING_RAMP_WIDTH_LOWER_THAN_PATTERN_WIDTH": "La largeur de la rampe devrait comprendre au moins un motif de plot (%pattern%m)", "WARNING_RAMP_WIDTH_NOT_MULTIPLE_OF_HALF_PATTERN_WIDTH": "La largeur de la rampe devrait être un multiple d'un demi motif (%halfPattern%m). Les valeurs voisines sont %lower% et %higher%", - "WARNING_YN_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "Hauteur normale: pente négative ou nulle, hauteur normale infinie", - "WARNING_YN_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Hauteur normale: non convergence du calcul (méthode de Newton)", - "WARNING_SECTION_OVERFLOW": "Débordement: la cote de l'eau dépasse la cote de berge", - "WARNING_SECTION_OVERFLOW_ABSC": "Débordement: la cote de l'eau dépasse la cote de berge entre les abscisses %xa% et %xb%", + "WARNING_YN_SECTION_PENTE_NEG_NULLE_HNORMALE_INF": "Hauteur normale : pente négative ou nulle, hauteur normale infinie", + "WARNING_YN_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE": "Hauteur normale : non convergence du calcul (méthode de Newton)", + "WARNING_SECTION_OVERFLOW": "Débordement : la cote de l'eau dépasse la cote de berge", + "WARNING_SECTION_OVERFLOW_ABSC": "Débordement : la cote de l'eau dépasse la cote de berge entre les abscisses %xa% et %xb%", "WARNING_SESSION_LOAD_NOTES_MERGED": "Les notes ont été fusionnées", "WARNING_VALUE_ROUNDED_TO_INTEGER": "La valeur de %symbol% a été arrondie à %rounded%", "WARNING_VARIATED_LENGTH_LIMITED_BY_LINKED_RESULT": "Le nombre de résultats est limité par le résultat lié %symbol%", @@ -571,5 +662,52 @@ "WARNING_PAR_NOT_SUBMERGED": "Ennoiement par l'aval insuffisant : chute au niveau du dernier ralentisseur aval (%DH% m).", "ERROR_PAR_M_GREATER_THAN_2_N": "Le nombre de bandes dépasse 2N = %max%", "INFO_PARENT_PREFIX": "%name% n°%position% : ", - "INFO_PARENT_PREFIX_DOWNWALL": "cloison aval : " + "INFO_PARENT_PREFIX_DOWNWALL": "cloison aval : ", + "ERROR_VERIF_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs", + "ERROR_VERIF_VARYING_ERRORS_IN_PASS": "La passe à vérifier contient des erreurs à l'itération %i%", + "ERROR_VERIF_MISSING_CRITERION": "Le critère %var_criterion% doit être défini", + "ERROR_VERIF_MR_VMAX": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", + "ERROR_VERIF_MR_PVMAX": "Puissance dissipée %PV% trop élevée (maximum : %maxPV%)", + "ERROR_VERIF_MR_YMIN": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", + "ERROR_VERIF_MRC_AT_LEAST_ONE_APRON": "Aucun des radiers n'est franchissable", + "ERROR_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable %width% m est inférieure à la largeur d'un motif de blocs %patternWidth% m", + "WARNING_VERIF_MRC_VMAX_APRON_N": "Vitesse maximale %V% trop élevée (maximum : %maxV%)", + "WARNING_VERIF_MRC_YMIN_APRON_N": "Tirant d'eau %Y% insuffisant (minimum : %minY%)", + "INFO_VERIF_MRC_CROSSABLE_WIDTH": "La largeur franchissable maximale est %width% m", + "ERROR_VERIF_NO_PRESET": "Ce groupe d'espèces n'est pas compatible avec ce type de passe", + "ERROR_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Jet plongeant non supporté", + "WARNING_VERIF_PAB_DIVING_JET_NOT_SUPPORTED": "Jet plongeant non supporté", + "ERROR_VERIF_PAB_DHMAX": "Chute %DH% trop importante (maximum pour jet de surface : %maxDHS%, maximum pour jet plongeant : %maxDHP%)", + "ERROR_VERIF_PAB_DHMAX_JET": "Chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", + "WARNING_VERIF_PAB_DHMAX_JET": "Chute %DH% trop importante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (maximum : %maxDH%)", + "ERROR_VERIF_PAB_BMIN": "Largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "WARNING_VERIF_PAB_BMIN": "Largeur de l'échancrure ou de la fente %L% insuffisante (minimum : %minB%)", + "ERROR_VERIF_PAB_LMIN": "Longueur de bassin %LB% insuffisante (minimum pour jet de surface : %minLBS%, minimum pour jet plongeant : %minLBP%)", + "ERROR_VERIF_PAB_LMIN_JET": "Longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", + "WARNING_VERIF_PAB_LMIN_JET": "Longueur de bassin %LB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minLB%)", + "WARNING_VERIF_PAB_HMIN": "Charge sur l'échancrure %h1% insuffisante (minimum : %minH%)", + "ERROR_VERIF_PAB_SMIN": "Surface de l'orifice %S% insuffisante (minimum : %minS%)", + "WARNING_VERIF_PAB_SMIN": "Surface de l'orifice %S% insuffisante (minimum : %minS%)", + "ERROR_VERIF_PAB_YMOY": "Profondeur de bassin %PB% insuffisante (minimum pour jet de surface : %minPBS%, minimum pour jet plongeant : %minPBP%)", + "ERROR_VERIF_PAB_YMOY_JET": "Profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", + "WARNING_VERIF_PAB_YMOY_JET": "Profondeur de bassin %PB% insuffisante pour le jet ENUM_STRUCTUREJETTYPE_%jetType% (minimum : %minPB%)", + "ERROR_VERIF_PAB_YMOY_2_DH": "Profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "WARNING_VERIF_PAB_YMOY_2_DH": "Profondeur de bassin %PB% inférieure à 2x la chute %DH%", + "ERROR_VERIF_PAB_PVMAX": "Puissance dissipée %PV% trop élevée (maximum : %maxPV%)", + "ERROR_VERIF_PAR_DH": "La chute en pied de passe empêche le franchissement", + "ERROR_VERIF_PAR_SLOPE": "La pente %S% m est trop élevée (maximum : %maxS% m)", + "ERROR_VERIF_PAR_YMIN": "Tirant d'eau %h% insuffisant (minimum : %minY%)", + "ERROR_VERIF_KO": "Le franchissement est impossible pour au moins un groupe d'espèces", + "ERROR_VERIF_VARYING_KO": "Le franchissement est impossible pour au moins un groupe d'espèces, pour toutes les modalités de la passe", + "ERROR_VERIF_SPECIES_GROUP_KO": "ENUM_%speciesGroup% : franchissement impossible", + "WARNING_VERIF_PAB_PVMAX": "Puissance dissipée %PV% très élevée (recommandée : %maxPV%)", + "WARNING_VERIF_PAB_ORIFICE": "Franchissement non assuré sur un orifice", + "WARNING_VERIF_SPECIES_GROUP_OK_BUT": "ENUM_%speciesGroup% : OK, avec des avertissements", + "INFO_VERIF_SPECIES_GROUP_OK": "ENUM_%speciesGroup% : OK", + "ERROR_VERIF_SPECIES_NUB_KO": "FORM_ID_%uid% : franchissement impossible", + "WARNING_VERIF_SPECIES_NUB_OK_BUT": "FORM_ID_%uid% : OK, avec des avertissements", + "INFO_VERIF_SPECIES_NUB_OK": "FORM_ID_%uid% : OK", + "ERROR_VERIF_PAB_WALL_NOT_CROSSABLE": "La cloison n°%N% n'est pas franchissable", + "ERROR_VERIF_PAB_DW_NOT_CROSSABLE": "La cloison aval n'est pas franchissable", + "WARNING_VERIF_PAR_SPECIES_GROUP": "Les groupes d'espèces 3a, 3b et 7b sont déconseillés pour ce type de passe" } diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json index 9234a4d8573413cabb45579973c8c163a6a9c9ae..4b005758f158814d0af3f021346691a1f63af6bd 100644 --- a/src/tsconfig.app.json +++ b/src/tsconfig.app.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../out-tsc/app", "baseUrl": "./", diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json index c89454bef9592fa21b59eaa5730c8395820dee56..b019e30f99fa0fa87af47ab31a47b5856723fd89 100644 --- a/src/tsconfig.spec.json +++ b/src/tsconfig.spec.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "outDir": "../out-tsc/spec", "baseUrl": "./", diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000000000000000000000000000000000000..c7b9c98225d8d541f6a9040576e2b43ab937338e --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,26 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "downlevelIteration": true, + "importHelpers": true, + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es2015", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ], + "module": "es2020", + "baseUrl": "./" + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index c7818722ce5b24463a6c4915b6331cf8e5a87176..26abde9a1b5fd5d0428b14e8d235652e064ed061 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,26 +1,17 @@ +/* + This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience. + It is not intended to be used to perform a compilation. + + To learn more about this file see: https://angular.io/config/solution-tsconfig. +*/ { - "compileOnSave": false, - "compilerOptions": { - "downlevelIteration": true, - "importHelpers": true, - "outDir": "./dist/out-tsc", - "sourceMap": true, - "declaration": false, - "moduleResolution": "node", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "target": "es2015", - "typeRoots": [ - "node_modules/@types" - ], - "lib": [ - "es2017", - "dom" - ], - "module": "esnext", - "baseUrl": "./" - }, - "include": [ - "src/**/*.ts" + "files": [], + "references": [ + { + "path": "./src/tsconfig.app.json" + }, + { + "path": "./src/tsconfig.spec.json" + } ] } \ No newline at end of file diff --git a/tslint.json b/tslint.json index 71feb2734a60c4a435b638660a5406bd12579b0d..d3695322d3894e3f50862c4c61a6c1590f815b11 100644 --- a/tslint.json +++ b/tslint.json @@ -11,6 +11,9 @@ "check-space" ], "curly": true, + "deprecation": { + "severity": "warning" + }, "eofline": true, "forin": false, "import-blacklist": [