component
0402ZD105KAT2A - KYOCERA AVX
Public Made by Adomby adom
MLCC 1 uF +/-10 %, 10 V, X5R, 0402 (1005 metric)
← Commit history
Add adom-hero 1.4 hero GLB and Altium libraries; refresh records
14 files changed
+16737−10
0402zd105kat2a-hero.glb0402zd105kat2a-hero.overlay.json+125LICENSE+2−1README.md+11altium/0402ZD105KAT2A.PcbLibaltium/0402ZD105KAT2A.SchLibaltium/0402ZD105KAT2A.adom-lbr.json+232docs/0402zd105kat2a-hero-preview.pngmodels.json+23−2provenance.json+39−7provenance/tools/hero_glb.py+643provenance/tools/hero_glyphs.json+15456provenance/tools/upgrade.py+124verification.json+820402zd105kat2a-hero.glbadded⋯ 1 unchanged line ⋯
0402zd105kat2a-hero.overlay.jsonadded+125@@ -0,0 +1,125 @@+{+ "spec": "adom-hero 1.4",+ "mpn": "0402ZD105KAT2A",+ "kind": "component + footprint reference art",+ "board_use": false,+ "plane_z_mm": -0.02,+ "units": "metre",+ "upAxis": "Z",+ "layers": {+ "pad_outlines": {+ "material": "Footprint pads - teal dashed outlines - 50 percent opacity",+ "rgba": [+ 0.0,+ 0.902,+ 0.863,+ 0.5+ ],+ "pads": 2,+ "span_mm": 1.52,+ "dash_mm": 0.12,+ "gap_mm": 0.072,+ "pad_stroke_mm": 0.03+ },+ "silkscreen": {+ "material": "Silkscreen reference lines - 30 percent opacity",+ "rgba": [+ 0.92,+ 0.96,+ 1.0,+ 0.3+ ],+ "footprint_items": 2,+ "pin1": null+ },+ "signal_names": {+ "material": "Signal names - 50 percent opacity",+ "rgba": [+ 0.92,+ 0.96,+ 1.0,+ 0.5+ ],+ "font": "DejaVu Sans Mono",+ "labels": 2,+ "sides": "top + mirrored underside (single-sided)",+ "omitted": null,+ "fallback_to_pad_number": 2+ }+ },+ "align": {+ "ok": true,+ "centre_offset_mm": 0.0,+ "tolerance_mm": 0.25,+ "orientation_flipped": false,+ "contacts_bbox_mm": [+ -0.5,+ 0.5,+ -0.25,+ 0.25+ ],+ "pads_bbox_mm": [+ -0.76,+ 0.76,+ -0.31,+ 0.31+ ],+ "seating_z_mm": -0.0+ },+ "sources": {+ "glb": "package-reference.glb",+ "glb_sha256": "100935c5c0d6f20a6c9bdfb6386f874dc8a4457bf0e4f3ace69f1ab090100773",+ "footprint": "C_0402_1005Metric_0402ZD105KAT2A.kicad_mod",+ "footprint_sha256": "75e472f604e9e3473daf00ae179e4902d07ae5dc5eddbc841028a68b91c022c0",+ "pins": "page.json component.pins"+ },+ "generator": "factory/hero_glb.py",+ "labels": [+ {+ "pad": "1",+ "text": "1",+ "x": -0.86,+ "y": 0.0,+ "align": "right",+ "vertical": false,+ "h": 0.392+ },+ {+ "pad": "2",+ "text": "2",+ "x": 0.86,+ "y": 0.0,+ "align": "left",+ "vertical": false,+ "h": 0.392+ }+ ],+ "pads": [+ {+ "number": "1",+ "shape": "roundrect",+ "center_mm": [+ -0.48,+ 0.0+ ],+ "size_mm": [+ 0.56,+ 0.62+ ],+ "rot": 0.0+ },+ {+ "number": "2",+ "shape": "roundrect",+ "center_mm": [+ 0.48,+ 0.0+ ],+ "size_mm": [+ 0.56,+ 0.62+ ],+ "rot": 0.0+ }+ ]+}
LICENSE+2−1@@ -6,8 +6,9 @@ is licensed under the Creative Commons Attribution 4.0 International License (CC-BY-4.0): https://creativecommons.org/licenses/by/4.0/ Third-party files keep their own terms and are not relicensed by this page:-- C_0402_1005Metric_0402ZD105KAT2A.kicad_mod and 0402ZD105KAT2A.step (and the GLB and LOD files derived from it) are KiCad library+- C_0402_1005Metric_0402ZD105KAT2A.kicad_mod and 0402ZD105KAT2A.step (and the GLB, hero and LOD files derived from it) are KiCad library content, CC-BY-SA 4.0 with the KiCad library exception (https://gitlab.com/kicad/libraries/kicad-footprints, https://gitlab.com/kicad/libraries/kicad-packages3D). - The PDFs in docs/ are KYOCERA AVX documents, copyright of their publishers, included unchanged for reference.+- provenance/tools/hero_glb.py and hero_glyphs.json come from adom/component-hero.
README.md+11@@ -81,6 +81,13 @@ CAD links in the browser and expose no direct STEP link, so the page uses KiCad' unchanged, renamed `0402ZD105KAT2A.step`. It was checked against the datasheet table before use (next section). The GLB for the page viewer was made from it with `step2glb convert`. The KYOCERA AVX X5R sheets (legacy Rev 4 and KGM Rev 9) specify no part marking: neither has a marking section and both show plain bodies (searched: cx5r.pdf (4 pages) and cx5r-KGM.pdf (4 pages), all pages searched), so the model shows a plain body. +The page viewer shows `0402zd105kat2a-hero.glb`: the clean model plus nonphysical reference artwork drawn under it to the adom-hero 1.4+standard (adom/component-hero): the footprint's pads as teal dashed outlines at 50 % opacity, its silkscreen at+70 % transparency and the pad numbers 1 and 2 (the terminals have no names). The part is non-polar, so no pin-1 dot is+added. The artwork never goes into the STEP, `package-reference.glb` or the board LODs.+++ ::adom-models{src="/adom/0402zd105kat2a/render/models.json"} ## Model checked against the datasheet@@ -109,6 +116,10 @@ Z-up, metre, footprint-origin pose as the STEP. Previews are rendered from each | `0402ZD105KAT2A.lbr` | Fusion / EAGLE library made from the KiCad symbol and footprint with `adom-lbr generate` (carries MPN, MANUFACTURER, MOUSER_PN, DIGIKEY_PN, LCSC_PN) | | `0402ZD105KAT2A.step` | 3D package model, STEP | | `package-reference.glb` | 3D package model, GLB |+| `0402zd105kat2a-hero.glb` | page-viewer hero: the clean model plus footprint artwork (adom-hero 1.4); `0402zd105kat2a-hero.overlay.json` lists every pad and label |+| `altium/0402ZD105KAT2A.SchLib` | Altium schematic library, made with `adom-lbr import-kicad` and `export-altium` |+| `altium/0402ZD105KAT2A.PcbLib` | Altium PCB library, made with `adom-lbr import-kicad` and `export-altium` |+| `altium/0402ZD105KAT2A.adom-lbr.json` | adom-lbr hub JSON (symbol, footprint, pin-to-pad map) behind the Altium files | | `lod/` | board-use GLBs in four levels of detail, with previews and manifest | ## Sources and license
altium/0402ZD105KAT2A.PcbLibadded⋯ 1 unchanged line ⋯
altium/0402ZD105KAT2A.SchLibadded⋯ 1 unchanged line ⋯
altium/0402ZD105KAT2A.adom-lbr.jsonadded+232@@ -0,0 +1,232 @@+{+ "schema_version": 2,+ "mpn": "0402ZD105KAT2A",+ "manufacturer": "KYOCERA AVX",+ "package": "",+ "value": "",+ "category": "",+ "symbol": {+ "name": "0402ZD105KAT2A",+ "pins": [+ {+ "number": "1",+ "name": "",+ "x": 0,+ "y": 150,+ "length": 110,+ "rotation": 270,+ "electrical_type": "passive"+ },+ {+ "number": "2",+ "name": "",+ "x": 0,+ "y": -150,+ "length": 110,+ "rotation": 90,+ "electrical_type": "passive"+ }+ ],+ "body": null,+ "graphics": [+ {+ "kind": "polyline",+ "points": [+ [+ -80.0,+ -30.0+ ],+ [+ 80.0,+ -30.0+ ]+ ],+ "width": 20.0+ },+ {+ "kind": "polyline",+ "points": [+ [+ -80.0,+ 30.0+ ],+ [+ 80.0,+ 30.0+ ]+ ],+ "width": 20.0+ }+ ],+ "designator_prefix": "C",+ "footprint": "C_0402_1005Metric_0402ZD105KAT2A",+ "parameters": [+ {+ "name": "Value",+ "value": "1uF",+ "visible": true+ },+ {+ "name": "Datasheet",+ "value": "https://datasheets.kyocera-avx.com/cx5r.pdf",+ "visible": false+ },+ {+ "name": "Description",+ "value": "MLCC 1 uF +/-10 %, 10 V, X5R, 0402 (1005 metric)",+ "visible": false+ },+ {+ "name": "MPN",+ "value": "0402ZD105KAT2A",+ "visible": false+ },+ {+ "name": "Manufacturer",+ "value": "KYOCERA AVX",+ "visible": false+ },+ {+ "name": "Mouser",+ "value": "581-0402ZD105K",+ "visible": false+ },+ {+ "name": "DigiKey",+ "value": "478-KGM05AR51A105KHTR-ND",+ "visible": false+ },+ {+ "name": "LCSC",+ "value": "C597062",+ "visible": false+ },+ {+ "name": "ki_keywords",+ "value": "capacitor 0402 0402ZD105KAT2A",+ "visible": false+ },+ {+ "name": "Supplier 1",+ "value": "Mouser",+ "visible": false+ },+ {+ "name": "Supplier Part Number 1",+ "value": "581-0402ZD105K",+ "visible": false+ },+ {+ "name": "Supplier 2",+ "value": "Digi-Key",+ "visible": false+ },+ {+ "name": "Supplier Part Number 2",+ "value": "478-KGM05AR51A105KHTR-ND",+ "visible": false+ },+ {+ "name": "Supplier 3",+ "value": "LCSC",+ "visible": false+ },+ {+ "name": "Supplier Part Number 3",+ "value": "C597062",+ "visible": false+ },+ {+ "name": "Manufacturer Part Number",+ "value": "0402ZD105KAT2A",+ "visible": false+ }+ ],+ "pin_numbers_hidden": true,+ "pin_names_hidden": true+ },+ "footprint": {+ "name": "C_0402_1005Metric_0402ZD105KAT2A",+ "pads": [+ {+ "number": "1",+ "x_mm": -0.48,+ "y_mm": 0.0,+ "w_mm": 0.56,+ "h_mm": 0.62,+ "drill_mm": 0.0,+ "rotation": 0.0,+ "shape": "roundrect"+ },+ {+ "number": "2",+ "x_mm": 0.48,+ "y_mm": 0.0,+ "w_mm": 0.56,+ "h_mm": 0.62,+ "drill_mm": 0.0,+ "rotation": 0.0,+ "shape": "roundrect"+ }+ ],+ "graphics": [+ {+ "kind": "line",+ "layer": {+ "role": "silk"+ },+ "x1": -0.107836,+ "y1": -0.36,+ "x2": 0.107836,+ "y2": -0.36,+ "width": 0.12+ },+ {+ "kind": "line",+ "layer": {+ "role": "silk"+ },+ "x1": -0.107836,+ "y1": 0.36,+ "x2": 0.107836,+ "y2": 0.36,+ "width": 0.12+ },+ {+ "kind": "rect",+ "layer": {+ "role": "courtyard"+ },+ "x1": -0.91,+ "y1": -0.46,+ "x2": 0.91,+ "y2": 0.46,+ "width": 0.05+ },+ {+ "kind": "rect",+ "layer": {+ "role": "fab"+ },+ "x1": -0.5,+ "y1": -0.25,+ "x2": 0.5,+ "y2": 0.25,+ "width": 0.1+ }+ ]+ },+ "connect": [+ {+ "pin": "1",+ "pad": "1"+ },+ {+ "pin": "2",+ "pad": "2"+ }+ ],+ "provenance": {+ "source": "kicad_import"+ }+}
docs/0402zd105kat2a-hero-preview.pngadded⋯ 1 unchanged line ⋯
models.json+23−2@@ -26,20 +26,41 @@ "format": "glb", "title": "Package model (GLB)", "status": "current",- "slot": "model_3d",+ "slot": "model_3d_plain", "variant": "plain", "role": "derived", "use": [+ "board-insertion", "render" ], "marking": null, "derived_from": "0402ZD105KAT2A.step",- "unique": "The same model for the page viewer (step2glb)",+ "unique": "The clean model as a GLB (step2glb), no artwork: the download for viewers and assemblies", "source": "KiCad packages3D Capacitor_SMD.3dshapes/C_0402_1005Metric.step (CC-BY-SA 4.0 with the KiCad library exception)", "sha256": "100935c5c0d6f20a6c9bdfb6386f874dc8a4457bf0e4f3ace69f1ab090100773", "git_blob": "be1969cc5b4bde9fe0ba1de99674dbb12e76fd76", "bytes": 15944 },+ {+ "path": "0402zd105kat2a-hero.glb",+ "format": "glb",+ "title": "Hero (page viewer)",+ "status": "current",+ "slot": "model_3d",+ "variant": "hero",+ "role": "derived",+ "use": [+ "wiki-hero"+ ],+ "marking": null,+ "derived_from": "package-reference.glb",+ "unique": "The clean model plus nonphysical footprint artwork (adom-hero 1.4): teal dashed pad outlines, silkscreen, pad numbers 1 and 2; not for board use",+ "thumb": "docs/0402zd105kat2a-hero-preview.png",+ "source": "KiCad packages3D Capacitor_SMD.3dshapes/C_0402_1005Metric.step (CC-BY-SA 4.0 with the KiCad library exception)",+ "sha256": "4201e860514b498278ab8df9f9f5f2e57d09281815a135bdd1f028acaa6dbc62",+ "git_blob": "8465883d47b9c2d21b0ddfee762a4e643c204e2e",+ "bytes": 36748+ }, { "path": "lod/high.glb", "format": "glb",
provenance.json+39−7@@ -93,18 +93,23 @@ }, "tools_note": "lod.py, ortho.py and overlay_chip.py come from the GRM155R71C104KA88D component page; overlay_chip.py was extended to accept min/max ranges and a per-part scale. build.py, parts.py, landcheck.py and records.py built this page.", "files": {- "verification.json": "19959c182390ea9e25b35eef368471022de6c71d33907b3d79837d02dc8b5107",+ "verification.json": "7ade6f34a7355a50eeff31fba9b4025ed436990a146f90854de5647454bf1734",+ "0402zd105kat2a-hero.glb": "4201e860514b498278ab8df9f9f5f2e57d09281815a135bdd1f028acaa6dbc62", "C_0402_1005Metric_0402ZD105KAT2A.kicad_mod": "75e472f604e9e3473daf00ae179e4902d07ae5dc5eddbc841028a68b91c022c0", "package-reference.glb": "100935c5c0d6f20a6c9bdfb6386f874dc8a4457bf0e4f3ace69f1ab090100773", "package.json": "14ca9d7e76d8608fc7366a3acf82b80345ea21eb848210726d3c4eada2dd1c14", "0402ZD105KAT2A.kicad_sym": "4fb61235b89779e8ebb17e67d638bad7e576ef1aa18546042e4b9d84b3a32015", "0402ZD105KAT2A.lbr": "8b517c5721043dd7df42146499a9cc5a574f1c02885dc24545735e3302a76267",- "models.json": "83f4019ff0465c25c1264d3ccd4f8b6831c884a35267ce86fecf4607c4590a9b",+ "models.json": "16c7317aec103719f3e83f5c4b7652d8db98715fa19789a614598a10c910bd04", "0402ZD105KAT2A.step": "03e44c4b2b727b8d4b6b1fd598cbd12dd5e614f1dfeefa96a92a07e3a3b312a2",- "LICENSE": "823636c9ff7be10167934e8b492a1b006c8601e7ee4c20b9e23ced1353905737",- "page.json": "df3c3824ee4ab97f9b22d701746d914678022adb28bbfc6d10b192f70d4e5927",- "README.md": "aa0069a1959f07569c047a189f573ff9de6710ae6bb5132cd562b9d48c0ef850",+ "LICENSE": "c126aaae0f0e930ff7b344686c51424c0e84e25ccf57c8c92e04a09e55514add",+ "page.json": "2e50e6dc2647879aa92b48e5471f6b1315e639e80cca8d3d076bb0918a8f08dd",+ "0402zd105kat2a-hero.overlay.json": "cfed0a6328a151e500beeabc50f09e5e5756b0a7b212143f05b20cc86f64165e",+ "README.md": "0c50910d80476eda006b82b678ff811d930e6fd191a8defeb5d5d4ab99d0ce16",+ "provenance/tools/hero_glb.py": "429e437a3f2e5f1dc3544fe65843ea4e019637f0a6163060cda2ae210f3af7bc", "provenance/tools/parts.py": "0edf380e782f40682bbfc5052e7b975cc69c16c2b5281cbdf3b94c5ae9079458",+ "provenance/tools/upgrade.py": "8f439294f37345db3d13818a96588fbd47ed7fa1af933b55487ee5c159b793da",+ "provenance/tools/hero_glyphs.json": "00627c28f7b197084289f3f9283c41670cec673e3c3ba861bb70e48c76362799", "provenance/tools/records.py": "a2d96fb98e9972268ebd5045befb692f687bf5b1d5a689c4ad77c0235d77418b", "provenance/tools/landcheck.py": "a6141dcaa4992652e0caf3a7fdd51dcf8451fd630b7de7b873d1b910ae4a1d41", "provenance/tools/overlay_chip.py": "52617a63c9504e020e574ec63f39f518734032fcda7b14ad158e3f8907b31723",@@ -121,6 +126,7 @@ "lod/medium.glb": "5e706ccb70132f1c1236fa0fb490c0d4d05fdfc5d8e9dec4dfba0d25e2fba3ca", "lod/high.glb": "27cda00dee86721ad6419a506490fa503c04a9965fd1ea6e2e0d1a94f239fb31", "lod/medium.png": "e71ddd5e4d23bfb20d68d259e27eb26a6710554657a4c63437f8de96d049350d",+ "docs/0402zd105kat2a-hero-preview.png": "8d958c69cca34cfbb45896b43cf6f66502a1f3a50b3101fa3c57743867f847a0", "docs/kyocera-avx-x5r-kgm-series.pdf": "90d9d9b0e7b07e0c51233149d07d9286f5e66d08b57afbbff82fb9804b593932", "docs/0402zd105kat2a-datasheet.pdf": "6c10851c76caad7a79a27173530c43e7594e101ac64f6b9e42dfb805fc42225d", "docs/hero.png": "ec4522032e274b9e839f1d432f1df10e455babb47a31a448114a5c1fe04081b5",@@ -130,9 +136,35 @@ "land-pattern/land-check.json": "d47e576a8c66cf355b5e6e8e4fdac97ffb1e11841ff5650e0fa67fd901ea2adb", "land-pattern/land-pattern-icon.png": "180d6893df4084e8f430976c019c42bf920449a13339c28f8bc2ea4dc7ce1fac", "land-pattern/land-pattern.png": "5a874c9315b967019de7bcd6bb2d12af4ecfc79e515beb222a1a490bcd8c626b",- "land-pattern/README.md": "c18a950c5a280f98777c03a82c384cf0d6fe1d515a43dd5fa18f10fc8c99b580"+ "land-pattern/README.md": "c18a950c5a280f98777c03a82c384cf0d6fe1d515a43dd5fa18f10fc8c99b580",+ "altium/0402ZD105KAT2A.PcbLib": "6e364773b4ebbe1cd1c05e8c89beb73f4f517e4f02b15bc96d36ee8f72e9ce83",+ "altium/0402ZD105KAT2A.SchLib": "72469850a0eeeac6830560ec7ed39edfd72c1bbee5ef63d90855a423f906abdd",+ "altium/0402ZD105KAT2A.adom-lbr.json": "67b1d3a02532f202d28b20c21231aeac442e120b3fbe38295a950d66ea5900e9" }, "files_note": "provenance.json itself is not listed.", "built_by": "Claude (AI agent) for John Lauer",- "date": "2026-10-21"+ "date": "2026-10-21",+ "hero_glb": {+ "file": "0402zd105kat2a-hero.glb",+ "sidecar": "0402zd105kat2a-hero.overlay.json",+ "preview": "docs/0402zd105kat2a-hero-preview.png",+ "added": "2026-10-21",+ "tool": "hero_glb.py (adom/component-hero, adom-hero 1.4), copied into provenance/tools/",+ "inputs": [+ "package-reference.glb",+ "C_0402_1005Metric_0402ZD105KAT2A.kicad_mod",+ "page.json component.pins (1 and 2, unnamed)"+ ],+ "result": "pads 2, silk items 2, pin1 none, labels 2; align OK (offset 0.0 mm)"+ },+ "altium": {+ "files": [+ "altium/0402ZD105KAT2A.SchLib",+ "altium/0402ZD105KAT2A.PcbLib",+ "altium/0402ZD105KAT2A.adom-lbr.json"+ ],+ "added": "2026-10-21",+ "tool": "adom-lbr import-kicad --sym --fp --mpn, then adom-lbr export-altium (adom-lbr 2.47.5)"+ },+ "upgrade_note": "2026-10-21: hero GLB, Altium libraries and Source added by provenance/tools/upgrade.py; no other file changed except the records that describe them (page.json, models.json, verification.json, README.md, LICENSE, this file)." }
provenance/tools/hero_glb.pyadded+643@@ -0,0 +1,643 @@+#!/usr/bin/env python3+"""Build a component page's annotated hero GLB: the physical chip plus Adom's nonphysical reference artwork.++The convention (unified 2026-09-30 from the 45 hand-built "style A" heroes on the wiki, the wiki-component+skill's table and John's request) is fixed here so nobody's AI has to reconstruct it from prose:++ root 1 the physical model, untouched (our etched GLB: manufacturer/KiCad body + Adom.LaserEtch.MPN)+ root 2 "Adom reference artwork (nonphysical)", three flat meshes at z = -0.02 mm (below the seating+ plane, so they never z-fight the chip underside), all KHR_materials_unlit, BLEND, double-sided:+ "Footprint pads - teal dashed outlines - 50 percent opacity" copper perimeter of every pad, dashed+ rgb(0, .902, .863) alpha 0.50+ "Silkscreen reference lines - 30 percent opacity" F.SilkS strokes/fills + a pin-1 dot+ rgb(.92, .96, 1) alpha 0.30+ "Signal names - 50 percent opacity" pad signal names outside the pads+ rgb(.92, .96, 1) alpha 0.50+ asset.extras.adomHero = {spec, mpn, board_use: false, layers, sources...}++The hero is presentation only (board_use false). Board-use downloads stay clean: the page declares the hero as+component.parts.model_3d and the clean model as model_3d_plain.++Coordinates: glTF x = KiCad x, y = -KiCad y, Z up, metres (KiCad footprint origin = model origin; checked+per part against the chip's lowest geometry, see align_check).++Usage: hero_glb.py <etched.glb> <footprint.kicad_mod> <page.json> <out-hero.glb> [--mpn MPN] [--png preview.png]+"""+import argparse, hashlib, json, math, os, re, struct, sys+import numpy as np+from pygltflib import GLTF2, Accessor, BufferView, Material, Mesh, Node, Primitive, Attributes, PbrMetallicRoughness++SPEC = 'adom-hero 1.4'+Z = -0.02 # mm, artwork plane+PAD_MAT = ('Footprint pads - teal dashed outlines - 50 percent opacity', [0.0, 0.902, 0.863, 0.5])+SILK_MAT = ('Silkscreen reference lines - 30 percent opacity', [0.92, 0.96, 1.0, 0.3])+NAME_MAT = ('Signal names - 50 percent opacity', [0.92, 0.96, 1.0, 0.5])+ROOT = 'Adom reference artwork (nonphysical)'+POLAR_PAD = re.compile(r'^(K|KA|CATHODE|\+|POS|PLUS)$', re.I)+++# ---------------------------------------------------------------- KiCad footprint parsing (s-expressions)+def sexp(text):+ toks = re.findall(r'\(|\)|"(?:\\.|[^"\\])*"|[^\s()]+', text)+ stack = [[]]+ for t in toks:+ if t == '(': stack.append([])+ elif t == ')':+ x = stack.pop(); stack[-1].append(x)+ else: stack[-1].append(t[1:-1].replace('\\"', '"') if t.startswith('"') else t)+ return stack[0][0]+++def child(node, key):+ return next((c for c in node if isinstance(c, list) and c and c[0] == key), None)+++def children(node, key):+ return [c for c in node if isinstance(c, list) and c and c[0] == key]+++def num(v): return float(v)+++def xy(node): return (num(node[1]), num(node[2]))+++def stroke_w(node, default=0.12):+ s = child(node, 'stroke')+ if s and child(s, 'width'): return num(child(s, 'width')[1])+ if child(node, 'width'): return num(child(node, 'width')[1])+ return default+++def on_layer(node, layer):+ ly = child(node, 'layer') or child(node, 'layers')+ return bool(ly) and any(l == layer or (l.startswith('*.') and layer.endswith(l[1:])) for l in ly[1:])+++def parse_footprint(path):+ fp = sexp(open(path).read())+ pads, silk = [], []+ for p in children(fp, 'pad'):+ number, kind, shape = p[1], p[2], p[3]+ if kind == 'np_thru_hole': continue+ ly = child(p, 'layers')+ if not ly or not any(l in ('F.Cu', '*.Cu') for l in ly[1:]): continue+ at = child(p, 'at'); size = child(p, 'size')+ rr = child(p, 'roundrect_rratio')+ prims = []+ if shape == 'custom' and child(p, 'primitives'):+ for gp in children(child(p, 'primitives'), 'gr_poly'):+ pts = child(gp, 'pts')+ if pts: prims.append([xy(q) for q in children(pts, 'xy')])+ pads.append(dict(number=number, kind=kind, shape=shape, x=num(at[1]), y=num(at[2]),+ rot=num(at[3]) if len(at) > 3 else 0.0, w=num(size[1]), h=num(size[2]),+ rratio=num(rr[1]) if rr else 0.25, prims=prims))+ for g in fp:+ if not (isinstance(g, list) and g and g[0] in ('fp_line', 'fp_arc', 'fp_circle', 'fp_rect', 'fp_poly')): continue+ if not on_layer(g, 'F.SilkS'): continue+ w = stroke_w(g); fill = child(g, 'fill'); filled = bool(fill) and fill[1] in ('solid', 'yes')+ if g[0] == 'fp_line': silk.append(('path', [xy(child(g, 'start')), xy(child(g, 'end'))], w))+ elif g[0] == 'fp_rect':+ (x1, y1), (x2, y2) = xy(child(g, 'start')), xy(child(g, 'end'))+ poly = [(x1, y1), (x2, y1), (x2, y2), (x1, y2), (x1, y1)]+ silk.append(('fill' if filled else 'path', poly, w))+ elif g[0] == 'fp_circle':+ (cx, cy), (ex, ey) = xy(child(g, 'center')), xy(child(g, 'end'))+ r = math.hypot(ex - cx, ey - cy)+ poly = [(cx + r * math.cos(t), cy + r * math.sin(t)) for t in np.linspace(0, 2 * math.pi, arc_n(r, 360) + 1)]+ silk.append(('fill' if filled else 'path', poly, w))+ elif g[0] == 'fp_arc':+ if child(g, 'mid'):+ a, m, b = xy(child(g, 'start')), xy(child(g, 'mid')), xy(child(g, 'end'))+ silk.append(('path', arc3(a, m, b), w))+ else: # KiCad 5: (start centre) (end point) (angle deg)+ c, s = xy(child(g, 'start')), xy(child(g, 'end')); ang = num(child(g, 'angle')[1])+ r = math.hypot(s[0] - c[0], s[1] - c[1]); t0 = math.atan2(s[1] - c[1], s[0] - c[0])+ silk.append(('path', [(c[0] + r * math.cos(t0 + math.radians(ang) * k / 24), c[1] + r * math.sin(t0 + math.radians(ang) * k / 24)) for k in range(25)], w))+ elif g[0] == 'fp_poly':+ pts = [xy(q) for q in children(child(g, 'pts'), 'xy')]+ silk.append(('fill' if (filled or not fill) else 'path', pts + [pts[0]], w))+ model = child(fp, 'model')+ mdl = None+ if model:+ mdl = dict(offset=[num(v) for v in child(child(model, 'offset'), 'xyz')[1:]] if child(model, 'offset') else [0, 0, 0],+ rotate=[num(v) for v in child(child(model, 'rotate'), 'xyz')[1:]] if child(model, 'rotate') else [0, 0, 0])+ return pads, silk, mdl+++def arc3(a, m, b, n=None):+ ax, ay = a; bx, by = m; cx, cy = b+ d = 2 * (ax * (by - cy) + bx * (cy - ay) + cx * (ay - by))+ if abs(d) < 1e-12: return [a, b]+ ux = ((ax * ax + ay * ay) * (by - cy) + (bx * bx + by * by) * (cy - ay) + (cx * cx + cy * cy) * (ay - by)) / d+ uy = ((ax * ax + ay * ay) * (cx - bx) + (bx * bx + by * by) * (ax - cx) + (cx * cx + cy * cy) * (bx - ax)) / d+ r = math.hypot(ax - ux, ay - uy)+ t0, tm, t1 = (math.atan2(p[1] - uy, p[0] - ux) for p in (a, m, b))+ def norm(t): return (t - t0) % (2 * math.pi)+ sweep = norm(t1) if norm(tm) < norm(t1) else norm(t1) - 2 * math.pi+ n = n or arc_n(r, math.degrees(sweep))+ return [(ux + r * math.cos(t0 + sweep * k / n), uy + r * math.sin(t0 + sweep * k / n)) for k in range(n + 1)]+++# ---------------------------------------------------------------- geometry+def arc_n(r, sweep_deg, chord=0.005):+ """Segments for an arc so no straight piece is longer than `chord` mm (smooth at any zoom)."""+ return int(min(max(math.ceil(abs(math.radians(sweep_deg)) * r / chord), 8), 240))+++def pad_outline(p):+ """Closed polyline of the copper perimeter in footprint coordinates."""+ w, h = p['w'], p['h']+ if p['shape'] == 'circle':+ n = arc_n(w / 2, 360); loc = [(w / 2 * math.cos(t), w / 2 * math.sin(t)) for t in np.linspace(0, 2 * math.pi, n + 1)]+ elif p['shape'] == 'oval':+ r = min(w, h) / 2; L = (max(w, h) - 2 * r) / 2; loc = []+ for cx, a0 in ((L, -90), (-L, 90)):+ n = arc_n(r, 180); loc += [(cx + r * math.cos(math.radians(a0 + k * 180 / n)), r * math.sin(math.radians(a0 + k * 180 / n))) for k in range(n + 1)]+ if h > w: loc = [(y, x) for x, y in loc]+ loc.append(loc[0])+ elif p['shape'] in ('roundrect', 'rect', 'trapezoid', 'custom'):+ r = p['rratio'] * min(w, h) if p['shape'] == 'roundrect' else 0.0+ if p['shape'] == 'custom' and p['prims']:+ loc = p['prims'][0] + [p['prims'][0][0]]+ elif r <= 1e-6:+ loc = [(-w / 2, -h / 2), (w / 2, -h / 2), (w / 2, h / 2), (-w / 2, h / 2), (-w / 2, -h / 2)]+ else:+ loc = []+ for cx, cy, a0 in ((w / 2 - r, -h / 2 + r, -90), (w / 2 - r, h / 2 - r, 0), (-w / 2 + r, h / 2 - r, 90), (-w / 2 + r, -h / 2 + r, 180)):+ n = arc_n(r, 90); loc += [(cx + r * math.cos(math.radians(a0 + k * 90 / n)), cy + r * math.sin(math.radians(a0 + k * 90 / n))) for k in range(n + 1)]+ loc.append(loc[0])+ else:+ loc = [(-w / 2, -h / 2), (w / 2, -h / 2), (w / 2, h / 2), (-w / 2, h / 2), (-w / 2, -h / 2)]+ # KiCad pad rotation is counter-clockwise on screen, where y points down: rotate by -angle in math axes+ t = math.radians(-p['rot']); c, s = math.cos(t), math.sin(t)+ return [(p['x'] + x * c - y * s, p['y'] + x * s + y * c) for x, y in loc]+++def stroke_quads(poly, width):+ """One continuous ribbon along a polyline: offset both sides with mitred joins, so bends have no gaps+ and no overlapping triangles (overlaps double the alpha and show as bright seams)."""+ pts = [poly[0]] + [q for a, q in zip(poly, poly[1:]) if math.hypot(q[0] - a[0], q[1] - a[1]) > 1e-9]+ if len(pts) < 2: return []+ closed = len(pts) > 2 and math.hypot(pts[0][0] - pts[-1][0], pts[0][1] - pts[-1][1]) < 1e-9+ if closed: pts = pts[:-1]+ n = len(pts); hw = width / 2+ def seg_normal(i, j):+ dx, dy = pts[j][0] - pts[i][0], pts[j][1] - pts[i][1]; L = math.hypot(dx, dy)+ return (-dy / L, dx / L)+ left, right = [], []+ for i in range(n):+ prv = (i - 1) % n if (closed or i > 0) else None+ nxt = (i + 1) % n if (closed or i < n - 1) else None+ if prv is None: nx, ny = seg_normal(i, nxt)+ elif nxt is None: nx, ny = seg_normal(prv, i)+ else:+ a, b = seg_normal(prv, i), seg_normal(i, nxt)+ mx, my = a[0] + b[0], a[1] + b[1]; ml = math.hypot(mx, my)+ if ml < 1e-6: nx, ny = b+ else:+ mx, my = mx / ml, my / ml; cosh = max(mx * b[0] + my * b[1], 0.25) # mitre limit 4x+ nx, ny = mx / cosh, my / cosh+ left.append((pts[i][0] + nx * hw, pts[i][1] + ny * hw)); right.append((pts[i][0] - nx * hw, pts[i][1] - ny * hw))+ idx = list(range(n)) + ([0] if closed else [])+ tris = []+ for i, j in zip(idx, idx[1:]):+ tris += [(left[i], left[j], right[j]), (left[i], right[j], right[i])]+ return tris+++def dashes(poly, dash, gap):+ """Split a closed polyline into dash pieces (each a short polyline, corners kept)."""+ segs = list(zip(poly, poly[1:])); out = []; cur = []; on = True; left = dash+ for (x1, y1), (x2, y2) in segs:+ L = math.hypot(x2 - x1, y2 - y1); pos = 0.0+ if L < 1e-12: continue+ while pos < L - 1e-12:+ step = min(left, L - pos); t0, t1 = pos / L, (pos + step) / L+ p0 = (x1 + (x2 - x1) * t0, y1 + (y2 - y1) * t0); p1 = (x1 + (x2 - x1) * t1, y1 + (y2 - y1) * t1)+ if on:+ if not cur: cur = [p0]+ cur.append(p1)+ pos += step; left -= step+ if left <= 1e-12:+ if on and len(cur) > 1: out.append(cur)+ cur = []; on = not on; left = dash if on else gap+ if on and len(cur) > 1: out.append(cur)+ return out+++def fill_tris(rings):+ """Triangulate a polygon (outer ring + holes) with earcut."""+ import mapbox_earcut as earcut+ verts = np.array([p for r in rings for p in r], dtype=np.float64).reshape(-1, 2)+ ends = np.cumsum([len(r) for r in rings]).astype(np.uint32)+ idx = earcut.triangulate_float64(verts, ends)+ return [tuple(map(tuple, verts[idx[k:k + 3]])) for k in range(0, len(idx), 3)]+++# ---------------------------------------------------------------- text (DejaVu Sans Mono, pre-triangulated glyph table)+_GLYPHS = None+++def glyphs():+ """DejaVu Sans Mono, pre-triangulated at font size 1 (hero_glyphs.json, shared with the Rust port), so text+ needs no font library at run time and both implementations draw identical glyphs."""+ global _GLYPHS+ if _GLYPHS is None:+ _GLYPHS = json.load(open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'hero_glyphs.json')))+ return _GLYPHS+++def text_tris(txt, height, x, y, align='left', vertical=False):+ """Filled text triangles, baseline-centred on (x, y) in footprint coordinates (y down). Overbars for ~{..}."""+ G = glyphs(); table = G['glyphs']+ plain, bars = '', []+ for m in re.finditer(r'~\{([^}]*)\}|([^~]+|~)', txt):+ if m.group(1) is not None:+ bars.append((len(plain), len(plain) + len(m.group(1)))); plain += m.group(1)+ else: plain += m.group(2)+ if not plain.strip(): return []+ adv = G['advance'] * height; W = adv * len(plain)+ tris = []+ for i, ch in enumerate(plain):+ gl = table.get(ch) or table['?']+ v = gl['v']; t = gl['t']+ for k in range(0, len(t), 3):+ tris.append(tuple((i * adv + v[2 * j] * height, v[2 * j + 1] * height) for j in t[k:k + 3]))+ for a, b in bars: # overbar just above the cap height+ y0, y1 = 0.80 * height, 0.87 * height+ tris += [((a * adv, y0), (b * adv, y0), (b * adv, y1)), ((a * adv, y0), (b * adv, y1), (a * adv, y1))]+ # local text coords: x right, y UP, baseline at 0; centre vertically on cap height, align horizontally+ ox = {'left': 0.0, 'right': -W, 'center': -W / 2}[align]; oy = -0.36 * height+ out = []+ for t in tris:+ q = []+ for tx, ty in t:+ lx, ly = tx + ox, ty + oy+ if vertical: lx, ly = -ly, lx # rotate 90 degrees CCW (reads bottom-to-top)+ q.append((x + lx, y - ly)) # footprint y is down+ out.append(tuple(q))+ return out+++def mirror_label(tris):+ """Seen from below (orbiting the model over toward you, as the wiki viewer does), a label reads upside+ down: the view flips top-to-bottom. Mirror the underside copy across the label's own horizontal centre+ line, so it reads correctly from below and stays in place (Colby, 2026-09-30: "WODE", "ΛIN")."""+ if not tris: return []+ ys = [v[1] for t in tris for v in t]; cy = (min(ys) + max(ys)) / 2+ return [tuple((vx, 2 * cy - vy) for vx, vy in t) for t in tris]+++# ---------------------------------------------------------------- layout decisions+def scale_params(pads):+ xs = [p['x'] for p in pads]; ys = [p['y'] for p in pads]+ span = max(max(xs) - min(xs) + max(p['w'] for p in pads), max(ys) - min(ys) + max(p['h'] for p in pads), 1.0)+ # 1.1 (2026-09-30): bolder. At 0.015 mm the outlines vanished at the wiki viewer's default zoom and the+ # 30% silkscreen read as "the footprint" (Colby). The footprint must read first.+ # 1.2: between the two -- 1.1 read as heavy to Colby ("I like that it's subtle"), 1.0 vanished (Ray chose the middle)+ dash = min(max(0.025 * span, 0.12), 0.45)+ return dict(span_mm=round(span, 3), dash_mm=round(dash, 4), gap_mm=round(0.6 * dash, 4),+ pad_stroke_mm=round(min(max(0.006 * span, 0.03), 0.09), 4))+++def is_grid(pads):+ """BGA/LGA-style ball grid: many pads with many distinct rows AND columns."""+ xs = {round(p['x'], 2) for p in pads}; ys = {round(p['y'], 2) for p in pads}+ return len(pads) >= 16 and len(xs) >= 4 and len(ys) >= 4 and len(pads) > 0.6 * len(xs) * len(ys)+++def label_box(lb):+ W = 0.602 * lb['h'] * len(re.sub(r'~\{([^}]*)\}', r'\1', lb['text'])); H = lb['h']+ x, y = lb['x'], lb['y']+ if not lb['vertical']:+ x0 = x - W if lb['align'] == 'right' else x+ return (x0, x0 + W, y - H / 2, y + H / 2)+ y0 = y if lb['align'] == 'right' else y - W # vertical text runs up the screen (footprint -y)+ return (x - H / 2, x + H / 2, y0, y0 + W)+++def overlaps(a, b): return a[0] < b[1] and b[0] < a[1] and a[2] < b[3] and b[2] < a[3]+++def label_plan(pads, names, obstacles=()):+ """Per labelled pad: text, anchor, alignment, orientation, height. Interior pads get none."""+ sig = [p for p in pads if not (p['number'] in ('', '~') or thermal_like(p, pads))]+ if not sig or is_grid(sig): return [], ('ball grid: labels omitted (they would sit under the body)' if sig else 'no signal pads')+ xs = [p['x'] for p in sig]; ys = [p['y'] for p in sig]+ cx, cy = (min(xs) + max(xs)) / 2, (min(ys) + max(ys)) / 2+ hx, hy = (max(xs) - min(xs)) / 2 or 1e-6, (max(ys) - min(ys)) / 2 or 1e-6+ plan, seen = [], set()+ for p in sig:+ if p['number'] in seen: continue # multi-pad numbers (split EP, shield legs) labelled once+ seen.add(p['number'])+ # side = the extreme it sits closest to (normalised), so a 2-row part splits left/right or top/bottom+ dxn, dyn = (p['x'] - cx) / hx, (p['y'] - cy) / hy+ if len(sig) == 2 or abs(dxn) >= abs(dyn): side = 'R' if p['x'] >= cx else 'L'+ else: side = 'B' if p['y'] >= cy else 'T'+ same = [q for q in sig if q is not p and ((side in 'LR' and abs(q['x'] - p['x']) < 0.3) or (side in 'TB' and abs(q['y'] - p['y']) < 0.3))]+ pitch = min([abs((q['y'] - p['y']) if side in 'LR' else (q['x'] - p['x'])) for q in same] or [99])+ o = pad_outline(p); ex = [v[0] for v in o]; ey = [v[1] for v in o]+ short = min(p['w'], p['h'])+ h = min(max(min(0.5 * pitch, 0.7 * short if len(sig) == 2 else 0.5 * pitch), 0.12), 0.6)+ gap = max(0.25 * h, 0.1)+ text = names.get(p['number']) or p['number']+ if text in ('~', ''): text = p['number']+ if side == 'L': plan.append(dict(pad=p['number'], text=text, x=min(ex) - gap, y=p['y'], align='right', vertical=False, h=h))+ if side == 'R': plan.append(dict(pad=p['number'], text=text, x=max(ex) + gap, y=p['y'], align='left', vertical=False, h=h))+ if side == 'T': plan.append(dict(pad=p['number'], text=text, x=p['x'], y=min(ey) - gap, align='left', vertical=True, h=h))+ if side == 'B': plan.append(dict(pad=p['number'], text=text, x=p['x'], y=max(ey) + gap, align='right', vertical=True, h=h))+ lb = plan[-1]+ for _ in range(4): # step outward past a silkscreen shape (the footprint's pin-1 triangle, our dot)+ hit = next((ob for ob in obstacles if overlaps(label_box(lb), ob)), None)+ if not hit: break+ if side == 'L': lb['x'] = hit[0] - gap+ if side == 'R': lb['x'] = hit[1] + gap+ if side == 'T': lb['y'] = hit[2] - gap+ if side == 'B': lb['y'] = hit[3] + gap+ return plan, None+++def thermal_like(p, pads):+ """Exposed/thermal pad: named EP/PAD, or a pad much larger than the median sitting inside the others."""+ if re.match(r'^(EP|PAD|TAB|0)$', p['number'], re.I): return True+ areas = sorted(q['w'] * q['h'] for q in pads)+ med = areas[len(areas) // 2]+ if len(pads) >= 5 and p['w'] * p['h'] > 4 * med:+ xs = [q['x'] for q in pads]; ys = [q['y'] for q in pads]+ return min(xs) < p['x'] < max(xs) and min(ys) < p['y'] < max(ys)+ return False+++def silk_marks_pin1(silk, p1, pads):+ """The footprint already carries a pin-1 mark: a filled silk shape (KiCad's triangle / dot) whose centroid+ is nearer pad 1 than any other pad and within 2.5 mm of it."""+ for kind, pts, _ in silk:+ if kind != 'fill' or len(pts) < 3: continue+ cx = np.mean([q[0] for q in pts]); cy = np.mean([q[1] for q in pts])+ dist = lambda p: math.hypot(p['x'] - cx, p['y'] - cy)+ if dist(p1) <= 2.5 and dist(p1) <= min(dist(q) for q in pads) + 1e-6: return True+ return False+++def pin1_dot(pads, names, silk=()):+ """(x, y, r) of the pin-1 dot, outside pad 1, or None when the part has no orientation to show or the+ footprint's own silkscreen already marks pin 1."""+ sig = [p for p in pads if not thermal_like(p, pads)]+ p1 = None+ if len(sig) >= 3:+ p1 = next((p for p in sig if p['number'] in ('1', 'A1')), None)+ elif len(sig) == 2: # a 2-pin part shows polarity only when a pin says so (cathode / +)+ p1 = next((p for p in sig if POLAR_PAD.match((names.get(p['number']) or '').strip())), None)+ if not p1: return None+ if silk_marks_pin1(silk, p1, sig): return ('existing', p1['number'])+ xs = [p['x'] for p in sig]; ys = [p['y'] for p in sig]+ cx, cy = (min(xs) + max(xs)) / 2, (min(ys) + max(ys)) / 2+ dx, dy = p1['x'] - cx, p1['y'] - cy+ if len(sig) >= 3 and not is_grid(sig):+ # outward along the pad's own row axis: beyond pad 1's END of the row (the classic dot position)+ same_col = [q for q in sig if abs(q['x'] - p1['x']) < 0.3]+ if len(same_col) > 1: dx, dy = 0.0, (p1['y'] - np.mean([q['y'] for q in same_col])) or -1.0+ else: dx, dy = (p1['x'] - np.mean([q['x'] for q in sig if abs(q['y'] - p1['y']) < 0.3])) or -1.0, 0.0+ L = math.hypot(dx, dy) or 1.0; ux, uy = dx / L, dy / L+ r = min(max(0.22 * min(p1['w'], p1['h']), 0.1), 0.35)+ o = pad_outline(p1); reach = max((v[0] - p1['x']) * ux + (v[1] - p1['y']) * uy for v in o)+ d = reach + 0.2 + r+ return (p1['x'] + ux * d, p1['y'] + uy * d, r, p1['number'])+++# ---------------------------------------------------------------- GLB assembly+def tris_to_arrays(tris):+ """Indexed mesh: shared vertices stored once (the ribbons and glyphs share most corners), ~3x smaller."""+ P = np.array([[x / 1000.0, -y / 1000.0, Z / 1000.0] for t in tris for (x, y) in t], dtype=np.float32)+ key = np.round(P.astype(np.float64) * 1e7).astype(np.int64)+ _, first, inv = np.unique(key, axis=0, return_index=True, return_inverse=True)+ return P[first], inv.reshape(-1).astype(np.uint32)+++def facing(tris, up):+ """Force each triangle's winding in glTF space (x, -y): counter-clockwise from above for up=True, from below+ for up=False. A single-sided material then shows the top copy only from above and the bottom copy only+ from below."""+ out = []+ for t in tris:+ (x0, y0), (x1, y1), (x2, y2) = t+ area = (x1 - x0) * (-(y2 - y0)) - (x2 - x0) * (-(y1 - y0)) # signed area with glTF y = -footprint y+ out.append(t if (area > 0) == up else (t[0], t[2], t[1]))+ return out+++def add_mesh(g, blob, name, prims):+ """One node + mesh named `name`; prims = [(material_index, tris), ...], one primitive each."""+ gl_prims = []+ for mat_idx, tris in prims:+ if not tris: continue+ P, I = tris_to_arrays(tris)+ pb, ib = P.tobytes(), I.tobytes()+ off = len(blob); blob += pb + b'\x00' * ((4 - len(pb) % 4) % 4)+ g.bufferViews.append(BufferView(buffer=0, byteOffset=off, byteLength=len(pb), target=34962))+ g.accessors.append(Accessor(bufferView=len(g.bufferViews) - 1, componentType=5126, count=len(P), type='VEC3',+ min=P.min(0).tolist(), max=P.max(0).tolist()))+ pa = len(g.accessors) - 1+ off = len(blob); blob += ib+ g.bufferViews.append(BufferView(buffer=0, byteOffset=off, byteLength=len(ib), target=34963))+ g.accessors.append(Accessor(bufferView=len(g.bufferViews) - 1, componentType=5125, count=len(I), type='SCALAR'))+ gl_prims.append(Primitive(attributes=Attributes(POSITION=pa), indices=len(g.accessors) - 1, material=mat_idx))+ if not gl_prims: return None, blob+ g.meshes.append(Mesh(name=name, primitives=gl_prims))+ g.nodes.append(Node(name=name, mesh=len(g.meshes) - 1))+ return len(g.nodes) - 1, blob+++def world_points(g):+ """All physical vertices in world metres (for the alignment check)."""+ blob = g.binary_blob()+ CT = {5126: ('f', 4), 5123: ('H', 2), 5125: ('I', 4), 5121: ('B', 1), 5122: ('h', 2), 5120: ('b', 1)}+ NC = {'SCALAR': 1, 'VEC2': 2, 'VEC3': 3, 'VEC4': 4}+ def acc(i):+ a = g.accessors[i]; bv = g.bufferViews[a.bufferView]; t, sz = CT[a.componentType]; nc = NC[a.type]+ st = bv.byteStride or sz * nc; o = (bv.byteOffset or 0) + (a.byteOffset or 0)+ v = np.array([struct.unpack_from('<' + t * nc, blob, o + k * st) for k in range(a.count)], dtype=float)+ if a.normalized: v = v / {5122: 32767, 5120: 127, 5123: 65535, 5121: 255}[a.componentType]+ return v+ def mat(nd):+ if nd.matrix: return np.array(nd.matrix).reshape(4, 4).T+ T = np.eye(4); R = np.eye(4); S = np.eye(4)+ if nd.translation: T[:3, 3] = nd.translation+ if nd.rotation:+ x, y, z, w = nd.rotation+ R[:3, :3] = [[1 - 2 * (y * y + z * z), 2 * (x * y - z * w), 2 * (x * z + y * w)], [2 * (x * y + z * w), 1 - 2 * (x * x + z * z), 2 * (y * z - x * w)], [2 * (x * z - y * w), 2 * (y * z + x * w), 1 - 2 * (x * x + y * y)]]+ if nd.scale: S[:3, :3] = np.diag(nd.scale)+ return T @ R @ S+ out = []+ def walk(i, M):+ nd = g.nodes[i]; M2 = M @ mat(nd)+ if nd.mesh is not None:+ for p in g.meshes[nd.mesh].primitives:+ P = acc(p.attributes.POSITION); out.append((M2 @ np.c_[P, np.ones(len(P))].T).T[:, :3])+ for c in nd.children or []: walk(c, M2)+ for r in g.scenes[g.scene or 0].nodes: walk(r, np.eye(4))+ return np.vstack(out) if out else np.zeros((0, 3))+++def align_check(g, pads):+ """The chip's lowest geometry (its contacts) must sit over the pads: compare extents in both axes."""+ W = world_points(g) * 1000.0+ if not len(W): return dict(ok=False, why='no physical geometry')+ zmin = W[:, 2].min(); low = W[W[:, 2] < zmin + max(0.08, 0.05 * (W[:, 2].max() - zmin))]+ px = [v[0] for p in pads for v in pad_outline(p)]; py = [-v[1] for p in pads for v in pad_outline(p)]+ pad_box = (min(px), max(px), min(py), max(py)); c_box = (low[:, 0].min(), low[:, 0].max(), low[:, 1].min(), low[:, 1].max())+ # contacts centred on the pad field and not wider than it (+ tolerance); a rotated model fails both+ cx_p, cy_p = (pad_box[0] + pad_box[1]) / 2, (pad_box[2] + pad_box[3]) / 2+ cx_c, cy_c = (c_box[0] + c_box[1]) / 2, (c_box[2] + c_box[3]) / 2+ tol = max(0.25, 0.08 * max(pad_box[1] - pad_box[0], pad_box[3] - pad_box[2]))+ # Orientation: a model turned 90 degrees swaps the long axis of its contacts against the pad field. A+ # leadless body (QFN/WSON) rests its whole underside on the seating plane, so width alone proves nothing.+ pw, ph = pad_box[1] - pad_box[0], pad_box[3] - pad_box[2]; cw, ch = c_box[1] - c_box[0], c_box[3] - c_box[2]+ flipped = (pw > 1.25 * ph and ch > 1.25 * cw) or (ph > 1.25 * pw and cw > 1.25 * ch)+ off = math.hypot(cx_c - cx_p, cy_c - cy_p)+ return dict(ok=bool(off <= tol and not flipped), centre_offset_mm=round(off, 3), tolerance_mm=round(tol, 3), orientation_flipped=bool(flipped),+ contacts_bbox_mm=[round(v, 3) for v in c_box], pads_bbox_mm=[round(v, 3) for v in pad_box], seating_z_mm=round(float(zmin), 3))+++def sha(path): return hashlib.sha256(open(path, 'rb').read()).hexdigest()+++def build(src_glb, kmod, page_json, out, mpn=None, png=None):+ pads, silk, mdl = parse_footprint(kmod)+ if not pads: raise SystemExit(f'{kmod}: no copper pads')+ pj = json.load(open(page_json)); comp = pj.get('component') or {}+ names = {str(p.get('number')): (p.get('name') or '').strip() for p in comp.get('pins') or []}+ mpn = mpn or comp.get('mpn') or os.path.basename(out).replace('-hero.glb', '').upper()+ prm = scale_params(pads)+ g = GLTF2().load(src_glb)+ chk = align_check(g, pads)+ if mdl and (any(abs(v) > 1e-6 for v in mdl['rotate']) or any(abs(v) > 1e-6 for v in mdl['offset'])):+ chk['model_transform_in_footprint'] = mdl+ # --- artwork+ pad_tris = []+ for p in pads:+ o = pad_outline(p); per = sum(math.hypot(b[0] - a[0], b[1] - a[1]) for a, b in zip(o, o[1:]))+ dsh = min(prm['dash_mm'], max(per / 6, 0.05)); w = min(prm['pad_stroke_mm'], max(per / 25, 0.02))+ for d in dashes(o, dsh, 0.6 * dsh): pad_tris += stroke_quads(d, w)+ silk_tris = []+ for kind, pts, w in silk:+ if 'REF' in str(pts): continue+ silk_tris += fill_tris([pts[:-1] if pts[0] == pts[-1] else pts]) if kind == 'fill' and len(pts) >= 4 else stroke_quads(pts, w)+ dot = pin1_dot(pads, names, silk)+ existing_mark = bool(dot) and dot[0] == 'existing'+ if dot and not existing_mark:+ x, y, r, _ = dot+ ring = [(x + r * math.cos(t), y + r * math.sin(t)) for t in np.linspace(0, 2 * math.pi, 33)[:-1]]+ silk_tris += fill_tris([ring])+ obstacles = [(min(q[0] for q in pts), max(q[0] for q in pts), min(q[1] for q in pts), max(q[1] for q in pts)) for kind, pts, _ in silk if kind == 'fill']+ if dot and not existing_mark: obstacles.append((dot[0] - dot[2], dot[0] + dot[2], dot[1] - dot[2], dot[1] + dot[2]))+ plan, why_no_labels = label_plan(pads, names, obstacles)+ name_up, name_down = [], []+ for lb in plan:+ t = text_tris(lb['text'], lb['h'], lb['x'], lb['y'], lb['align'], lb['vertical'])+ name_up += t; name_down += mirror_label(t)+ name_up, name_down = facing(name_up, True), facing(name_down, False)+ # --- materials, meshes, root node+ blob = bytearray(g.binary_blob() or b'')+ blob += b'\x00' * ((4 - len(blob) % 4) % 4)+ mats = []+ for nm, col in (PAD_MAT, SILK_MAT, NAME_MAT):+ # Names are single-sided: an upward copy and a mirrored downward copy, so they read from either side.+ g.materials.append(Material(name=nm, pbrMetallicRoughness=PbrMetallicRoughness(baseColorFactor=col, metallicFactor=0.0, roughnessFactor=1.0),+ alphaMode='BLEND', doubleSided=(nm != NAME_MAT[0]), extensions={'KHR_materials_unlit': {}}))+ mats.append(len(g.materials) - 1)+ kids = []+ for (nm, _), prims in zip((PAD_MAT, SILK_MAT, NAME_MAT),+ ([(mats[0], pad_tris)], [(mats[1], silk_tris)], [(mats[2], name_up), (mats[2], name_down)])):+ ni, blob = add_mesh(g, blob, nm, prims)+ if ni is not None: kids.append(ni)+ g.nodes.append(Node(name=ROOT, children=kids)); g.scenes[g.scene or 0].nodes.append(len(g.nodes) - 1)+ g.buffers[0].byteLength = len(blob); g.set_binary_blob(bytes(blob))+ if 'KHR_materials_unlit' not in (g.extensionsUsed or []): g.extensionsUsed = (g.extensionsUsed or []) + ['KHR_materials_unlit']+ layers = dict(pad_outlines=dict(material=PAD_MAT[0], rgba=PAD_MAT[1], pads=len(pads), **prm),+ silkscreen=dict(material=SILK_MAT[0], rgba=SILK_MAT[1], footprint_items=len(silk),+ pin1=(dict(source='footprint silkscreen', pad=dot[1]) if existing_mark else+ dict(source='added dot (AI)', pad=dot[3], center_mm=[round(dot[0], 3), round(dot[1], 3)], r_mm=round(dot[2], 3)) if dot else None)),+ signal_names=dict(material=NAME_MAT[0], rgba=NAME_MAT[1], font='DejaVu Sans Mono', labels=len(plan), sides='top + mirrored underside (single-sided)',+ omitted=why_no_labels, fallback_to_pad_number=sum(1 for lb in plan if lb['text'] == lb['pad'])))+ hero = dict(spec=SPEC, mpn=mpn, kind='component + footprint reference art', board_use=False, plane_z_mm=Z, units='metre', upAxis='Z',+ layers=layers, align=chk, sources=dict(glb=os.path.basename(src_glb), glb_sha256=sha(src_glb),+ footprint=os.path.basename(kmod), footprint_sha256=sha(kmod), pins='page.json component.pins'), generator='factory/hero_glb.py')+ ex = g.asset.extras if isinstance(g.asset.extras, dict) else {}+ ex['adomHero'] = hero; g.asset.extras = ex+ g.save_binary(out)+ side = dict(hero, labels=[{k: (round(v, 3) if isinstance(v, float) else v) for k, v in lb.items()} for lb in plan],+ pads=[dict(number=p['number'], shape=p['shape'], center_mm=[p['x'], p['y']], size_mm=[p['w'], p['h']], rot=p['rot']) for p in pads])+ json.dump(side, open(out.replace('.glb', '.overlay.json'), 'w'), indent=1)+ if png: preview(out, png, pads, plan, dot)+ return hero+++# ---------------------------------------------------------------- quick preview (top + oblique) for review+def preview(glb, png, pads, plan, dot):+ import matplotlib; matplotlib.use('Agg')+ import matplotlib.pyplot as plt+ from matplotlib.collections import PolyCollection+ from mpl_toolkits.mplot3d.art3d import Poly3DCollection+ g = GLTF2().load(glb)+ blob = g.binary_blob()+ CT = {5126: ('f', 4), 5123: ('H', 2), 5125: ('I', 4), 5121: ('B', 1), 5122: ('h', 2), 5120: ('b', 1)}+ NC = {'SCALAR': 1, 'VEC2': 2, 'VEC3': 3, 'VEC4': 4}+ def acc(i):+ a = g.accessors[i]; bv = g.bufferViews[a.bufferView]; t, sz = CT[a.componentType]; nc = NC[a.type]+ st = bv.byteStride or sz * nc; o = (bv.byteOffset or 0) + (a.byteOffset or 0)+ v = np.array([struct.unpack_from('<' + t * nc, blob, o + k * st) for k in range(a.count)], dtype=float)+ if a.normalized: v = v / {5122: 32767, 5120: 127, 5123: 65535, 5121: 255}[a.componentType]+ return v+ def mat(nd):+ if nd.matrix: return np.array(nd.matrix).reshape(4, 4).T+ T = np.eye(4); R = np.eye(4); S = np.eye(4)+ if nd.translation: T[:3, 3] = nd.translation+ if nd.rotation:+ x, y, z, w = nd.rotation+ R[:3, :3] = [[1 - 2 * (y * y + z * z), 2 * (x * y - z * w), 2 * (x * z + y * w)], [2 * (x * y + z * w), 1 - 2 * (x * x + z * z), 2 * (y * z - x * w)], [2 * (x * z - y * w), 2 * (y * z + x * w), 1 - 2 * (x * x + y * y)]]+ if nd.scale: S[:3, :3] = np.diag(nd.scale)+ return T @ R @ S+ tris = [] # (3x3 mm, rgba)+ def walk(i, M):+ nd = g.nodes[i]; M2 = M @ mat(nd)+ if nd.mesh is not None:+ for p in g.meshes[nd.mesh].primitives:+ P = acc(p.attributes.POSITION) ; P = (M2 @ np.c_[P, np.ones(len(P))].T).T[:, :3] * 1000+ I = acc(p.indices).astype(int).reshape(-1, 3) if p.indices is not None else np.arange(len(P)).reshape(-1, 3)+ m = g.materials[p.material] if p.material is not None else None+ col = list(m.pbrMetallicRoughness.baseColorFactor) if m and m.pbrMetallicRoughness and m.pbrMetallicRoughness.baseColorFactor else [.6, .6, .6, 1]+ for t in I: tris.append((P[t], col))+ for c in nd.children or []: walk(c, M2)+ for r in g.scenes[g.scene or 0].nodes: walk(r, np.eye(4))+ fig = plt.figure(figsize=(14, 7), facecolor='#1b1e24')+ ax = fig.add_subplot(1, 2, 1); ax.set_facecolor('#2a2e36'); ax.set_aspect('equal')+ phys = [(t, c) for t, c in tris if c[3] >= 0.99]; art = [(t, c) for t, c in tris if c[3] < 0.99]+ # top view: physical first (light shading by height), artwork drawn on top so the review sees both+ zs = np.array([t[:, 2].mean() for t, _ in phys]) if phys else np.array([0])+ order = np.argsort(zs)+ ax.add_collection(PolyCollection([phys[i][0][:, :2] for i in order], facecolors=[tuple(np.array(phys[i][1][:3]) * 0.7) + (0.55,) for i in order], edgecolors='none'))+ ax.add_collection(PolyCollection([t[:, :2] for t, _ in art], facecolors=[tuple(c[:3]) + (min(1, c[3] + 0.35),) for _, c in art], edgecolors='none'))+ allp = np.vstack([t for t, _ in tris]); pad = 0.6+ ax.set_xlim(allp[:, 0].min() - pad, allp[:, 0].max() + pad); ax.set_ylim(allp[:, 1].min() - pad, allp[:, 1].max() + pad)+ ax.set_title('top (artwork over a translucent body)', color='w', fontsize=10); ax.tick_params(colors='#888')+ ax3 = fig.add_subplot(1, 2, 2, projection='3d'); ax3.set_facecolor('#2a2e36')+ ax3.add_collection3d(Poly3DCollection([t for t, _ in tris], facecolors=[tuple(c[:3]) + (c[3],) for _, c in tris], edgecolors='none'))+ rng = allp.max(0) - allp.min(0); mid = (allp.max(0) + allp.min(0)) / 2; R = rng.max() / 2+ ax3.set_xlim(mid[0] - R, mid[0] + R); ax3.set_ylim(mid[1] - R, mid[1] + R); ax3.set_zlim(mid[2] - R * 0.6, mid[2] + R * 0.6)+ ax3.view_init(elev=38, azim=-60); ax3.set_axis_off(); ax3.set_title('oblique', color='w', fontsize=10)+ fig.suptitle(os.path.basename(glb), color='w'); fig.tight_layout(); fig.savefig(png, dpi=110); plt.close(fig)+++if __name__ == '__main__':+ ap = argparse.ArgumentParser()+ ap.add_argument('glb'); ap.add_argument('kicad_mod'); ap.add_argument('page_json'); ap.add_argument('out')+ ap.add_argument('--mpn'); ap.add_argument('--png')+ a = ap.parse_args()+ h = build(a.glb, a.kicad_mod, a.page_json, a.out, a.mpn, a.png)+ L = h['layers']+ print(f"OK {a.out}: pads {L['pad_outlines']['pads']}, silk items {L['silkscreen']['footprint_items']}, "+ f"pin1 {(L['silkscreen']['pin1'] or {}).get('source', 'none')}, labels {L['signal_names']['labels']}"+ f"{' (' + L['signal_names']['omitted'] + ')' if L['signal_names']['omitted'] else ''}; "+ f"align {'OK' if h['align']['ok'] else 'FAIL'} (offset {h['align'].get('centre_offset_mm')} mm)")
provenance/tools/hero_glyphs.jsonadded+15456@@ -0,0 +1,15456 @@+{+ "font": "DejaVu Sans Mono",+ "units": "em (font size 1)",+ "advance": 0.602,+ "glyphs": {+ " ": {+ "v": [],+ "t": []+ },+ "!": {+ "v": [+ 0.25203,+ 0.72906,+ 0.35109,+ 0.72906,+ 0.35109,+ 0.40922,+ 0.34078,+ 0.23484,+ 0.26219,+ 0.23484,+ 0.25203,+ 0.40922,+ 0.25203,+ 0.12406,+ 0.35109,+ 0.12406,+ 0.35109,+ 0.0,+ 0.25203,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2,+ 7,+ 6,+ 9,+ 7,+ 9,+ 8+ ]+ },+ "\"": {+ "v": [+ 0.43703,+ 0.72906,+ 0.43703,+ 0.45797,+ 0.35203,+ 0.45797,+ 0.35203,+ 0.72906,+ 0.25,+ 0.72906,+ 0.25,+ 0.45797,+ 0.165,+ 0.45797,+ 0.165,+ 0.72906+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2,+ 5,+ 4,+ 7,+ 5,+ 7,+ 6+ ]+ },+ "#": {+ "v": [+ 0.33406,+ 0.71781,+ 0.28328,+ 0.51516,+ 0.40281,+ 0.51516,+ 0.45406,+ 0.71781,+ 0.53219,+ 0.71781,+ 0.48094,+ 0.51516,+ 0.60016,+ 0.51516,+ 0.60016,+ 0.44,+ 0.46297,+ 0.44,+ 0.42188,+ 0.27687,+ 0.54391,+ 0.27687,+ 0.54391,+ 0.20219,+ 0.40281,+ 0.20219,+ 0.35203,+ 0.0,+ 0.27391,+ 0.0,+ 0.32516,+ 0.20219,+ 0.20516,+ 0.20219,+ 0.15375,+ 0.0,+ 0.07625,+ 0.0,+ 0.12703,+ 0.20219,+ 0.00094,+ 0.20219,+ 0.00094,+ 0.27687,+ 0.14594,+ 0.27687,+ 0.18703,+ 0.44,+ 0.05719,+ 0.44,+ 0.05719,+ 0.51516,+ 0.20516,+ 0.51516,+ 0.25594,+ 0.71781,+ 0.38484,+ 0.44,+ 0.26516,+ 0.44,+ 0.22406,+ 0.27687,+ 0.34422,+ 0.27687+ ],+ "t": [+ 22,+ 30,+ 29,+ 31,+ 21,+ 20,+ 31,+ 20,+ 19,+ 19,+ 18,+ 17,+ 19,+ 17,+ 16,+ 15,+ 14,+ 13,+ 15,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 9,+ 12,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 1,+ 0,+ 27,+ 1,+ 27,+ 26,+ 26,+ 25,+ 24,+ 26,+ 24,+ 23,+ 23,+ 22,+ 29,+ 31,+ 19,+ 16,+ 31,+ 16,+ 15,+ 31,+ 15,+ 12,+ 31,+ 12,+ 8,+ 31,+ 8,+ 5,+ 1,+ 26,+ 23,+ 1,+ 23,+ 29,+ 1,+ 29,+ 28,+ 28,+ 31,+ 5,+ 28,+ 5,+ 2,+ 28,+ 2,+ 1+ ]+ },+ "$": {+ "v": [+ 0.33797,+ -0.14703,+ 0.28906,+ -0.14703,+ 0.28859,+ 0.0,+ 0.23895,+ 0.00465,+ 0.18969,+ 0.01359,+ 0.14094,+ 0.02707,+ 0.09281,+ 0.045,+ 0.09281,+ 0.13281,+ 0.14176,+ 0.10605,+ 0.19109,+ 0.08641,+ 0.24043,+ 0.0741,+ 0.28906,+ 0.06938,+ 0.28906,+ 0.29297,+ 0.20348,+ 0.31543,+ 0.14203,+ 0.3525,+ 0.10512,+ 0.40418,+ 0.09281,+ 0.47016,+ 0.10566,+ 0.5391,+ 0.14422,+ 0.5925,+ 0.20621,+ 0.62844,+ 0.28906,+ 0.645,+ 0.28906,+ 0.75984,+ 0.33797,+ 0.75984,+ 0.33844,+ 0.645,+ 0.37727,+ 0.64141,+ 0.41656,+ 0.63531,+ 0.45645,+ 0.62664,+ 0.49703,+ 0.61531,+ 0.49703,+ 0.53078,+ 0.45613,+ 0.54934,+ 0.41625,+ 0.56312,+ 0.37707,+ 0.5723,+ 0.33797,+ 0.57672,+ 0.33797,+ 0.36625,+ 0.42648,+ 0.34305,+ 0.49109,+ 0.30375,+ 0.5307,+ 0.24941,+ 0.54391,+ 0.18109,+ 0.52969,+ 0.11215,+ 0.48703,+ 0.05563,+ 0.42145,+ 0.0168,+ 0.33844,+ 0.00094,+ 0.33797,+ 0.28328,+ 0.33797,+ 0.07125,+ 0.38574,+ 0.07949,+ 0.42188,+ 0.10109,+ 0.44461,+ 0.13453,+ 0.45219,+ 0.17828,+ 0.44535,+ 0.21855,+ 0.42484,+ 0.24875,+ 0.38945,+ 0.26996,+ 0.28906,+ 0.37594,+ 0.28906,+ 0.57766,+ 0.24383,+ 0.5693,+ 0.20969,+ 0.54828,+ 0.18824,+ 0.51633,+ 0.18109,+ 0.47516,+ 0.18773,+ 0.4375,+ 0.20766,+ 0.40859,+ 0.24137,+ 0.38824+ ],+ "t": [+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 8,+ 4,+ 3,+ 8,+ 3,+ 2,+ 2,+ 1,+ 0,+ 2,+ 0,+ 41,+ 2,+ 41,+ 40,+ 2,+ 40,+ 39,+ 2,+ 39,+ 38,+ 2,+ 38,+ 37,+ 37,+ 36,+ 35,+ 37,+ 35,+ 34,+ 37,+ 34,+ 33,+ 29,+ 28,+ 27,+ 29,+ 27,+ 26,+ 29,+ 26,+ 25,+ 29,+ 25,+ 24,+ 29,+ 24,+ 23,+ 23,+ 22,+ 21,+ 23,+ 21,+ 20,+ 23,+ 20,+ 19,+ 23,+ 19,+ 18,+ 23,+ 18,+ 17,+ 23,+ 17,+ 16,+ 16,+ 56,+ 55,+ 16,+ 55,+ 54,+ 57,+ 56,+ 16,+ 57,+ 16,+ 15,+ 57,+ 15,+ 14,+ 57,+ 14,+ 13,+ 9,+ 8,+ 2,+ 30,+ 29,+ 23,+ 23,+ 16,+ 54,+ 23,+ 54,+ 53,+ 23,+ 53,+ 52,+ 23,+ 52,+ 51,+ 58,+ 57,+ 13,+ 58,+ 13,+ 12,+ 10,+ 9,+ 2,+ 31,+ 30,+ 23,+ 59,+ 58,+ 12,+ 11,+ 10,+ 2,+ 32,+ 31,+ 23,+ 32,+ 23,+ 51,+ 51,+ 59,+ 12,+ 43,+ 11,+ 2,+ 33,+ 32,+ 51,+ 33,+ 51,+ 12,+ 33,+ 12,+ 11,+ 11,+ 43,+ 42,+ 44,+ 43,+ 2,+ 33,+ 11,+ 42,+ 33,+ 42,+ 50,+ 33,+ 50,+ 49,+ 45,+ 44,+ 2,+ 45,+ 2,+ 37,+ 37,+ 33,+ 49,+ 37,+ 49,+ 48,+ 37,+ 48,+ 47,+ 37,+ 47,+ 46,+ 37,+ 46,+ 45+ ]+ },+ "%": {+ "v": [+ 0.27391,+ 0.15578,+ 0.28512,+ 0.21652,+ 0.31875,+ 0.26688,+ 0.36887,+ 0.30074,+ 0.42922,+ 0.31203,+ 0.45965,+ 0.3091,+ 0.48844,+ 0.30031,+ 0.51516,+ 0.2859,+ 0.53906,+ 0.26609,+ 0.55898,+ 0.2418,+ 0.57375,+ 0.21484,+ 0.58289,+ 0.18594,+ 0.58594,+ 0.15578,+ 0.57457,+ 0.09566,+ 0.54047,+ 0.04531,+ 0.49,+ 0.01133,+ 0.42922,+ 0.0,+ 0.36828,+ 0.01117,+ 0.31828,+ 0.04469,+ 0.285,+ 0.0948,+ 0.33984,+ 0.15578,+ 0.34625,+ 0.1207,+ 0.36547,+ 0.09172,+ 0.39422,+ 0.07238,+ 0.42922,+ 0.06594,+ 0.46398,+ 0.07246,+ 0.49297,+ 0.09203,+ 0.51254,+ 0.12102,+ 0.51906,+ 0.15578,+ 0.51246,+ 0.19059,+ 0.49266,+ 0.21969,+ 0.46359,+ 0.23949,+ 0.42922,+ 0.24609,+ 0.39422,+ 0.23961,+ 0.36547,+ 0.22016,+ 0.34625,+ 0.19117,+ 0.05906,+ 0.22703,+ 0.04203,+ 0.27391,+ 0.55078,+ 0.47797,+ 0.57078,+ 0.43109,+ 0.01609,+ 0.54297,+ 0.0273,+ 0.60371,+ 0.06094,+ 0.65406,+ 0.11117,+ 0.68793,+ 0.17188,+ 0.69922,+ 0.20246,+ 0.69629,+ 0.23172,+ 0.6875,+ 0.25863,+ 0.6732,+ 0.28219,+ 0.65375,+ 0.30168,+ 0.6302,+ 0.31609,+ 0.60328,+ 0.32512,+ 0.57391,+ 0.32812,+ 0.54297,+ 0.31676,+ 0.48258,+ 0.28266,+ 0.43234,+ 0.2323,+ 0.39848,+ 0.17188,+ 0.38719,+ 0.11117,+ 0.3984,+ 0.06094,+ 0.43203,+ 0.0273,+ 0.48227,+ 0.08203,+ 0.54297,+ 0.08844,+ 0.50762,+ 0.10766,+ 0.47875,+ 0.13652,+ 0.45953,+ 0.17188,+ 0.45312,+ 0.20668,+ 0.45965,+ 0.23578,+ 0.47922,+ 0.25559,+ 0.5082,+ 0.26219,+ 0.54297,+ 0.25559,+ 0.57773,+ 0.23578,+ 0.60672,+ 0.20668,+ 0.62629,+ 0.17188,+ 0.63281,+ 0.13711,+ 0.62633,+ 0.10812,+ 0.60688,+ 0.08855,+ 0.57801+ ],+ "t": [+ 0,+ 20,+ 35,+ 0,+ 35,+ 34,+ 21,+ 20,+ 0,+ 21,+ 0,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 17,+ 16,+ 15,+ 17,+ 15,+ 14,+ 17,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 13,+ 10,+ 9,+ 13,+ 9,+ 8,+ 13,+ 8,+ 7,+ 13,+ 7,+ 6,+ 13,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 0,+ 5,+ 0,+ 34,+ 5,+ 34,+ 33,+ 5,+ 33,+ 32,+ 5,+ 32,+ 31,+ 5,+ 31,+ 30,+ 5,+ 30,+ 29,+ 22,+ 21,+ 17,+ 13,+ 5,+ 29,+ 13,+ 29,+ 28,+ 13,+ 28,+ 27,+ 13,+ 27,+ 26,+ 13,+ 26,+ 25,+ 23,+ 22,+ 17,+ 17,+ 13,+ 25,+ 17,+ 25,+ 24,+ 17,+ 24,+ 23,+ 37,+ 36,+ 39,+ 37,+ 39,+ 38,+ 40,+ 60,+ 75,+ 40,+ 75,+ 74,+ 61,+ 60,+ 40,+ 61,+ 40,+ 59,+ 61,+ 59,+ 58,+ 61,+ 58,+ 57,+ 57,+ 56,+ 55,+ 57,+ 55,+ 54,+ 57,+ 54,+ 53,+ 53,+ 52,+ 51,+ 53,+ 51,+ 50,+ 53,+ 50,+ 49,+ 53,+ 49,+ 48,+ 53,+ 48,+ 47,+ 53,+ 47,+ 46,+ 53,+ 46,+ 45,+ 45,+ 44,+ 43,+ 45,+ 43,+ 42,+ 45,+ 42,+ 41,+ 45,+ 41,+ 40,+ 45,+ 40,+ 74,+ 45,+ 74,+ 73,+ 45,+ 73,+ 72,+ 45,+ 72,+ 71,+ 45,+ 71,+ 70,+ 45,+ 70,+ 69,+ 62,+ 61,+ 57,+ 53,+ 45,+ 69,+ 53,+ 69,+ 68,+ 53,+ 68,+ 67,+ 53,+ 67,+ 66,+ 53,+ 66,+ 65,+ 63,+ 62,+ 57,+ 57,+ 53,+ 65,+ 57,+ 65,+ 64,+ 57,+ 64,+ 63+ ]+ },+ "&": {+ "v": [+ 0.26703,+ 0.44281,+ 0.47016,+ 0.17,+ 0.48676,+ 0.19707,+ 0.49844,+ 0.23047,+ 0.50547,+ 0.27059,+ 0.50781,+ 0.31781,+ 0.50746,+ 0.33809,+ 0.50641,+ 0.36766,+ 0.50594,+ 0.37109,+ 0.58594,+ 0.37109,+ 0.58594,+ 0.35203,+ 0.58141,+ 0.27824,+ 0.56781,+ 0.21406,+ 0.54516,+ 0.15891,+ 0.51313,+ 0.11188,+ 0.59625,+ 0.0,+ 0.49219,+ 0.0,+ 0.45406,+ 0.05328,+ 0.41234,+ 0.02344,+ 0.36812,+ 0.00234,+ 0.32117,+ -0.01008,+ 0.27094,+ -0.01422,+ 0.17461,+ 0.00219,+ 0.09656,+ 0.05141,+ 0.045,+ 0.12566,+ 0.02781,+ 0.21688,+ 0.03621,+ 0.28129,+ 0.06141,+ 0.34078,+ 0.10371,+ 0.39586,+ 0.16312,+ 0.44672,+ 0.14191,+ 0.48152,+ 0.12703,+ 0.51562,+ 0.11824,+ 0.54961,+ 0.11531,+ 0.58406,+ 0.12742,+ 0.64953,+ 0.16375,+ 0.69969,+ 0.22133,+ 0.73156,+ 0.29688,+ 0.74219,+ 0.32867,+ 0.7407,+ 0.36063,+ 0.73625,+ 0.39316,+ 0.7291,+ 0.42672,+ 0.71922,+ 0.42672,+ 0.62984,+ 0.3975,+ 0.64641,+ 0.36734,+ 0.65797,+ 0.33609,+ 0.66477,+ 0.30328,+ 0.66703,+ 0.26094,+ 0.66145,+ 0.22859,+ 0.64469,+ 0.20809,+ 0.61867,+ 0.20125,+ 0.585,+ 0.20477,+ 0.55543,+ 0.21531,+ 0.52453,+ 0.23535,+ 0.4884,+ 0.20312,+ 0.39203,+ 0.16391,+ 0.35535,+ 0.13594,+ 0.31656,+ 0.1193,+ 0.27555,+ 0.11375,+ 0.23187,+ 0.12594,+ 0.16453,+ 0.1625,+ 0.10969,+ 0.21813,+ 0.07324,+ 0.28719,+ 0.06109,+ 0.30812,+ 0.06254,+ 0.33,+ 0.06688,+ 0.35227,+ 0.07414,+ 0.37406,+ 0.08406,+ 0.38605,+ 0.09086,+ 0.39578,+ 0.09688,+ 0.40418,+ 0.1027,+ 0.41219,+ 0.10891+ ],+ "t": [+ 25,+ 58,+ 57,+ 25,+ 57,+ 56,+ 25,+ 56,+ 55,+ 59,+ 58,+ 25,+ 59,+ 25,+ 24,+ 59,+ 24,+ 23,+ 59,+ 23,+ 22,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 22,+ 18,+ 17,+ 17,+ 16,+ 15,+ 17,+ 15,+ 14,+ 17,+ 14,+ 13,+ 17,+ 13,+ 12,+ 17,+ 12,+ 11,+ 17,+ 11,+ 10,+ 17,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 9,+ 5,+ 4,+ 9,+ 4,+ 3,+ 9,+ 3,+ 2,+ 43,+ 42,+ 41,+ 43,+ 41,+ 40,+ 43,+ 40,+ 39,+ 43,+ 39,+ 38,+ 43,+ 38,+ 37,+ 43,+ 37,+ 36,+ 36,+ 35,+ 34,+ 36,+ 34,+ 33,+ 36,+ 33,+ 32,+ 36,+ 32,+ 31,+ 36,+ 31,+ 30,+ 36,+ 30,+ 29,+ 29,+ 28,+ 27,+ 29,+ 27,+ 26,+ 29,+ 26,+ 25,+ 29,+ 25,+ 55,+ 29,+ 55,+ 54,+ 29,+ 54,+ 70,+ 60,+ 59,+ 22,+ 17,+ 9,+ 2,+ 17,+ 2,+ 1,+ 17,+ 1,+ 0,+ 17,+ 0,+ 53,+ 17,+ 53,+ 52,+ 44,+ 43,+ 36,+ 61,+ 60,+ 22,+ 45,+ 44,+ 36,+ 62,+ 61,+ 22,+ 62,+ 22,+ 17,+ 46,+ 45,+ 36,+ 63,+ 62,+ 17,+ 47,+ 46,+ 36,+ 64,+ 63,+ 17,+ 48,+ 47,+ 36,+ 65,+ 64,+ 17,+ 49,+ 48,+ 36,+ 49,+ 36,+ 29,+ 66,+ 65,+ 17,+ 50,+ 49,+ 29,+ 67,+ 66,+ 17,+ 51,+ 50,+ 29,+ 68,+ 67,+ 17,+ 52,+ 51,+ 29,+ 52,+ 29,+ 70,+ 69,+ 68,+ 17,+ 17,+ 52,+ 70,+ 17,+ 70,+ 69+ ]+ },+ "'": {+ "v": [+ 0.34281,+ 0.72906,+ 0.34281,+ 0.45797,+ 0.25781,+ 0.45797,+ 0.25781,+ 0.72906+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "(": {+ "v": [+ 0.43219,+ 0.75875,+ 0.37543,+ 0.64766,+ 0.33516,+ 0.53687,+ 0.31125,+ 0.42582,+ 0.30328,+ 0.31391,+ 0.31125,+ 0.20238,+ 0.33516,+ 0.09125,+ 0.37543,+ -0.01992,+ 0.43219,+ -0.13187,+ 0.35406,+ -0.13187,+ 0.28969,+ -0.01719,+ 0.24406,+ 0.09438,+ 0.21699,+ 0.20434,+ 0.20797,+ 0.31391,+ 0.21699,+ 0.42316,+ 0.24406,+ 0.53312,+ 0.28969,+ 0.64477,+ 0.35406,+ 0.75875+ ],+ "t": [+ 1,+ 0,+ 17,+ 1,+ 17,+ 16,+ 1,+ 16,+ 15,+ 1,+ 15,+ 14,+ 1,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 13,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 2,+ 1,+ 13,+ 13,+ 9,+ 5,+ 13,+ 5,+ 4,+ 13,+ 4,+ 3,+ 13,+ 3,+ 2+ ]+ },+ ")": {+ "v": [+ 0.17,+ 0.75875,+ 0.24813,+ 0.75875,+ 0.31234,+ 0.64477,+ 0.35781,+ 0.53312,+ 0.385,+ 0.42316,+ 0.39406,+ 0.31391,+ 0.385,+ 0.20395,+ 0.35781,+ 0.09375,+ 0.31234,+ -0.01781,+ 0.24813,+ -0.13187,+ 0.17,+ -0.13187,+ 0.22664,+ -0.01922,+ 0.26688,+ 0.09219,+ 0.2909,+ 0.20309,+ 0.29891,+ 0.31391,+ 0.2909,+ 0.42516,+ 0.26688,+ 0.53609,+ 0.22664,+ 0.64723+ ],+ "t": [+ 1,+ 0,+ 17,+ 1,+ 17,+ 16,+ 1,+ 16,+ 15,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 11,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 15,+ 5,+ 15,+ 14,+ 5,+ 14,+ 13,+ 5,+ 13,+ 12,+ 5,+ 12,+ 11+ ]+ },+ "*": {+ "v": [+ 0.52094,+ 0.60891,+ 0.34625,+ 0.51422,+ 0.52094,+ 0.41891,+ 0.49313,+ 0.37109,+ 0.32906,+ 0.47016,+ 0.32906,+ 0.28609,+ 0.27297,+ 0.28609,+ 0.27297,+ 0.47016,+ 0.10891,+ 0.37109,+ 0.08109,+ 0.41891,+ 0.25594,+ 0.51422,+ 0.08109,+ 0.60891,+ 0.10891,+ 0.65719,+ 0.27297,+ 0.55812,+ 0.27297,+ 0.74219,+ 0.32906,+ 0.74219,+ 0.32906,+ 0.55812,+ 0.49313,+ 0.65719+ ],+ "t": [+ 1,+ 0,+ 17,+ 1,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 4,+ 3,+ 2,+ 4,+ 2,+ 1,+ 4,+ 1,+ 16,+ 4,+ 16,+ 13,+ 4,+ 13,+ 10,+ 4,+ 10,+ 7+ ]+ },+ "+": {+ "v": [+ 0.34187,+ 0.57172,+ 0.34187,+ 0.355,+ 0.55906,+ 0.355,+ 0.55906,+ 0.27203,+ 0.34187,+ 0.27203,+ 0.34187,+ 0.05516,+ 0.25984,+ 0.05516,+ 0.25984,+ 0.27203,+ 0.04297,+ 0.27203,+ 0.04297,+ 0.355,+ 0.25984,+ 0.355,+ 0.25984,+ 0.57172+ ],+ "t": [+ 1,+ 0,+ 11,+ 1,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 4,+ 3,+ 2,+ 4,+ 2,+ 1,+ 4,+ 1,+ 10,+ 4,+ 10,+ 7+ ]+ },+ ",": {+ "v": [+ 0.24516,+ 0.14797,+ 0.36812,+ 0.14797,+ 0.36812,+ 0.04688,+ 0.27203,+ -0.14016,+ 0.19672,+ -0.14016,+ 0.24516,+ 0.04688+ ],+ "t": [+ 1,+ 0,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "-": {+ "v": [+ 0.17391,+ 0.31391,+ 0.42828,+ 0.31391,+ 0.42828,+ 0.23391,+ 0.17391,+ 0.23391+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ ".": {+ "v": [+ 0.23875,+ 0.14891,+ 0.36188,+ 0.14891,+ 0.36188,+ 0.0,+ 0.23875,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "/": {+ "v": [+ 0.43406,+ 0.72906,+ 0.52687,+ 0.72906,+ 0.14313,+ -0.09281,+ 0.04984,+ -0.09281+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "0": {+ "v": [+ 0.23578,+ 0.36625,+ 0.24047,+ 0.39129,+ 0.25453,+ 0.41266,+ 0.27531,+ 0.4273,+ 0.29984,+ 0.43219,+ 0.32523,+ 0.4273,+ 0.34672,+ 0.41266,+ 0.36137,+ 0.39129,+ 0.36625,+ 0.36625,+ 0.36141,+ 0.34098,+ 0.34687,+ 0.31984,+ 0.32551,+ 0.30555,+ 0.29984,+ 0.30078,+ 0.27473,+ 0.30543,+ 0.25406,+ 0.31938,+ 0.24035,+ 0.34039,+ 0.30078,+ 0.74219,+ 0.40328,+ 0.71824,+ 0.47734,+ 0.64641,+ 0.52223,+ 0.52793,+ 0.53719,+ 0.36375,+ 0.52223,+ 0.19988,+ 0.47734,+ 0.08141,+ 0.40328,+ 0.00969,+ 0.30078,+ -0.01422,+ 0.19836,+ 0.00969,+ 0.12453,+ 0.08141,+ 0.07988,+ 0.19988,+ 0.065,+ 0.36375,+ 0.07988,+ 0.52793,+ 0.12453,+ 0.64641,+ 0.19836,+ 0.71824,+ 0.30078,+ 0.66406,+ 0.24063,+ 0.64551,+ 0.19797,+ 0.58984,+ 0.17254,+ 0.49621,+ 0.16406,+ 0.36375,+ 0.17254,+ 0.23164,+ 0.19797,+ 0.13812,+ 0.24063,+ 0.08246,+ 0.30078,+ 0.06391,+ 0.36129,+ 0.08246,+ 0.40406,+ 0.13812,+ 0.42949,+ 0.23164,+ 0.43797,+ 0.36375,+ 0.42949,+ 0.49621,+ 0.40406,+ 0.58984,+ 0.36129,+ 0.64551+ ],+ "t": [+ 1,+ 0,+ 15,+ 1,+ 15,+ 14,+ 1,+ 14,+ 13,+ 1,+ 13,+ 12,+ 1,+ 12,+ 11,+ 1,+ 11,+ 10,+ 1,+ 10,+ 9,+ 1,+ 9,+ 8,+ 1,+ 8,+ 7,+ 1,+ 7,+ 6,+ 1,+ 6,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2,+ 28,+ 36,+ 35,+ 28,+ 35,+ 34,+ 37,+ 36,+ 28,+ 37,+ 28,+ 27,+ 37,+ 27,+ 26,+ 37,+ 26,+ 25,+ 25,+ 24,+ 23,+ 25,+ 23,+ 22,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 18,+ 17,+ 16,+ 18,+ 16,+ 31,+ 31,+ 30,+ 29,+ 31,+ 29,+ 28,+ 31,+ 28,+ 34,+ 31,+ 34,+ 33,+ 31,+ 33,+ 32,+ 31,+ 32,+ 47,+ 38,+ 37,+ 25,+ 18,+ 31,+ 47,+ 18,+ 47,+ 46,+ 18,+ 46,+ 45,+ 18,+ 45,+ 44,+ 18,+ 44,+ 43,+ 39,+ 38,+ 25,+ 22,+ 18,+ 43,+ 22,+ 43,+ 42,+ 22,+ 42,+ 41,+ 22,+ 41,+ 40,+ 40,+ 39,+ 25,+ 40,+ 25,+ 22+ ]+ },+ "1": {+ "v": [+ 0.13187,+ 0.08297,+ 0.28516,+ 0.08297,+ 0.28516,+ 0.64016,+ 0.12016,+ 0.60297,+ 0.12016,+ 0.69281,+ 0.28422,+ 0.72906,+ 0.38281,+ 0.72906,+ 0.38281,+ 0.08297,+ 0.53422,+ 0.08297,+ 0.53422,+ 0.0,+ 0.13187,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 10,+ 1,+ 10,+ 9,+ 9,+ 8,+ 7,+ 7,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 1,+ 9,+ 7,+ 7,+ 5,+ 2,+ 7,+ 2,+ 1+ ]+ },+ "2": {+ "v": [+ 0.18219,+ 0.08297,+ 0.51703,+ 0.08297,+ 0.51703,+ 0.0,+ 0.07422,+ 0.0,+ 0.07422,+ 0.08297,+ 0.15973,+ 0.17359,+ 0.23375,+ 0.25297,+ 0.29156,+ 0.31582,+ 0.32812,+ 0.35687,+ 0.36906,+ 0.41086,+ 0.39406,+ 0.45344,+ 0.40684,+ 0.4907,+ 0.41109,+ 0.52875,+ 0.40211,+ 0.58324,+ 0.37516,+ 0.62453,+ 0.3327,+ 0.65055,+ 0.27687,+ 0.65922,+ 0.23137,+ 0.6552,+ 0.18359,+ 0.64313,+ 0.13336,+ 0.62285,+ 0.08016,+ 0.59422,+ 0.08016,+ 0.69391,+ 0.12992,+ 0.71488,+ 0.17891,+ 0.73,+ 0.22719,+ 0.73914,+ 0.27484,+ 0.74219,+ 0.37141,+ 0.72797,+ 0.44703,+ 0.68531,+ 0.4959,+ 0.61957,+ 0.51219,+ 0.53609,+ 0.50676,+ 0.48922,+ 0.49047,+ 0.44234,+ 0.46199,+ 0.39305,+ 0.42,+ 0.33891,+ 0.38648,+ 0.30105,+ 0.34063,+ 0.25094,+ 0.275,+ 0.1809+ ],+ "t": [+ 0,+ 36,+ 35,+ 0,+ 35,+ 34,+ 0,+ 34,+ 33,+ 0,+ 33,+ 32,+ 0,+ 32,+ 31,+ 0,+ 31,+ 30,+ 0,+ 30,+ 29,+ 0,+ 29,+ 28,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 28,+ 24,+ 23,+ 28,+ 23,+ 22,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 22,+ 18,+ 17,+ 22,+ 17,+ 16,+ 22,+ 16,+ 15,+ 5,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 28,+ 22,+ 15,+ 28,+ 15,+ 14,+ 28,+ 14,+ 13,+ 28,+ 13,+ 12,+ 28,+ 12,+ 11,+ 28,+ 11,+ 10,+ 28,+ 10,+ 9,+ 6,+ 5,+ 3,+ 6,+ 3,+ 0,+ 0,+ 28,+ 9,+ 0,+ 9,+ 8,+ 0,+ 8,+ 7,+ 0,+ 7,+ 6+ ]+ },+ "3": {+ "v": [+ 0.37891,+ 0.39016,+ 0.44223,+ 0.36371,+ 0.48875,+ 0.3225,+ 0.51734,+ 0.26789,+ 0.52687,+ 0.20125,+ 0.50996,+ 0.11141,+ 0.45922,+ 0.04313,+ 0.37859,+ 0.00012,+ 0.27203,+ -0.01422,+ 0.22121,+ -0.01188,+ 0.16937,+ -0.00484,+ 0.11766,+ 0.00648,+ 0.06688,+ 0.02203,+ 0.06688,+ 0.12016,+ 0.11633,+ 0.09754,+ 0.165,+ 0.08156,+ 0.21328,+ 0.07207,+ 0.26125,+ 0.06891,+ 0.33293,+ 0.07805,+ 0.38578,+ 0.10547,+ 0.41836,+ 0.15012,+ 0.42922,+ 0.21094,+ 0.41836,+ 0.26785,+ 0.38578,+ 0.31172,+ 0.33465,+ 0.33973,+ 0.26813,+ 0.34906,+ 0.19281,+ 0.34906,+ 0.19281,+ 0.43016,+ 0.26813,+ 0.43016,+ 0.32852,+ 0.43758,+ 0.37406,+ 0.45984,+ 0.40266,+ 0.49555,+ 0.41219,+ 0.54297,+ 0.40332,+ 0.59254,+ 0.37672,+ 0.62906,+ 0.33379,+ 0.65168,+ 0.27594,+ 0.65922,+ 0.23176,+ 0.65676,+ 0.18609,+ 0.64938,+ 0.13859,+ 0.63723,+ 0.08891,+ 0.62016,+ 0.08891,+ 0.71094,+ 0.14473,+ 0.72461,+ 0.19406,+ 0.73438,+ 0.23766,+ 0.74023,+ 0.27594,+ 0.74219,+ 0.37168,+ 0.72883,+ 0.44609,+ 0.68875,+ 0.49391,+ 0.62656,+ 0.50984,+ 0.54688,+ 0.50145,+ 0.49184,+ 0.47625,+ 0.44672,+ 0.4352,+ 0.41258+ ],+ "t": [+ 0,+ 52,+ 51,+ 0,+ 51,+ 50,+ 0,+ 50,+ 49,+ 0,+ 49,+ 48,+ 48,+ 47,+ 46,+ 48,+ 46,+ 45,+ 48,+ 45,+ 44,+ 48,+ 44,+ 43,+ 48,+ 43,+ 42,+ 48,+ 42,+ 41,+ 41,+ 40,+ 39,+ 41,+ 39,+ 38,+ 41,+ 38,+ 37,+ 41,+ 37,+ 36,+ 41,+ 36,+ 35,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 28,+ 24,+ 23,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 14,+ 11,+ 10,+ 14,+ 10,+ 9,+ 14,+ 9,+ 8,+ 14,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 7,+ 3,+ 2,+ 2,+ 1,+ 0,+ 48,+ 41,+ 35,+ 48,+ 35,+ 34,+ 48,+ 34,+ 33,+ 48,+ 33,+ 32,+ 48,+ 32,+ 31,+ 29,+ 28,+ 23,+ 29,+ 23,+ 22,+ 15,+ 14,+ 7,+ 0,+ 48,+ 31,+ 0,+ 31,+ 30,+ 0,+ 30,+ 29,+ 0,+ 29,+ 22,+ 16,+ 15,+ 7,+ 2,+ 0,+ 22,+ 2,+ 22,+ 21,+ 2,+ 21,+ 20,+ 17,+ 16,+ 7,+ 7,+ 2,+ 20,+ 7,+ 20,+ 19,+ 7,+ 19,+ 18,+ 7,+ 18,+ 17+ ]+ },+ "4": {+ "v": [+ 0.34281,+ 0.72906,+ 0.45703,+ 0.72906,+ 0.45703,+ 0.25391,+ 0.55422,+ 0.25391,+ 0.55422,+ 0.17391,+ 0.45703,+ 0.17391,+ 0.45703,+ 0.0,+ 0.35891,+ 0.0,+ 0.35891,+ 0.17391,+ 0.04984,+ 0.17391,+ 0.04984,+ 0.26703,+ 0.35891,+ 0.63922,+ 0.12891,+ 0.25391,+ 0.35891,+ 0.25391+ ],+ "t": [+ 9,+ 12,+ 11,+ 13,+ 12,+ 9,+ 13,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 2,+ 1,+ 0,+ 0,+ 10,+ 9,+ 0,+ 9,+ 11,+ 13,+ 8,+ 5,+ 13,+ 5,+ 2,+ 2,+ 0,+ 11,+ 2,+ 11,+ 13+ ]+ },+ "5": {+ "v": [+ 0.10109,+ 0.72906,+ 0.47016,+ 0.72906,+ 0.47016,+ 0.64594,+ 0.19094,+ 0.64594,+ 0.19094,+ 0.46687,+ 0.21195,+ 0.47363,+ 0.23312,+ 0.47828,+ 0.25445,+ 0.48098,+ 0.27594,+ 0.48187,+ 0.3775,+ 0.46516,+ 0.45563,+ 0.415,+ 0.50543,+ 0.33629,+ 0.52203,+ 0.23391,+ 0.50461,+ 0.13082,+ 0.45234,+ 0.05219,+ 0.37004,+ 0.00238,+ 0.26219,+ -0.01422,+ 0.20656,+ -0.01227,+ 0.15594,+ -0.00641,+ 0.11043,+ 0.00336,+ 0.06984,+ 0.01703,+ 0.06984,+ 0.11719,+ 0.11484,+ 0.0959,+ 0.16016,+ 0.08078,+ 0.20609,+ 0.07187,+ 0.25297,+ 0.06891,+ 0.32516,+ 0.07965,+ 0.37859,+ 0.11188,+ 0.41176,+ 0.16387,+ 0.42281,+ 0.23391,+ 0.41141,+ 0.30336,+ 0.37719,+ 0.35547,+ 0.32258,+ 0.38805,+ 0.25,+ 0.39891,+ 0.21094,+ 0.39664,+ 0.17281,+ 0.38984,+ 0.13613,+ 0.37863,+ 0.10109,+ 0.36281+ ],+ "t": [+ 0,+ 37,+ 36,+ 0,+ 36,+ 35,+ 0,+ 35,+ 34,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 22,+ 18,+ 17,+ 22,+ 17,+ 16,+ 22,+ 16,+ 15,+ 15,+ 14,+ 13,+ 15,+ 13,+ 12,+ 15,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 11,+ 6,+ 5,+ 11,+ 5,+ 4,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 23,+ 22,+ 15,+ 4,+ 3,+ 0,+ 4,+ 0,+ 34,+ 4,+ 34,+ 33,+ 4,+ 33,+ 32,+ 4,+ 32,+ 31,+ 24,+ 23,+ 15,+ 11,+ 4,+ 31,+ 11,+ 31,+ 30,+ 11,+ 30,+ 29,+ 11,+ 29,+ 28,+ 25,+ 24,+ 15,+ 15,+ 11,+ 28,+ 15,+ 28,+ 27,+ 15,+ 27,+ 26,+ 15,+ 26,+ 25+ ]+ },+ "6": {+ "v": [+ 0.48391,+ 0.71297,+ 0.48391,+ 0.62203,+ 0.45215,+ 0.63801,+ 0.41844,+ 0.64969,+ 0.38305,+ 0.65684,+ 0.34625,+ 0.65922,+ 0.26383,+ 0.64156,+ 0.20406,+ 0.58859,+ 0.16785,+ 0.50145,+ 0.15578,+ 0.38094,+ 0.18371,+ 0.42402,+ 0.22063,+ 0.45578,+ 0.26523,+ 0.47535,+ 0.31594,+ 0.48187,+ 0.40949,+ 0.4657,+ 0.47922,+ 0.41719,+ 0.5227,+ 0.33902,+ 0.53719,+ 0.23391,+ 0.52227,+ 0.12906,+ 0.4775,+ 0.05078,+ 0.40586,+ 0.00203,+ 0.31,+ -0.01422,+ 0.20008,+ 0.00855,+ 0.12406,+ 0.07687,+ 0.07977,+ 0.19414,+ 0.065,+ 0.36375,+ 0.08273,+ 0.52637,+ 0.13594,+ 0.64516,+ 0.22297,+ 0.71793,+ 0.34187,+ 0.74219,+ 0.37797,+ 0.74027,+ 0.41406,+ 0.73453,+ 0.44957,+ 0.72539,+ 0.30812,+ 0.40484,+ 0.25184,+ 0.39348,+ 0.20891,+ 0.35938,+ 0.18184,+ 0.30527,+ 0.17281,+ 0.23391,+ 0.18184,+ 0.16242,+ 0.20891,+ 0.10828,+ 0.25184,+ 0.0743,+ 0.30812,+ 0.06297,+ 0.36551,+ 0.07375,+ 0.40672,+ 0.10609,+ 0.43168,+ 0.15969,+ 0.44,+ 0.23391,+ 0.43168,+ 0.3084,+ 0.40672,+ 0.36188,+ 0.36551,+ 0.3941+ ],+ "t": [+ 25,+ 37,+ 36,+ 25,+ 36,+ 35,+ 25,+ 35,+ 34,+ 25,+ 34,+ 33,+ 38,+ 37,+ 25,+ 38,+ 25,+ 24,+ 38,+ 24,+ 23,+ 38,+ 23,+ 22,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 14,+ 11,+ 10,+ 14,+ 10,+ 9,+ 2,+ 1,+ 0,+ 2,+ 0,+ 32,+ 2,+ 32,+ 31,+ 2,+ 31,+ 30,+ 2,+ 30,+ 29,+ 2,+ 29,+ 28,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 39,+ 38,+ 22,+ 3,+ 2,+ 28,+ 40,+ 39,+ 22,+ 4,+ 3,+ 28,+ 41,+ 40,+ 22,+ 5,+ 4,+ 28,+ 42,+ 41,+ 22,+ 42,+ 22,+ 18,+ 6,+ 5,+ 28,+ 43,+ 42,+ 18,+ 7,+ 6,+ 28,+ 7,+ 28,+ 25,+ 44,+ 43,+ 18,+ 8,+ 7,+ 25,+ 45,+ 44,+ 18,+ 9,+ 8,+ 25,+ 9,+ 25,+ 33,+ 46,+ 45,+ 18,+ 46,+ 18,+ 14,+ 14,+ 9,+ 33,+ 14,+ 33,+ 48,+ 14,+ 48,+ 47,+ 14,+ 47,+ 46+ ]+ },+ "7": {+ "v": [+ 0.06781,+ 0.72906,+ 0.52687,+ 0.72906,+ 0.52687,+ 0.68703,+ 0.26609,+ 0.0,+ 0.16312,+ 0.0,+ 0.41703,+ 0.64594,+ 0.06781,+ 0.64594+ ],+ "t": [+ 1,+ 0,+ 6,+ 1,+ 6,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "8": {+ "v": [+ 0.21484,+ 0.38719,+ 0.15875,+ 0.41023,+ 0.11641,+ 0.44719,+ 0.08992,+ 0.49574,+ 0.08109,+ 0.55328,+ 0.09586,+ 0.63117,+ 0.14016,+ 0.69109,+ 0.20984,+ 0.72941,+ 0.30078,+ 0.74219,+ 0.39207,+ 0.72941,+ 0.46188,+ 0.69109,+ 0.50617,+ 0.63117,+ 0.52094,+ 0.55328,+ 0.51207,+ 0.49574,+ 0.48547,+ 0.44719,+ 0.44324,+ 0.41023,+ 0.38719,+ 0.38719,+ 0.45184,+ 0.36289,+ 0.49922,+ 0.32219,+ 0.5284,+ 0.26621,+ 0.53812,+ 0.19578,+ 0.52238,+ 0.10789,+ 0.47516,+ 0.04141,+ 0.40008,+ -0.00031,+ 0.30078,+ -0.01422,+ 0.20164,+ -0.00035,+ 0.12672,+ 0.04125,+ 0.07961,+ 0.10738,+ 0.06391,+ 0.19484,+ 0.07359,+ 0.2657,+ 0.10266,+ 0.32203,+ 0.15016,+ 0.36285,+ 0.30078,+ 0.34625,+ 0.24234,+ 0.33703,+ 0.19891,+ 0.30938,+ 0.17207,+ 0.26488,+ 0.16312,+ 0.20516,+ 0.17219,+ 0.1452,+ 0.19937,+ 0.10031,+ 0.24293,+ 0.0723,+ 0.30078,+ 0.06297,+ 0.35953,+ 0.07219,+ 0.40297,+ 0.09984,+ 0.42992,+ 0.14461,+ 0.43891,+ 0.20516,+ 0.4298,+ 0.26457,+ 0.4025,+ 0.30906,+ 0.35895,+ 0.33695,+ 0.17922,+ 0.54391,+ 0.18703,+ 0.49227,+ 0.21047,+ 0.45453,+ 0.24867,+ 0.43156,+ 0.30078,+ 0.42391,+ 0.35324,+ 0.43156,+ 0.39156,+ 0.45453,+ 0.415,+ 0.49227,+ 0.42281,+ 0.54391,+ 0.41504,+ 0.59648,+ 0.39172,+ 0.63484,+ 0.35352,+ 0.65828,+ 0.30078,+ 0.66609,+ 0.24867,+ 0.6582,+ 0.21047,+ 0.63453,+ 0.18703,+ 0.59609+ ],+ "t": [+ 4,+ 48,+ 63,+ 4,+ 63,+ 62,+ 49,+ 48,+ 4,+ 49,+ 4,+ 3,+ 49,+ 3,+ 2,+ 49,+ 2,+ 1,+ 49,+ 1,+ 0,+ 0,+ 31,+ 30,+ 0,+ 30,+ 29,+ 0,+ 29,+ 28,+ 28,+ 36,+ 35,+ 28,+ 35,+ 34,+ 37,+ 36,+ 28,+ 37,+ 28,+ 27,+ 37,+ 27,+ 26,+ 37,+ 26,+ 25,+ 25,+ 24,+ 23,+ 25,+ 23,+ 22,+ 25,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 16,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 62,+ 7,+ 62,+ 61,+ 7,+ 61,+ 60,+ 7,+ 60,+ 59,+ 50,+ 49,+ 0,+ 0,+ 28,+ 34,+ 0,+ 34,+ 33,+ 0,+ 33,+ 32,+ 0,+ 32,+ 47,+ 38,+ 37,+ 25,+ 11,+ 7,+ 59,+ 11,+ 59,+ 58,+ 11,+ 58,+ 57,+ 11,+ 57,+ 56,+ 11,+ 56,+ 55,+ 11,+ 55,+ 54,+ 51,+ 50,+ 0,+ 51,+ 0,+ 47,+ 51,+ 47,+ 46,+ 39,+ 38,+ 25,+ 16,+ 11,+ 54,+ 16,+ 54,+ 53,+ 16,+ 53,+ 52,+ 16,+ 52,+ 51,+ 16,+ 51,+ 46,+ 16,+ 46,+ 45,+ 40,+ 39,+ 25,+ 21,+ 16,+ 45,+ 21,+ 45,+ 44,+ 21,+ 44,+ 43,+ 21,+ 43,+ 42,+ 21,+ 42,+ 41,+ 41,+ 40,+ 25,+ 41,+ 25,+ 21+ ]+ },+ "9": {+ "v": [+ 0.11531,+ 0.01516,+ 0.11531,+ 0.10594,+ 0.14695,+ 0.09008,+ 0.18063,+ 0.07844,+ 0.21605,+ 0.07129,+ 0.25297,+ 0.06891,+ 0.33527,+ 0.08652,+ 0.39469,+ 0.13937,+ 0.43078,+ 0.22664,+ 0.44281,+ 0.34719,+ 0.41531,+ 0.30398,+ 0.37844,+ 0.27219,+ 0.33387,+ 0.25262,+ 0.28328,+ 0.24609,+ 0.18969,+ 0.2623,+ 0.11984,+ 0.31094,+ 0.07648,+ 0.38949,+ 0.06203,+ 0.49516,+ 0.07684,+ 0.59957,+ 0.12125,+ 0.6775,+ 0.19289,+ 0.72602,+ 0.28906,+ 0.74219,+ 0.3991,+ 0.71934,+ 0.47516,+ 0.65078,+ 0.51945,+ 0.5334,+ 0.53422,+ 0.36375,+ 0.51645,+ 0.20145,+ 0.46313,+ 0.08266,+ 0.37602,+ 0.01,+ 0.25688,+ -0.01422,+ 0.22109,+ -0.0123,+ 0.185,+ -0.00656,+ 0.14953,+ 0.00262,+ 0.29109,+ 0.32328,+ 0.34727,+ 0.33461,+ 0.38984,+ 0.36859,+ 0.4168,+ 0.42273,+ 0.42578,+ 0.49422,+ 0.4168,+ 0.56555,+ 0.38984,+ 0.61953,+ 0.34727,+ 0.65363,+ 0.29109,+ 0.665,+ 0.23367,+ 0.65418,+ 0.19234,+ 0.62172,+ 0.1675,+ 0.56828,+ 0.15922,+ 0.49422,+ 0.16746,+ 0.41973,+ 0.19219,+ 0.36625,+ 0.2334,+ 0.33402+ ],+ "t": [+ 17,+ 45,+ 44,+ 17,+ 44,+ 43,+ 46,+ 45,+ 17,+ 46,+ 17,+ 16,+ 46,+ 16,+ 15,+ 46,+ 15,+ 14,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 14,+ 11,+ 10,+ 14,+ 10,+ 9,+ 2,+ 1,+ 0,+ 2,+ 0,+ 32,+ 2,+ 32,+ 31,+ 2,+ 31,+ 30,+ 2,+ 30,+ 29,+ 2,+ 29,+ 28,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 24,+ 23,+ 22,+ 24,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 43,+ 21,+ 43,+ 42,+ 21,+ 42,+ 41,+ 21,+ 41,+ 40,+ 21,+ 40,+ 39,+ 47,+ 46,+ 14,+ 3,+ 2,+ 28,+ 24,+ 21,+ 39,+ 24,+ 39,+ 38,+ 24,+ 38,+ 37,+ 24,+ 37,+ 36,+ 24,+ 36,+ 35,+ 48,+ 47,+ 14,+ 4,+ 3,+ 28,+ 33,+ 48,+ 14,+ 33,+ 14,+ 9,+ 5,+ 4,+ 28,+ 34,+ 33,+ 9,+ 6,+ 5,+ 28,+ 35,+ 34,+ 9,+ 7,+ 6,+ 28,+ 24,+ 35,+ 9,+ 24,+ 9,+ 8,+ 8,+ 7,+ 28,+ 8,+ 28,+ 24+ ]+ },+ ":": {+ "v": [+ 0.23875,+ 0.51906,+ 0.36188,+ 0.51906,+ 0.36188,+ 0.37109,+ 0.23875,+ 0.37109,+ 0.23875,+ 0.14891,+ 0.36188,+ 0.14891,+ 0.36188,+ 0.0,+ 0.23875,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2,+ 5,+ 4,+ 7,+ 5,+ 7,+ 6+ ]+ },+ ";": {+ "v": [+ 0.24516,+ 0.14797,+ 0.36812,+ 0.14797,+ 0.36812,+ 0.04688,+ 0.27203,+ -0.14016,+ 0.19672,+ -0.14016,+ 0.24516,+ 0.04688,+ 0.23875,+ 0.51906,+ 0.36188,+ 0.51906,+ 0.36188,+ 0.37109,+ 0.23875,+ 0.37109+ ],+ "t": [+ 1,+ 0,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2,+ 7,+ 6,+ 9,+ 7,+ 9,+ 8+ ]+ },+ "<": {+ "v": [+ 0.55906,+ 0.46922,+ 0.14406,+ 0.31297,+ 0.55906,+ 0.15828,+ 0.55906,+ 0.06891,+ 0.04297,+ 0.27297,+ 0.04297,+ 0.35406,+ 0.55906,+ 0.55812+ ],+ "t": [+ 1,+ 0,+ 6,+ 1,+ 6,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "=": {+ "v": [+ 0.04297,+ 0.25594,+ 0.55906,+ 0.25594,+ 0.55906,+ 0.17188,+ 0.04297,+ 0.17188,+ 0.04297,+ 0.45406,+ 0.55906,+ 0.45406,+ 0.55906,+ 0.37109,+ 0.04297,+ 0.37109+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2,+ 5,+ 4,+ 7,+ 5,+ 7,+ 6+ ]+ },+ ">": {+ "v": [+ 0.04297,+ 0.46922,+ 0.04297,+ 0.55812,+ 0.55906,+ 0.35406,+ 0.55906,+ 0.27297,+ 0.04297,+ 0.06891,+ 0.04297,+ 0.15828,+ 0.45797,+ 0.31297+ ],+ "t": [+ 1,+ 0,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1+ ]+ },+ "?": {+ "v": [+ 0.33406,+ 0.19578,+ 0.24125,+ 0.19578,+ 0.24125,+ 0.27094,+ 0.24496,+ 0.31527,+ 0.25609,+ 0.35234,+ 0.2775,+ 0.38742,+ 0.31203,+ 0.42578,+ 0.35594,+ 0.46922,+ 0.38152,+ 0.49625,+ 0.39766,+ 0.51953,+ 0.40633,+ 0.54168,+ 0.40922,+ 0.565,+ 0.40121,+ 0.6043,+ 0.37719,+ 0.63531,+ 0.33988,+ 0.65547,+ 0.29203,+ 0.66219,+ 0.25258,+ 0.65797,+ 0.21047,+ 0.64531,+ 0.16594,+ 0.62434,+ 0.11922,+ 0.59516,+ 0.11922,+ 0.68703,+ 0.1652,+ 0.71129,+ 0.21156,+ 0.72844,+ 0.2593,+ 0.73875,+ 0.30906,+ 0.74219,+ 0.39062,+ 0.73047,+ 0.45375,+ 0.69531,+ 0.4943,+ 0.64051,+ 0.50781,+ 0.56984,+ 0.50371,+ 0.53395,+ 0.49141,+ 0.50062,+ 0.46773,+ 0.46551,+ 0.42922,+ 0.42391,+ 0.38625,+ 0.38188,+ 0.35863,+ 0.35258,+ 0.34328,+ 0.32906,+ 0.33637,+ 0.30625,+ 0.33406,+ 0.27875,+ 0.33406,+ 0.25594,+ 0.23781,+ 0.12406,+ 0.33687,+ 0.12406,+ 0.33687,+ 0.0,+ 0.23781,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 38,+ 1,+ 38,+ 37,+ 1,+ 37,+ 36,+ 1,+ 36,+ 35,+ 1,+ 35,+ 34,+ 33,+ 32,+ 31,+ 33,+ 31,+ 30,+ 33,+ 30,+ 29,+ 33,+ 29,+ 28,+ 33,+ 28,+ 27,+ 33,+ 27,+ 26,+ 26,+ 25,+ 24,+ 26,+ 24,+ 23,+ 26,+ 23,+ 22,+ 26,+ 22,+ 21,+ 26,+ 21,+ 20,+ 20,+ 19,+ 18,+ 20,+ 18,+ 17,+ 20,+ 17,+ 16,+ 20,+ 16,+ 15,+ 20,+ 15,+ 14,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 7,+ 3,+ 2,+ 7,+ 2,+ 1,+ 7,+ 1,+ 34,+ 7,+ 34,+ 33,+ 26,+ 20,+ 14,+ 26,+ 14,+ 13,+ 26,+ 13,+ 12,+ 26,+ 12,+ 11,+ 26,+ 11,+ 10,+ 8,+ 7,+ 33,+ 33,+ 26,+ 10,+ 33,+ 10,+ 9,+ 33,+ 9,+ 8,+ 40,+ 39,+ 42,+ 40,+ 42,+ 41+ ]+ },+ "@": {+ "v": [+ 0.57516,+ 0.06594,+ 0.50484,+ 0.06594,+ 0.50484,+ 0.12016,+ 0.48336,+ 0.09289,+ 0.45484,+ 0.07266,+ 0.42082,+ 0.06023,+ 0.38281,+ 0.05609,+ 0.31098,+ 0.07086,+ 0.25266,+ 0.11516,+ 0.2141,+ 0.1825,+ 0.20125,+ 0.26609,+ 0.2141,+ 0.34977,+ 0.25266,+ 0.41703,+ 0.31098,+ 0.46133,+ 0.38281,+ 0.47609,+ 0.42027,+ 0.4718,+ 0.45453,+ 0.45891,+ 0.48352,+ 0.43871,+ 0.50484,+ 0.41219,+ 0.50484,+ 0.44281,+ 0.4941,+ 0.5116,+ 0.46188,+ 0.56547,+ 0.41195,+ 0.60027,+ 0.34813,+ 0.61188,+ 0.24023,+ 0.58848,+ 0.15688,+ 0.51828,+ 0.10367,+ 0.40828,+ 0.08594,+ 0.26516,+ 0.10605,+ 0.12086,+ 0.16641,+ 0.00922,+ 0.26035,+ -0.06215,+ 0.38094,+ -0.08594,+ 0.40723,+ -0.08473,+ 0.43359,+ -0.08109,+ 0.46035,+ -0.07488,+ 0.48781,+ -0.06594,+ 0.51125,+ -0.13187,+ 0.48066,+ -0.14246,+ 0.45047,+ -0.14984,+ 0.42086,+ -0.1543,+ 0.39203,+ -0.15578,+ 0.23578,+ -0.12734,+ 0.11547,+ -0.04203,+ 0.03871,+ 0.09164,+ 0.01312,+ 0.26516,+ 0.03605,+ 0.43617,+ 0.10484,+ 0.56828,+ 0.21234,+ 0.65289,+ 0.35109,+ 0.68109,+ 0.44285,+ 0.66484,+ 0.51406,+ 0.61609,+ 0.55988,+ 0.54012,+ 0.57516,+ 0.44188,+ 0.50687,+ 0.26609,+ 0.49906,+ 0.32277,+ 0.47563,+ 0.36688,+ 0.4391,+ 0.39535,+ 0.39203,+ 0.40484,+ 0.345,+ 0.39535,+ 0.30828,+ 0.36688,+ 0.28473,+ 0.32277,+ 0.27687,+ 0.26609,+ 0.28473,+ 0.20906,+ 0.30828,+ 0.16484,+ 0.345,+ 0.13648,+ 0.39203,+ 0.12703,+ 0.4391,+ 0.13648,+ 0.47563,+ 0.16484,+ 0.49906,+ 0.20906+ ],+ "t": [+ 10,+ 61,+ 60,+ 10,+ 60,+ 59,+ 62,+ 61,+ 10,+ 62,+ 10,+ 9,+ 62,+ 9,+ 8,+ 62,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 7,+ 3,+ 2,+ 2,+ 1,+ 0,+ 2,+ 0,+ 52,+ 2,+ 52,+ 51,+ 2,+ 51,+ 50,+ 50,+ 49,+ 48,+ 50,+ 48,+ 47,+ 47,+ 46,+ 45,+ 47,+ 45,+ 44,+ 44,+ 43,+ 42,+ 44,+ 42,+ 41,+ 41,+ 40,+ 39,+ 41,+ 39,+ 38,+ 41,+ 38,+ 37,+ 41,+ 37,+ 36,+ 36,+ 35,+ 34,+ 36,+ 34,+ 33,+ 36,+ 33,+ 32,+ 36,+ 32,+ 31,+ 36,+ 31,+ 30,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 18,+ 14,+ 13,+ 18,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 59,+ 12,+ 59,+ 58,+ 12,+ 58,+ 57,+ 63,+ 62,+ 7,+ 41,+ 36,+ 30,+ 41,+ 30,+ 29,+ 41,+ 29,+ 28,+ 18,+ 12,+ 57,+ 18,+ 57,+ 56,+ 18,+ 56,+ 55,+ 18,+ 55,+ 54,+ 18,+ 54,+ 53,+ 64,+ 63,+ 7,+ 44,+ 41,+ 28,+ 44,+ 28,+ 27,+ 44,+ 27,+ 26,+ 44,+ 26,+ 25,+ 19,+ 18,+ 53,+ 65,+ 64,+ 7,+ 65,+ 7,+ 2,+ 47,+ 44,+ 25,+ 47,+ 25,+ 24,+ 47,+ 24,+ 23,+ 47,+ 23,+ 22,+ 66,+ 65,+ 2,+ 50,+ 47,+ 22,+ 50,+ 22,+ 21,+ 50,+ 21,+ 20,+ 50,+ 20,+ 19,+ 50,+ 19,+ 53,+ 67,+ 66,+ 2,+ 2,+ 50,+ 53,+ 2,+ 53,+ 68,+ 2,+ 68,+ 67+ ]+ },+ "A": {+ "v": [+ 0.24125,+ 0.72906,+ 0.36078,+ 0.72906,+ 0.58406,+ 0.0,+ 0.48187,+ 0.0,+ 0.42828,+ 0.19,+ 0.17281,+ 0.19,+ 0.12016,+ 0.0,+ 0.01812,+ 0.0,+ 0.30078,+ 0.64203,+ 0.19672,+ 0.26906,+ 0.40484,+ 0.26906+ ],+ "t": [+ 7,+ 9,+ 8,+ 7,+ 6,+ 5,+ 4,+ 3,+ 2,+ 4,+ 2,+ 1,+ 0,+ 7,+ 8,+ 9,+ 7,+ 5,+ 9,+ 5,+ 4,+ 1,+ 0,+ 8,+ 1,+ 8,+ 10,+ 10,+ 9,+ 4,+ 10,+ 4,+ 1+ ]+ },+ "B": {+ "v": [+ 0.08109,+ 0.72906,+ 0.29688,+ 0.72906,+ 0.3959,+ 0.71695,+ 0.46922,+ 0.68063,+ 0.51469,+ 0.6223,+ 0.52984,+ 0.54391,+ 0.52184,+ 0.4841,+ 0.49781,+ 0.43844,+ 0.45781,+ 0.40707,+ 0.40187,+ 0.39016,+ 0.46586,+ 0.36941,+ 0.51438,+ 0.32875,+ 0.54496,+ 0.27137,+ 0.55516,+ 0.20016,+ 0.53891,+ 0.1132,+ 0.49016,+ 0.05047,+ 0.40941,+ 0.01262,+ 0.29688,+ 0.0,+ 0.08109,+ 0.0,+ 0.18016,+ 0.34813,+ 0.18016,+ 0.08109,+ 0.29688,+ 0.08109,+ 0.37047,+ 0.08859,+ 0.41937,+ 0.11109,+ 0.44691,+ 0.15082,+ 0.45609,+ 0.21,+ 0.44645,+ 0.2718,+ 0.4175,+ 0.31469,+ 0.36805,+ 0.33977,+ 0.29688,+ 0.34813,+ 0.18016,+ 0.64797,+ 0.18016,+ 0.42828,+ 0.295,+ 0.42828,+ 0.35641,+ 0.43512,+ 0.39813,+ 0.45563,+ 0.42215,+ 0.49137,+ 0.43016,+ 0.54391,+ 0.42227,+ 0.59137,+ 0.39859,+ 0.62344,+ 0.35699,+ 0.64184,+ 0.295,+ 0.64797+ ],+ "t": [+ 18,+ 31,+ 30,+ 18,+ 20,+ 19,+ 21,+ 20,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 21,+ 16,+ 15,+ 15,+ 14,+ 13,+ 15,+ 13,+ 12,+ 15,+ 12,+ 11,+ 15,+ 11,+ 10,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 9,+ 5,+ 4,+ 9,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 0,+ 18,+ 30,+ 0,+ 30,+ 40,+ 0,+ 40,+ 39,+ 31,+ 18,+ 19,+ 31,+ 19,+ 29,+ 31,+ 29,+ 28,+ 22,+ 21,+ 15,+ 3,+ 0,+ 39,+ 3,+ 39,+ 38,+ 3,+ 38,+ 37,+ 3,+ 37,+ 36,+ 3,+ 36,+ 35,+ 32,+ 31,+ 28,+ 32,+ 28,+ 27,+ 23,+ 22,+ 15,+ 9,+ 3,+ 35,+ 9,+ 35,+ 34,+ 9,+ 34,+ 33,+ 9,+ 33,+ 32,+ 9,+ 32,+ 27,+ 9,+ 27,+ 26,+ 24,+ 23,+ 15,+ 10,+ 9,+ 26,+ 10,+ 26,+ 25,+ 25,+ 24,+ 15,+ 25,+ 15,+ 10+ ]+ },+ "C": {+ "v": [+ 0.52391,+ 0.02594,+ 0.48586,+ 0.00844,+ 0.44672,+ -0.00406,+ 0.40598,+ -0.01168,+ 0.36281,+ -0.01422,+ 0.23832,+ 0.01055,+ 0.14516,+ 0.08484,+ 0.08715,+ 0.20418,+ 0.06781,+ 0.36375,+ 0.08727,+ 0.52277,+ 0.14563,+ 0.64234,+ 0.23891,+ 0.71723,+ 0.36281,+ 0.74219,+ 0.40598,+ 0.73969,+ 0.44672,+ 0.73219,+ 0.48586,+ 0.71969,+ 0.52391,+ 0.70219,+ 0.52391,+ 0.60109,+ 0.48645,+ 0.62738,+ 0.44625,+ 0.64656,+ 0.40469,+ 0.65828,+ 0.36281,+ 0.66219,+ 0.27867,+ 0.64363,+ 0.21875,+ 0.58797,+ 0.18289,+ 0.4948,+ 0.17094,+ 0.36375,+ 0.18289,+ 0.23316,+ 0.21875,+ 0.14016,+ 0.27867,+ 0.08449,+ 0.36281,+ 0.06594,+ 0.40535,+ 0.06984,+ 0.44703,+ 0.08156,+ 0.48688,+ 0.10074,+ 0.52391,+ 0.12703+ ],+ "t": [+ 1,+ 0,+ 33,+ 1,+ 33,+ 32,+ 1,+ 32,+ 31,+ 1,+ 31,+ 30,+ 1,+ 30,+ 29,+ 1,+ 29,+ 28,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 18,+ 14,+ 13,+ 18,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 28,+ 5,+ 28,+ 27,+ 5,+ 27,+ 26,+ 19,+ 18,+ 12,+ 9,+ 5,+ 26,+ 9,+ 26,+ 25,+ 9,+ 25,+ 24,+ 9,+ 24,+ 23,+ 9,+ 23,+ 22,+ 20,+ 19,+ 12,+ 12,+ 9,+ 22,+ 12,+ 22,+ 21,+ 12,+ 21,+ 20+ ]+ },+ "D": {+ "v": [+ 0.21484,+ 0.72906,+ 0.35988,+ 0.70684,+ 0.46094,+ 0.64016,+ 0.52023,+ 0.5266,+ 0.54,+ 0.36375,+ 0.52023,+ 0.20168,+ 0.46094,+ 0.08859,+ 0.35988,+ 0.02215,+ 0.21484,+ 0.0,+ 0.06688,+ 0.0,+ 0.06688,+ 0.72906,+ 0.21297,+ 0.08109,+ 0.31859,+ 0.09641,+ 0.38672,+ 0.14234,+ 0.42375,+ 0.22832,+ 0.43609,+ 0.36375,+ 0.42383,+ 0.50035,+ 0.38703,+ 0.58672,+ 0.31898,+ 0.63266,+ 0.21297,+ 0.64797,+ 0.16609,+ 0.64797,+ 0.16609,+ 0.08109+ ],+ "t": [+ 9,+ 21,+ 20,+ 11,+ 21,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 2,+ 1,+ 0,+ 2,+ 0,+ 10,+ 10,+ 9,+ 20,+ 10,+ 20,+ 19,+ 10,+ 19,+ 18,+ 12,+ 11,+ 6,+ 2,+ 10,+ 18,+ 2,+ 18,+ 17,+ 2,+ 17,+ 16,+ 2,+ 16,+ 15,+ 13,+ 12,+ 6,+ 6,+ 2,+ 15,+ 6,+ 15,+ 14,+ 6,+ 14,+ 13+ ]+ },+ "E": {+ "v": [+ 0.09625,+ 0.72906,+ 0.52875,+ 0.72906,+ 0.52875,+ 0.64594,+ 0.19484,+ 0.64594,+ 0.19484,+ 0.43016,+ 0.51422,+ 0.43016,+ 0.51422,+ 0.34719,+ 0.19484,+ 0.34719,+ 0.19484,+ 0.08297,+ 0.53812,+ 0.08297,+ 0.53812,+ 0.0,+ 0.09625,+ 0.0+ ],+ "t": [+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 3,+ 0,+ 11,+ 11,+ 7,+ 4,+ 11,+ 4,+ 3+ ]+ },+ "F": {+ "v": [+ 0.11375,+ 0.72906,+ 0.54297,+ 0.72906,+ 0.54297,+ 0.64594,+ 0.21297,+ 0.64594,+ 0.21297,+ 0.43109,+ 0.51219,+ 0.43109,+ 0.51219,+ 0.34813,+ 0.21297,+ 0.34813,+ 0.21297,+ 0.0,+ 0.11375,+ 0.0+ ],+ "t": [+ 0,+ 9,+ 8,+ 0,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 0,+ 7,+ 4,+ 0,+ 4,+ 3+ ]+ },+ "G": {+ "v": [+ 0.53906,+ 0.06,+ 0.49703,+ 0.02785,+ 0.45,+ 0.00453,+ 0.39844,+ -0.00953,+ 0.34281,+ -0.01422,+ 0.21945,+ 0.01062,+ 0.12688,+ 0.08516,+ 0.0691,+ 0.20449,+ 0.04984,+ 0.36375,+ 0.06937,+ 0.52277,+ 0.12797,+ 0.64234,+ 0.22133,+ 0.71723,+ 0.34516,+ 0.74219,+ 0.39012,+ 0.73895,+ 0.43312,+ 0.72922,+ 0.47441,+ 0.71293,+ 0.51422,+ 0.69,+ 0.51422,+ 0.58891,+ 0.47418,+ 0.62148,+ 0.43312,+ 0.64422,+ 0.39035,+ 0.6577,+ 0.34516,+ 0.66219,+ 0.26105,+ 0.64355,+ 0.20094,+ 0.58766,+ 0.16484,+ 0.49441,+ 0.15281,+ 0.36375,+ 0.16445,+ 0.2316,+ 0.19937,+ 0.13891,+ 0.25859,+ 0.08418,+ 0.34281,+ 0.06594,+ 0.37348,+ 0.06781,+ 0.40016,+ 0.07344,+ 0.42367,+ 0.0832,+ 0.44484,+ 0.09719,+ 0.44484,+ 0.29297,+ 0.33891,+ 0.29297,+ 0.33891,+ 0.37406,+ 0.53906,+ 0.37406+ ],+ "t": [+ 1,+ 0,+ 37,+ 37,+ 36,+ 35,+ 37,+ 35,+ 34,+ 37,+ 34,+ 33,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 18,+ 14,+ 13,+ 18,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 1,+ 37,+ 33,+ 1,+ 33,+ 32,+ 1,+ 32,+ 31,+ 1,+ 31,+ 30,+ 1,+ 30,+ 29,+ 1,+ 29,+ 28,+ 19,+ 18,+ 12,+ 5,+ 1,+ 28,+ 5,+ 28,+ 27,+ 5,+ 27,+ 26,+ 20,+ 19,+ 12,+ 9,+ 5,+ 26,+ 9,+ 26,+ 25,+ 9,+ 25,+ 24,+ 9,+ 24,+ 23,+ 9,+ 23,+ 22,+ 21,+ 20,+ 12,+ 12,+ 9,+ 22,+ 12,+ 22,+ 21+ ]+ },+ "H": {+ "v": [+ 0.06688,+ 0.72906,+ 0.16609,+ 0.72906,+ 0.16609,+ 0.43016,+ 0.43609,+ 0.43016,+ 0.43609,+ 0.72906,+ 0.53516,+ 0.72906,+ 0.53516,+ 0.0,+ 0.43609,+ 0.0,+ 0.43609,+ 0.34719,+ 0.16609,+ 0.34719,+ 0.16609,+ 0.0,+ 0.06688,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 11,+ 11,+ 10,+ 9,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 5,+ 4,+ 3,+ 2,+ 1,+ 11,+ 2,+ 11,+ 9,+ 2,+ 9,+ 8,+ 8,+ 5,+ 3,+ 8,+ 3,+ 2+ ]+ },+ "I": {+ "v": [+ 0.09813,+ 0.72906,+ 0.50297,+ 0.72906,+ 0.50297,+ 0.64594,+ 0.35016,+ 0.64594,+ 0.35016,+ 0.08297,+ 0.50297,+ 0.08297,+ 0.50297,+ 0.0,+ 0.09813,+ 0.0,+ 0.09813,+ 0.08297,+ 0.25094,+ 0.08297,+ 0.25094,+ 0.64594,+ 0.09813,+ 0.64594+ ],+ "t": [+ 1,+ 0,+ 11,+ 1,+ 11,+ 10,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 6,+ 5,+ 4,+ 3,+ 2,+ 1,+ 3,+ 1,+ 10,+ 3,+ 10,+ 9,+ 9,+ 6,+ 4,+ 9,+ 4,+ 3+ ]+ },+ "J": {+ "v": [+ 0.05328,+ 0.02984,+ 0.05328,+ 0.145,+ 0.0984,+ 0.11039,+ 0.145,+ 0.08563,+ 0.1932,+ 0.07086,+ 0.24313,+ 0.06594,+ 0.30238,+ 0.07504,+ 0.34047,+ 0.10234,+ 0.36121,+ 0.15441,+ 0.36812,+ 0.23781,+ 0.36812,+ 0.64594,+ 0.18219,+ 0.64594,+ 0.18219,+ 0.72906,+ 0.46687,+ 0.72906,+ 0.46687,+ 0.23781,+ 0.45398,+ 0.12027,+ 0.41531,+ 0.04297,+ 0.34648,+ 0.00008,+ 0.24313,+ -0.01422,+ 0.19637,+ -0.01152,+ 0.14984,+ -0.00344,+ 0.10258,+ 0.01027+ ],+ "t": [+ 1,+ 0,+ 21,+ 1,+ 21,+ 20,+ 1,+ 20,+ 19,+ 1,+ 19,+ 18,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 13,+ 10,+ 9,+ 13,+ 9,+ 8,+ 2,+ 1,+ 18,+ 14,+ 13,+ 8,+ 14,+ 8,+ 7,+ 3,+ 2,+ 18,+ 18,+ 14,+ 7,+ 18,+ 7,+ 6,+ 18,+ 6,+ 5,+ 18,+ 5,+ 4,+ 18,+ 4,+ 3+ ]+ },+ "K": {+ "v": [+ 0.06688,+ 0.72906,+ 0.16609,+ 0.72906,+ 0.16609,+ 0.40484,+ 0.47406,+ 0.72906,+ 0.58984,+ 0.72906,+ 0.30609,+ 0.43109,+ 0.59813,+ 0.0,+ 0.47906,+ 0.0,+ 0.24125,+ 0.36531,+ 0.16609,+ 0.28516,+ 0.16609,+ 0.0,+ 0.06688,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 11,+ 11,+ 10,+ 9,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 8,+ 4,+ 3,+ 8,+ 3,+ 2,+ 2,+ 1,+ 11,+ 2,+ 11,+ 9,+ 2,+ 9,+ 8+ ]+ },+ "L": {+ "v": [+ 0.105,+ 0.72906,+ 0.20406,+ 0.72906,+ 0.20406,+ 0.08297,+ 0.55609,+ 0.08297,+ 0.55609,+ 0.0,+ 0.105,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1+ ]+ },+ "M": {+ "v": [+ 0.04203,+ 0.72906,+ 0.17391,+ 0.72906,+ 0.29984,+ 0.35797,+ 0.42672,+ 0.72906,+ 0.55906,+ 0.72906,+ 0.55906,+ 0.0,+ 0.46781,+ 0.0,+ 0.46781,+ 0.64406,+ 0.33797,+ 0.25984,+ 0.26312,+ 0.25984,+ 0.13281,+ 0.64406,+ 0.13281,+ 0.0,+ 0.04203,+ 0.0+ ],+ "t": [+ 0,+ 12,+ 11,+ 0,+ 11,+ 10,+ 10,+ 9,+ 8,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 7,+ 3,+ 2,+ 1,+ 0,+ 10,+ 8,+ 7,+ 2,+ 2,+ 1,+ 10,+ 2,+ 10,+ 8+ ]+ },+ "N": {+ "v": [+ 0.06781,+ 0.72906,+ 0.19281,+ 0.72906,+ 0.43891,+ 0.12891,+ 0.43891,+ 0.72906,+ 0.53422,+ 0.72906,+ 0.53422,+ 0.0,+ 0.40922,+ 0.0,+ 0.16312,+ 0.60016,+ 0.16312,+ 0.0,+ 0.06781,+ 0.0+ ],+ "t": [+ 0,+ 9,+ 8,+ 0,+ 8,+ 7,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 1,+ 0,+ 7,+ 1,+ 7,+ 6,+ 6,+ 5,+ 2,+ 6,+ 2,+ 1+ ]+ },+ "O": {+ "v": [+ 0.545,+ 0.36375,+ 0.52992,+ 0.19746,+ 0.48469,+ 0.07953,+ 0.40855,+ 0.00922,+ 0.30078,+ -0.01422,+ 0.19309,+ 0.0091,+ 0.11719,+ 0.07906,+ 0.07219,+ 0.19688,+ 0.05719,+ 0.36375,+ 0.07227,+ 0.53039,+ 0.1175,+ 0.64844,+ 0.19348,+ 0.71875,+ 0.30078,+ 0.74219,+ 0.40855,+ 0.71875,+ 0.48469,+ 0.64844,+ 0.52992,+ 0.53039,+ 0.44188,+ 0.36375,+ 0.43363,+ 0.50145,+ 0.40891,+ 0.59328,+ 0.36539,+ 0.64496,+ 0.30078,+ 0.66219,+ 0.23652,+ 0.64496,+ 0.19312,+ 0.59328,+ 0.1684,+ 0.50145,+ 0.16016,+ 0.36375,+ 0.1684,+ 0.22641,+ 0.19312,+ 0.13469,+ 0.23652,+ 0.08313,+ 0.30078,+ 0.06594,+ 0.36539,+ 0.08309,+ 0.40891,+ 0.13453,+ 0.43363,+ 0.22613+ ],+ "t": [+ 8,+ 24,+ 23,+ 8,+ 23,+ 22,+ 25,+ 24,+ 8,+ 25,+ 8,+ 7,+ 25,+ 7,+ 6,+ 25,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 2,+ 1,+ 0,+ 2,+ 0,+ 15,+ 2,+ 15,+ 14,+ 2,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 22,+ 10,+ 22,+ 21,+ 10,+ 21,+ 20,+ 26,+ 25,+ 5,+ 13,+ 10,+ 20,+ 13,+ 20,+ 19,+ 13,+ 19,+ 18,+ 13,+ 18,+ 17,+ 27,+ 26,+ 5,+ 2,+ 13,+ 17,+ 2,+ 17,+ 16,+ 2,+ 16,+ 31,+ 2,+ 31,+ 30,+ 2,+ 30,+ 29,+ 2,+ 29,+ 28,+ 28,+ 27,+ 5,+ 28,+ 5,+ 2+ ]+ },+ "P": {+ "v": [+ 0.09625,+ 0.72906,+ 0.30906,+ 0.72906,+ 0.41633,+ 0.7152,+ 0.49406,+ 0.67359,+ 0.54141,+ 0.60527,+ 0.55719,+ 0.51125,+ 0.54148,+ 0.41648,+ 0.49438,+ 0.34813,+ 0.41672,+ 0.30676,+ 0.30906,+ 0.29297,+ 0.19484,+ 0.29297,+ 0.19484,+ 0.0,+ 0.09625,+ 0.0,+ 0.19484,+ 0.64797,+ 0.19484,+ 0.37406,+ 0.30906,+ 0.37406,+ 0.36996,+ 0.38309,+ 0.41578,+ 0.41016,+ 0.44449,+ 0.45348,+ 0.45406,+ 0.51125,+ 0.44453,+ 0.56895,+ 0.41594,+ 0.61203,+ 0.37023,+ 0.63898,+ 0.30906,+ 0.64797+ ],+ "t": [+ 12,+ 14,+ 13,+ 12,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 10,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 2,+ 1,+ 0,+ 0,+ 12,+ 13,+ 0,+ 13,+ 23,+ 0,+ 23,+ 22,+ 14,+ 12,+ 10,+ 2,+ 0,+ 22,+ 2,+ 22,+ 21,+ 2,+ 21,+ 20,+ 15,+ 14,+ 10,+ 6,+ 2,+ 20,+ 6,+ 20,+ 19,+ 6,+ 19,+ 18,+ 6,+ 18,+ 17,+ 6,+ 17,+ 16,+ 16,+ 15,+ 10,+ 16,+ 10,+ 6+ ]+ },+ "Q": {+ "v": [+ 0.31984,+ -0.01312,+ 0.31566,+ -0.01324,+ 0.31,+ -0.01359,+ 0.30434,+ -0.01406,+ 0.29984,+ -0.01422,+ 0.19324,+ 0.00922,+ 0.1175,+ 0.07953,+ 0.07227,+ 0.19746,+ 0.05719,+ 0.36375,+ 0.07227,+ 0.53039,+ 0.1175,+ 0.64844,+ 0.19348,+ 0.71875,+ 0.30078,+ 0.74219,+ 0.40855,+ 0.71875,+ 0.48469,+ 0.64844,+ 0.52992,+ 0.53039,+ 0.545,+ 0.36375,+ 0.5366,+ 0.23414,+ 0.51141,+ 0.1325,+ 0.46938,+ 0.05809,+ 0.41016,+ 0.00984,+ 0.50781,+ -0.08297,+ 0.43406,+ -0.13187,+ 0.44188,+ 0.36375,+ 0.43363,+ 0.50145,+ 0.40891,+ 0.59328,+ 0.36539,+ 0.64496,+ 0.30078,+ 0.66219,+ 0.23652,+ 0.64496,+ 0.19312,+ 0.59328,+ 0.1684,+ 0.50145,+ 0.16016,+ 0.36375,+ 0.1684,+ 0.22641,+ 0.19312,+ 0.13469,+ 0.23652,+ 0.08313,+ 0.30078,+ 0.06594,+ 0.36539,+ 0.08309,+ 0.40891,+ 0.13453,+ 0.43363,+ 0.22613+ ],+ "t": [+ 8,+ 31,+ 30,+ 8,+ 30,+ 29,+ 32,+ 31,+ 8,+ 32,+ 8,+ 7,+ 32,+ 7,+ 6,+ 32,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 0,+ 0,+ 22,+ 21,+ 0,+ 21,+ 20,+ 0,+ 20,+ 19,+ 0,+ 19,+ 18,+ 0,+ 18,+ 17,+ 17,+ 16,+ 15,+ 17,+ 15,+ 14,+ 17,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 29,+ 10,+ 29,+ 28,+ 10,+ 28,+ 27,+ 33,+ 32,+ 5,+ 13,+ 10,+ 27,+ 13,+ 27,+ 26,+ 13,+ 26,+ 25,+ 13,+ 25,+ 24,+ 34,+ 33,+ 5,+ 34,+ 5,+ 0,+ 17,+ 13,+ 24,+ 17,+ 24,+ 23,+ 17,+ 23,+ 38,+ 17,+ 38,+ 37,+ 17,+ 37,+ 36,+ 35,+ 34,+ 0,+ 0,+ 17,+ 36,+ 0,+ 36,+ 35+ ]+ },+ "R": {+ "v": [+ 0.37109,+ 0.34422,+ 0.40641,+ 0.33016,+ 0.43609,+ 0.30734,+ 0.46625,+ 0.2668,+ 0.50297,+ 0.19922,+ 0.60203,+ 0.0,+ 0.49609,+ 0.0,+ 0.40922,+ 0.18406,+ 0.37348,+ 0.24867,+ 0.34156,+ 0.28531,+ 0.30695,+ 0.30242,+ 0.26312,+ 0.30812,+ 0.16891,+ 0.30812,+ 0.16891,+ 0.0,+ 0.06984,+ 0.0,+ 0.06984,+ 0.72906,+ 0.27297,+ 0.72906,+ 0.37906,+ 0.71551,+ 0.45703,+ 0.67484,+ 0.50496,+ 0.60855,+ 0.52094,+ 0.51813,+ 0.51109,+ 0.45246,+ 0.48156,+ 0.40016,+ 0.43434,+ 0.36336,+ 0.16891,+ 0.64797,+ 0.16891,+ 0.38922,+ 0.27687,+ 0.38922,+ 0.33863,+ 0.39715,+ 0.38234,+ 0.42094,+ 0.40836,+ 0.46109,+ 0.41703,+ 0.51813,+ 0.40781,+ 0.57371,+ 0.38016,+ 0.61453,+ 0.33492,+ 0.63961,+ 0.27297,+ 0.64797+ ],+ "t": [+ 14,+ 25,+ 24,+ 14,+ 13,+ 12,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 7,+ 3,+ 2,+ 7,+ 2,+ 1,+ 7,+ 1,+ 0,+ 0,+ 23,+ 22,+ 0,+ 22,+ 21,+ 0,+ 21,+ 20,+ 0,+ 20,+ 19,+ 19,+ 18,+ 17,+ 19,+ 17,+ 16,+ 19,+ 16,+ 15,+ 15,+ 14,+ 24,+ 15,+ 24,+ 34,+ 15,+ 34,+ 33,+ 25,+ 14,+ 12,+ 25,+ 12,+ 11,+ 25,+ 11,+ 10,+ 25,+ 10,+ 9,+ 8,+ 7,+ 0,+ 19,+ 15,+ 33,+ 19,+ 33,+ 32,+ 19,+ 32,+ 31,+ 19,+ 31,+ 30,+ 19,+ 30,+ 29,+ 19,+ 29,+ 28,+ 26,+ 25,+ 9,+ 26,+ 9,+ 8,+ 26,+ 8,+ 0,+ 0,+ 19,+ 28,+ 0,+ 28,+ 27,+ 0,+ 27,+ 26+ ]+ },+ "S": {+ "v": [+ 0.49422,+ 0.70406,+ 0.49422,+ 0.60406,+ 0.44918,+ 0.6293,+ 0.40406,+ 0.6475,+ 0.35871,+ 0.65852,+ 0.31297,+ 0.66219,+ 0.25047,+ 0.65406,+ 0.20266,+ 0.62969,+ 0.1723,+ 0.59152,+ 0.16219,+ 0.54203,+ 0.16883,+ 0.49934,+ 0.18875,+ 0.46813,+ 0.22687,+ 0.44488,+ 0.28813,+ 0.42578,+ 0.33984,+ 0.41406,+ 0.42844,+ 0.38332,+ 0.48922,+ 0.33891,+ 0.52438,+ 0.27836,+ 0.53609,+ 0.19922,+ 0.51996,+ 0.1075,+ 0.47156,+ 0.04047,+ 0.39254,+ -0.00055,+ 0.28422,+ -0.01422,+ 0.23281,+ -0.01145,+ 0.18109,+ -0.00313,+ 0.12926,+ 0.01059,+ 0.07719,+ 0.02984,+ 0.07719,+ 0.13484,+ 0.13176,+ 0.10387,+ 0.18328,+ 0.0825,+ 0.23359,+ 0.07008,+ 0.28422,+ 0.06594,+ 0.35059,+ 0.0743,+ 0.40031,+ 0.09938,+ 0.43148,+ 0.13945,+ 0.44188,+ 0.19281,+ 0.43473,+ 0.24102,+ 0.41328,+ 0.27625,+ 0.37422,+ 0.30184,+ 0.31391,+ 0.32078,+ 0.26125,+ 0.33297,+ 0.17359,+ 0.3618,+ 0.11375,+ 0.40234,+ 0.0793,+ 0.45668,+ 0.06781,+ 0.52687,+ 0.08422,+ 0.6148,+ 0.13344,+ 0.68328,+ 0.21,+ 0.72746,+ 0.30812,+ 0.74219,+ 0.35121,+ 0.7398,+ 0.39641,+ 0.73266,+ 0.44406,+ 0.72074+ ],+ "t": [+ 1,+ 0,+ 51,+ 1,+ 51,+ 50,+ 1,+ 50,+ 49,+ 1,+ 49,+ 48,+ 48,+ 47,+ 46,+ 48,+ 46,+ 45,+ 48,+ 45,+ 44,+ 44,+ 43,+ 42,+ 44,+ 42,+ 41,+ 44,+ 41,+ 40,+ 44,+ 40,+ 39,+ 44,+ 39,+ 38,+ 44,+ 38,+ 37,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 28,+ 24,+ 23,+ 28,+ 23,+ 22,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 18,+ 14,+ 13,+ 18,+ 13,+ 12,+ 18,+ 12,+ 11,+ 2,+ 1,+ 48,+ 29,+ 28,+ 22,+ 3,+ 2,+ 48,+ 30,+ 29,+ 22,+ 4,+ 3,+ 48,+ 31,+ 30,+ 22,+ 5,+ 4,+ 48,+ 32,+ 31,+ 22,+ 6,+ 5,+ 48,+ 33,+ 32,+ 22,+ 33,+ 22,+ 18,+ 7,+ 6,+ 48,+ 7,+ 48,+ 44,+ 34,+ 33,+ 18,+ 8,+ 7,+ 44,+ 35,+ 34,+ 18,+ 9,+ 8,+ 44,+ 36,+ 35,+ 18,+ 10,+ 9,+ 44,+ 37,+ 36,+ 18,+ 37,+ 18,+ 11,+ 11,+ 10,+ 44,+ 11,+ 44,+ 37+ ]+ },+ "T": {+ "v": [+ 0.02297,+ 0.72906,+ 0.57906,+ 0.72906,+ 0.57906,+ 0.64594,+ 0.35109,+ 0.64594,+ 0.35109,+ 0.0,+ 0.25203,+ 0.0,+ 0.25203,+ 0.64594,+ 0.02297,+ 0.64594+ ],+ "t": [+ 1,+ 0,+ 7,+ 1,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 6+ ]+ },+ "U": {+ "v": [+ 0.07172,+ 0.27984,+ 0.07172,+ 0.72906,+ 0.17094,+ 0.72906,+ 0.17094,+ 0.23484,+ 0.17164,+ 0.1893,+ 0.17375,+ 0.15891,+ 0.17781,+ 0.13887,+ 0.18406,+ 0.12406,+ 0.20316,+ 0.09871,+ 0.22922,+ 0.08047,+ 0.26187,+ 0.06957,+ 0.30078,+ 0.06594,+ 0.33996,+ 0.06957,+ 0.3725,+ 0.08047,+ 0.39855,+ 0.09871,+ 0.41797,+ 0.12406,+ 0.42418,+ 0.13879,+ 0.42813,+ 0.15859,+ 0.43035,+ 0.18867,+ 0.43109,+ 0.23391,+ 0.43109,+ 0.72906,+ 0.52984,+ 0.72906,+ 0.52984,+ 0.27984,+ 0.52637,+ 0.18414,+ 0.51594,+ 0.12078,+ 0.49695,+ 0.07781,+ 0.46781,+ 0.04297,+ 0.43328,+ 0.01785,+ 0.39406,+ 0.0,+ 0.34996,+ -0.01066,+ 0.30078,+ -0.01422,+ 0.25195,+ -0.01066,+ 0.20797,+ 0.0,+ 0.16871,+ 0.01785,+ 0.13375,+ 0.04297,+ 0.105,+ 0.0777,+ 0.08594,+ 0.12125,+ 0.07527,+ 0.18496+ ],+ "t": [+ 1,+ 0,+ 37,+ 1,+ 37,+ 36,+ 1,+ 36,+ 35,+ 1,+ 35,+ 34,+ 1,+ 34,+ 33,+ 33,+ 32,+ 31,+ 33,+ 31,+ 30,+ 33,+ 30,+ 29,+ 33,+ 29,+ 28,+ 33,+ 28,+ 27,+ 33,+ 27,+ 26,+ 33,+ 26,+ 25,+ 33,+ 25,+ 24,+ 24,+ 23,+ 22,+ 24,+ 22,+ 21,+ 24,+ 21,+ 20,+ 24,+ 20,+ 19,+ 24,+ 19,+ 18,+ 24,+ 18,+ 17,+ 24,+ 17,+ 16,+ 24,+ 16,+ 15,+ 24,+ 15,+ 14,+ 24,+ 14,+ 13,+ 24,+ 13,+ 12,+ 3,+ 2,+ 1,+ 3,+ 1,+ 33,+ 33,+ 24,+ 12,+ 33,+ 12,+ 11,+ 33,+ 11,+ 10,+ 33,+ 10,+ 9,+ 33,+ 9,+ 8,+ 33,+ 8,+ 7,+ 33,+ 7,+ 6,+ 33,+ 6,+ 5,+ 33,+ 5,+ 4,+ 33,+ 4,+ 3+ ]+ },+ "V": {+ "v": [+ 0.30078,+ 0.08297,+ 0.47219,+ 0.72906,+ 0.57422,+ 0.72906,+ 0.36078,+ 0.0,+ 0.24125,+ 0.0,+ 0.02781,+ 0.72906,+ 0.12984,+ 0.72906+ ],+ "t": [+ 0,+ 6,+ 5,+ 0,+ 5,+ 4,+ 0,+ 4,+ 3,+ 0,+ 3,+ 2,+ 0,+ 2,+ 1+ ]+ },+ "W": {+ "v": [+ 0.0,+ 0.72906,+ 0.09625,+ 0.72906,+ 0.16609,+ 0.13719,+ 0.24906,+ 0.52875,+ 0.35203,+ 0.52875,+ 0.43609,+ 0.13625,+ 0.50594,+ 0.72906,+ 0.60203,+ 0.72906,+ 0.49313,+ 0.0,+ 0.39984,+ 0.0,+ 0.30078,+ 0.43312,+ 0.20219,+ 0.0,+ 0.10891,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 12,+ 12,+ 11,+ 10,+ 10,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 2,+ 1,+ 12,+ 2,+ 12,+ 10,+ 10,+ 8,+ 5,+ 10,+ 5,+ 4,+ 10,+ 4,+ 3,+ 10,+ 3,+ 2+ ]+ },+ "X": {+ "v": [+ 0.04203,+ 0.72906,+ 0.14797,+ 0.72906,+ 0.30812,+ 0.45406,+ 0.47125,+ 0.72906,+ 0.57719,+ 0.72906,+ 0.35891,+ 0.38625,+ 0.59281,+ 0.0,+ 0.48688,+ 0.0,+ 0.30812,+ 0.31391,+ 0.11531,+ 0.0,+ 0.00875,+ 0.0,+ 0.25297,+ 0.38625+ ],+ "t": [+ 1,+ 0,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 8,+ 4,+ 3,+ 8,+ 3,+ 2,+ 8,+ 2,+ 1,+ 8,+ 1,+ 11+ ]+ },+ "Y": {+ "v": [+ 0.01812,+ 0.72906,+ 0.12312,+ 0.72906,+ 0.30078,+ 0.40719,+ 0.47797,+ 0.72906,+ 0.58406,+ 0.72906,+ 0.35016,+ 0.32719,+ 0.35016,+ 0.0,+ 0.25094,+ 0.0,+ 0.25094,+ 0.32719+ ],+ "t": [+ 1,+ 0,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 4,+ 3,+ 2,+ 2,+ 1,+ 8,+ 2,+ 8,+ 4+ ]+ },+ "Z": {+ "v": [+ 0.08688,+ 0.72906,+ 0.56,+ 0.72906,+ 0.56,+ 0.65375,+ 0.17922,+ 0.08297,+ 0.57078,+ 0.08297,+ 0.57078,+ 0.0,+ 0.07625,+ 0.0,+ 0.07625,+ 0.07516,+ 0.44672,+ 0.64594,+ 0.08688,+ 0.64594+ ],+ "t": [+ 1,+ 0,+ 9,+ 1,+ 9,+ 8,+ 1,+ 8,+ 7,+ 1,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1+ ]+ },+ "[": {+ "v": [+ 0.22609,+ 0.75984,+ 0.43312,+ 0.75984,+ 0.43312,+ 0.69,+ 0.31594,+ 0.69,+ 0.31594,+ -0.06203,+ 0.43312,+ -0.06203,+ 0.43312,+ -0.13187,+ 0.22609,+ -0.13187+ ],+ "t": [+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 3,+ 0,+ 7+ ]+ },+ "\\": {+ "v": [+ 0.14313,+ 0.72906,+ 0.52687,+ -0.09281,+ 0.43406,+ -0.09281,+ 0.04984,+ 0.72906+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "]": {+ "v": [+ 0.37594,+ 0.75984,+ 0.37594,+ -0.13187,+ 0.16891,+ -0.13187,+ 0.16891,+ -0.06203,+ 0.28609,+ -0.06203,+ 0.28609,+ 0.69,+ 0.16891,+ 0.69,+ 0.16891,+ 0.75984+ ],+ "t": [+ 0,+ 7,+ 6,+ 0,+ 6,+ 5,+ 0,+ 5,+ 4,+ 4,+ 3,+ 2,+ 4,+ 2,+ 1,+ 4,+ 1,+ 0+ ]+ },+ "^": {+ "v": [+ 0.34422,+ 0.72906,+ 0.56688,+ 0.45703,+ 0.48,+ 0.45703,+ 0.30078,+ 0.64984,+ 0.12203,+ 0.45703,+ 0.03516,+ 0.45703,+ 0.25781,+ 0.72906+ ],+ "t": [+ 1,+ 0,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1+ ]+ },+ "_": {+ "v": [+ 0.60203,+ -0.19672,+ 0.60203,+ -0.23578,+ 0.0,+ -0.23578,+ 0.0,+ -0.19672+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "`": {+ "v": [+ 0.23297,+ 0.79984,+ 0.37016,+ 0.61625,+ 0.295,+ 0.61625,+ 0.13625,+ 0.79984+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "a": {+ "v": [+ 0.51703,+ 0.31203,+ 0.51703,+ 0.0,+ 0.42672,+ 0.0,+ 0.42672,+ 0.08109,+ 0.39422,+ 0.03859,+ 0.35422,+ 0.00891,+ 0.3059,+ -0.00844,+ 0.24813,+ -0.01422,+ 0.17297,+ -0.00242,+ 0.11469,+ 0.03297,+ 0.07742,+ 0.08813,+ 0.065,+ 0.15922,+ 0.08031,+ 0.23949,+ 0.12625,+ 0.29781,+ 0.20184,+ 0.33332,+ 0.30609,+ 0.34516,+ 0.42672,+ 0.34516,+ 0.42672,+ 0.35938,+ 0.41816,+ 0.41586,+ 0.39344,+ 0.45438,+ 0.35102,+ 0.47652,+ 0.28906,+ 0.48391,+ 0.24289,+ 0.48059,+ 0.19625,+ 0.47063,+ 0.15,+ 0.45445,+ 0.105,+ 0.43219,+ 0.105,+ 0.52203,+ 0.15379,+ 0.53867,+ 0.20047,+ 0.55047,+ 0.24543,+ 0.55762,+ 0.28906,+ 0.56,+ 0.35195,+ 0.555,+ 0.405,+ 0.54,+ 0.44855,+ 0.515,+ 0.48297,+ 0.48,+ 0.49875,+ 0.45273,+ 0.50922,+ 0.41969,+ 0.51508,+ 0.3748,+ 0.34281,+ 0.27484,+ 0.31297,+ 0.27484,+ 0.24406,+ 0.26793,+ 0.19453,+ 0.24719,+ 0.16477,+ 0.21289,+ 0.15484,+ 0.165,+ 0.16227,+ 0.12125,+ 0.18453,+ 0.08844,+ 0.22008,+ 0.06793,+ 0.26703,+ 0.06109,+ 0.33332,+ 0.07395,+ 0.38375,+ 0.1125,+ 0.41574,+ 0.17387,+ 0.42672,+ 0.25484,+ 0.42672,+ 0.27484+ ],+ "t": [+ 44,+ 43,+ 11,+ 44,+ 11,+ 10,+ 44,+ 10,+ 9,+ 44,+ 9,+ 8,+ 44,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 3,+ 0,+ 37,+ 3,+ 37,+ 36,+ 3,+ 36,+ 35,+ 3,+ 35,+ 34,+ 3,+ 34,+ 33,+ 33,+ 32,+ 31,+ 33,+ 31,+ 30,+ 33,+ 30,+ 29,+ 33,+ 29,+ 28,+ 33,+ 28,+ 27,+ 33,+ 27,+ 26,+ 26,+ 25,+ 24,+ 26,+ 24,+ 23,+ 26,+ 23,+ 22,+ 26,+ 22,+ 21,+ 26,+ 21,+ 20,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 12,+ 11,+ 43,+ 12,+ 43,+ 42,+ 12,+ 42,+ 41,+ 12,+ 41,+ 40,+ 45,+ 44,+ 7,+ 33,+ 26,+ 20,+ 33,+ 20,+ 19,+ 33,+ 19,+ 18,+ 33,+ 18,+ 17,+ 33,+ 17,+ 16,+ 16,+ 12,+ 40,+ 16,+ 40,+ 39,+ 16,+ 39,+ 52,+ 46,+ 45,+ 7,+ 33,+ 16,+ 52,+ 33,+ 52,+ 51,+ 47,+ 46,+ 7,+ 47,+ 7,+ 3,+ 3,+ 33,+ 51,+ 3,+ 51,+ 50,+ 3,+ 50,+ 49,+ 3,+ 49,+ 48,+ 3,+ 48,+ 47+ ]+ },+ "b": {+ "v": [+ 0.18406,+ 0.47703,+ 0.20969,+ 0.51238,+ 0.24344,+ 0.53844,+ 0.28426,+ 0.55461,+ 0.33109,+ 0.56,+ 0.41918,+ 0.54102,+ 0.48625,+ 0.48406,+ 0.52879,+ 0.39387,+ 0.54297,+ 0.27484,+ 0.52875,+ 0.15422,+ 0.48609,+ 0.06266,+ 0.41867,+ 0.005,+ 0.33016,+ -0.01422,+ 0.28414,+ -0.00891,+ 0.24391,+ 0.00703,+ 0.21027,+ 0.03313,+ 0.18406,+ 0.06891,+ 0.18406,+ 0.0,+ 0.09422,+ 0.0,+ 0.09422,+ 0.75984,+ 0.18406,+ 0.75984,+ 0.44828,+ 0.27297,+ 0.43996,+ 0.36465,+ 0.415,+ 0.43063,+ 0.37391,+ 0.47059,+ 0.31688,+ 0.48391,+ 0.25934,+ 0.47055,+ 0.21766,+ 0.43047,+ 0.19246,+ 0.36438,+ 0.18406,+ 0.27297,+ 0.19246,+ 0.18184,+ 0.21766,+ 0.11563,+ 0.25934,+ 0.07543,+ 0.31688,+ 0.06203,+ 0.37391,+ 0.07531,+ 0.415,+ 0.11516,+ 0.43996,+ 0.18125+ ],+ "t": [+ 18,+ 29,+ 28,+ 30,+ 29,+ 18,+ 18,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 16,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1,+ 0,+ 20,+ 19,+ 0,+ 19,+ 18,+ 0,+ 18,+ 28,+ 0,+ 28,+ 27,+ 0,+ 27,+ 26,+ 0,+ 26,+ 25,+ 31,+ 30,+ 18,+ 31,+ 18,+ 16,+ 1,+ 0,+ 25,+ 1,+ 25,+ 24,+ 32,+ 31,+ 16,+ 32,+ 16,+ 11,+ 6,+ 1,+ 24,+ 6,+ 24,+ 23,+ 6,+ 23,+ 22,+ 6,+ 22,+ 21,+ 6,+ 21,+ 36,+ 33,+ 32,+ 11,+ 11,+ 6,+ 36,+ 11,+ 36,+ 35,+ 11,+ 35,+ 34,+ 11,+ 34,+ 33+ ]+ },+ "c": {+ "v": [+ 0.51813,+ 0.02781,+ 0.48137,+ 0.00949,+ 0.44359,+ -0.00359,+ 0.40488,+ -0.01156,+ 0.36531,+ -0.01422,+ 0.25215,+ 0.0048,+ 0.16672,+ 0.06187,+ 0.11305,+ 0.15277,+ 0.09516,+ 0.27297,+ 0.11305,+ 0.39301,+ 0.16672,+ 0.48375,+ 0.25215,+ 0.54094,+ 0.36531,+ 0.56,+ 0.40434,+ 0.55742,+ 0.44234,+ 0.54969,+ 0.48012,+ 0.53672,+ 0.51813,+ 0.51813,+ 0.51813,+ 0.42391,+ 0.48242,+ 0.45121,+ 0.44656,+ 0.46969,+ 0.40828,+ 0.48035,+ 0.36531,+ 0.48391,+ 0.29055,+ 0.47023,+ 0.23531,+ 0.42922,+ 0.20133,+ 0.36281,+ 0.19,+ 0.27297,+ 0.20141,+ 0.1834,+ 0.23563,+ 0.11688,+ 0.29086,+ 0.07574,+ 0.36531,+ 0.06203,+ 0.40973,+ 0.06563,+ 0.44922,+ 0.07641,+ 0.48504,+ 0.09477,+ 0.51813,+ 0.12109+ ],+ "t": [+ 1,+ 0,+ 33,+ 1,+ 33,+ 32,+ 1,+ 32,+ 31,+ 1,+ 31,+ 30,+ 1,+ 30,+ 29,+ 1,+ 29,+ 28,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 18,+ 14,+ 13,+ 18,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 28,+ 5,+ 28,+ 27,+ 5,+ 27,+ 26,+ 19,+ 18,+ 12,+ 9,+ 5,+ 26,+ 9,+ 26,+ 25,+ 9,+ 25,+ 24,+ 9,+ 24,+ 23,+ 9,+ 23,+ 22,+ 20,+ 19,+ 12,+ 12,+ 9,+ 22,+ 12,+ 22,+ 21,+ 12,+ 21,+ 20+ ]+ },+ "d": {+ "v": [+ 0.41891,+ 0.47703,+ 0.41891,+ 0.75984,+ 0.50875,+ 0.75984,+ 0.50875,+ 0.0,+ 0.41891,+ 0.0,+ 0.41891,+ 0.06891,+ 0.39277,+ 0.03313,+ 0.35906,+ 0.00703,+ 0.31887,+ -0.00891,+ 0.27297,+ -0.01422,+ 0.18441,+ 0.005,+ 0.11688,+ 0.06266,+ 0.07422,+ 0.15422,+ 0.06,+ 0.27484,+ 0.0743,+ 0.39387,+ 0.11719,+ 0.48406,+ 0.18473,+ 0.54102,+ 0.27297,+ 0.56,+ 0.31937,+ 0.55469,+ 0.35984,+ 0.53875,+ 0.39344,+ 0.51277,+ 0.15484,+ 0.27297,+ 0.16313,+ 0.18125,+ 0.18797,+ 0.11516,+ 0.22914,+ 0.07531,+ 0.28609,+ 0.06203,+ 0.34332,+ 0.07543,+ 0.385,+ 0.11563,+ 0.41043,+ 0.18184,+ 0.41891,+ 0.27297,+ 0.41043,+ 0.36438,+ 0.385,+ 0.43047,+ 0.34332,+ 0.47055,+ 0.28609,+ 0.48391,+ 0.22914,+ 0.47059,+ 0.18797,+ 0.43063,+ 0.16313,+ 0.36465+ ],+ "t": [+ 13,+ 21,+ 36,+ 13,+ 36,+ 35,+ 22,+ 21,+ 13,+ 22,+ 13,+ 12,+ 22,+ 12,+ 11,+ 22,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 10,+ 7,+ 6,+ 10,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 2,+ 1,+ 0,+ 0,+ 20,+ 19,+ 0,+ 19,+ 18,+ 0,+ 18,+ 17,+ 0,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 35,+ 16,+ 35,+ 34,+ 16,+ 34,+ 33,+ 16,+ 33,+ 32,+ 23,+ 22,+ 10,+ 0,+ 16,+ 32,+ 0,+ 32,+ 31,+ 0,+ 31,+ 30,+ 0,+ 30,+ 29,+ 24,+ 23,+ 10,+ 2,+ 0,+ 29,+ 2,+ 29,+ 28,+ 25,+ 24,+ 10,+ 25,+ 10,+ 5,+ 5,+ 2,+ 28,+ 5,+ 28,+ 27,+ 5,+ 27,+ 26,+ 5,+ 26,+ 25+ ]+ },+ "e": {+ "v": [+ 0.54297,+ 0.29594,+ 0.54297,+ 0.25203,+ 0.15375,+ 0.25203,+ 0.15375,+ 0.24906,+ 0.16539,+ 0.1698,+ 0.20031,+ 0.11078,+ 0.2566,+ 0.07422,+ 0.33203,+ 0.06203,+ 0.37598,+ 0.06543,+ 0.42188,+ 0.07562,+ 0.47035,+ 0.09289,+ 0.52203,+ 0.11719,+ 0.52203,+ 0.02781,+ 0.47168,+ 0.00949,+ 0.42313,+ -0.00359,+ 0.37629,+ -0.01156,+ 0.33109,+ -0.01422,+ 0.2175,+ 0.00488,+ 0.13172,+ 0.06219,+ 0.07793,+ 0.15316,+ 0.06,+ 0.27297,+ 0.07758,+ 0.39059,+ 0.13031,+ 0.48187,+ 0.21234,+ 0.54047,+ 0.31781,+ 0.56,+ 0.41129,+ 0.5423,+ 0.48266,+ 0.48922,+ 0.52789,+ 0.40551,+ 0.45312,+ 0.32234,+ 0.44285,+ 0.39195,+ 0.41578,+ 0.44266,+ 0.37258,+ 0.47359,+ 0.31391,+ 0.48391,+ 0.25477,+ 0.47316,+ 0.20703,+ 0.44094,+ 0.17355,+ 0.38965,+ 0.15719,+ 0.32172+ ],+ "t": [+ 20,+ 36,+ 35,+ 20,+ 35,+ 34,+ 28,+ 36,+ 20,+ 20,+ 19,+ 18,+ 20,+ 18,+ 17,+ 17,+ 16,+ 15,+ 17,+ 15,+ 14,+ 17,+ 14,+ 13,+ 17,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 9,+ 12,+ 9,+ 8,+ 12,+ 8,+ 7,+ 12,+ 7,+ 6,+ 2,+ 1,+ 0,+ 0,+ 27,+ 26,+ 0,+ 26,+ 25,+ 0,+ 25,+ 24,+ 24,+ 23,+ 22,+ 24,+ 22,+ 21,+ 21,+ 20,+ 34,+ 21,+ 34,+ 33,+ 17,+ 12,+ 6,+ 17,+ 6,+ 5,+ 17,+ 5,+ 4,+ 24,+ 21,+ 33,+ 24,+ 33,+ 32,+ 24,+ 32,+ 31,+ 24,+ 31,+ 30,+ 20,+ 17,+ 4,+ 20,+ 4,+ 3,+ 20,+ 3,+ 2,+ 20,+ 2,+ 0,+ 0,+ 24,+ 30,+ 0,+ 30,+ 29,+ 0,+ 29,+ 28,+ 0,+ 28,+ 20+ ]+ },+ "f": {+ "v": [+ 0.51906,+ 0.75984,+ 0.51906,+ 0.685,+ 0.41703,+ 0.685,+ 0.37602,+ 0.68004,+ 0.34984,+ 0.66516,+ 0.33578,+ 0.63781,+ 0.33109,+ 0.59516,+ 0.33109,+ 0.54688,+ 0.51906,+ 0.54688,+ 0.51906,+ 0.47703,+ 0.33109,+ 0.47703,+ 0.33109,+ 0.0,+ 0.24125,+ 0.0,+ 0.24125,+ 0.47703,+ 0.09516,+ 0.47703,+ 0.09516,+ 0.54688,+ 0.24125,+ 0.54688,+ 0.24125,+ 0.585,+ 0.25156,+ 0.66301,+ 0.2825,+ 0.71734,+ 0.33527,+ 0.74922,+ 0.41109,+ 0.75984+ ],+ "t": [+ 1,+ 0,+ 21,+ 1,+ 21,+ 20,+ 1,+ 20,+ 19,+ 19,+ 18,+ 17,+ 19,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 2,+ 1,+ 19,+ 19,+ 16,+ 13,+ 19,+ 13,+ 10,+ 19,+ 10,+ 7,+ 19,+ 7,+ 6,+ 19,+ 6,+ 5,+ 19,+ 5,+ 4,+ 19,+ 4,+ 3,+ 19,+ 3,+ 2+ ]+ },+ "g": {+ "v": [+ 0.50875,+ 0.03516,+ 0.49422,+ -0.07305,+ 0.45062,+ -0.15141,+ 0.37895,+ -0.19898,+ 0.27984,+ -0.21484,+ 0.2418,+ -0.21313,+ 0.20203,+ -0.20797,+ 0.16156,+ -0.19961,+ 0.12109,+ -0.18797,+ 0.12109,+ -0.09906,+ 0.16672,+ -0.11863,+ 0.20797,+ -0.13234,+ 0.24547,+ -0.14043,+ 0.27984,+ -0.14313,+ 0.34262,+ -0.1332,+ 0.38562,+ -0.10344,+ 0.41059,+ -0.0523,+ 0.41891,+ 0.02203,+ 0.41891,+ 0.02594,+ 0.41891,+ 0.08688,+ 0.39355,+ 0.04691,+ 0.36031,+ 0.01859,+ 0.31922,+ 0.00172,+ 0.27,+ -0.00391,+ 0.18398,+ 0.01523,+ 0.11719,+ 0.07266,+ 0.0743,+ 0.1623,+ 0.06,+ 0.27781,+ 0.0743,+ 0.39363,+ 0.11719,+ 0.48328,+ 0.18398,+ 0.54082,+ 0.27,+ 0.56,+ 0.31875,+ 0.55477,+ 0.35938,+ 0.53906,+ 0.39254,+ 0.51234,+ 0.41891,+ 0.47406,+ 0.41891,+ 0.545,+ 0.50875,+ 0.545,+ 0.41891,+ 0.27781,+ 0.41066,+ 0.36676,+ 0.38594,+ 0.43141,+ 0.34547,+ 0.47078,+ 0.29,+ 0.48391,+ 0.23187,+ 0.47078,+ 0.18938,+ 0.43141,+ 0.16348,+ 0.36676,+ 0.15484,+ 0.27781,+ 0.16355,+ 0.18875,+ 0.18969,+ 0.12375,+ 0.23254,+ 0.08402,+ 0.29109,+ 0.07078,+ 0.34574,+ 0.08406,+ 0.38594,+ 0.12391,+ 0.41066,+ 0.18902+ ],+ "t": [+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 10,+ 7,+ 6,+ 10,+ 6,+ 5,+ 10,+ 5,+ 4,+ 10,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 0,+ 37,+ 36,+ 0,+ 36,+ 35,+ 0,+ 35,+ 34,+ 34,+ 33,+ 32,+ 34,+ 32,+ 31,+ 34,+ 31,+ 30,+ 34,+ 30,+ 29,+ 29,+ 28,+ 27,+ 29,+ 27,+ 46,+ 29,+ 46,+ 45,+ 29,+ 45,+ 44,+ 29,+ 44,+ 43,+ 29,+ 43,+ 42,+ 47,+ 46,+ 27,+ 47,+ 27,+ 26,+ 47,+ 26,+ 25,+ 47,+ 25,+ 24,+ 24,+ 23,+ 22,+ 24,+ 22,+ 21,+ 24,+ 21,+ 20,+ 24,+ 20,+ 19,+ 11,+ 10,+ 3,+ 34,+ 29,+ 42,+ 34,+ 42,+ 41,+ 34,+ 41,+ 40,+ 34,+ 40,+ 39,+ 48,+ 47,+ 24,+ 12,+ 11,+ 3,+ 0,+ 34,+ 39,+ 0,+ 39,+ 38,+ 0,+ 38,+ 53,+ 0,+ 53,+ 52,+ 49,+ 48,+ 24,+ 13,+ 12,+ 3,+ 50,+ 49,+ 24,+ 50,+ 24,+ 19,+ 14,+ 13,+ 3,+ 51,+ 50,+ 19,+ 15,+ 14,+ 3,+ 15,+ 3,+ 0,+ 52,+ 51,+ 19,+ 16,+ 15,+ 0,+ 0,+ 52,+ 19,+ 0,+ 19,+ 17,+ 0,+ 17,+ 16+ ]+ },+ "h": {+ "v": [+ 0.51313,+ 0.33891,+ 0.51313,+ 0.0,+ 0.42281,+ 0.0,+ 0.42281,+ 0.33891,+ 0.41633,+ 0.40285,+ 0.39688,+ 0.44719,+ 0.36375,+ 0.4732,+ 0.31594,+ 0.48187,+ 0.2602,+ 0.4707,+ 0.21891,+ 0.43719,+ 0.19348,+ 0.38289,+ 0.185,+ 0.30906,+ 0.185,+ 0.0,+ 0.09516,+ 0.0,+ 0.09516,+ 0.75984,+ 0.185,+ 0.75984,+ 0.185,+ 0.46484,+ 0.21328,+ 0.50602,+ 0.25,+ 0.53578,+ 0.29484,+ 0.55395,+ 0.34719,+ 0.56,+ 0.42008,+ 0.54625,+ 0.47187,+ 0.505,+ 0.50281,+ 0.43605+ ],+ "t": [+ 1,+ 0,+ 23,+ 1,+ 23,+ 22,+ 1,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 3,+ 2,+ 1,+ 3,+ 1,+ 21,+ 16,+ 13,+ 10,+ 16,+ 10,+ 9,+ 16,+ 9,+ 8,+ 16,+ 8,+ 7,+ 4,+ 3,+ 21,+ 21,+ 16,+ 7,+ 21,+ 7,+ 6,+ 21,+ 6,+ 5,+ 21,+ 5,+ 4+ ]+ },+ "i": {+ "v": [+ 0.125,+ 0.54688,+ 0.355,+ 0.54688,+ 0.355,+ 0.06984,+ 0.53328,+ 0.06984,+ 0.53328,+ 0.0,+ 0.08688,+ 0.0,+ 0.08688,+ 0.06984,+ 0.26516,+ 0.06984,+ 0.26516,+ 0.47703,+ 0.125,+ 0.47703,+ 0.26516,+ 0.75984,+ 0.355,+ 0.75984,+ 0.355,+ 0.64594,+ 0.26516,+ 0.64594+ ],+ "t": [+ 1,+ 0,+ 9,+ 1,+ 9,+ 8,+ 1,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 4,+ 3,+ 2,+ 2,+ 1,+ 7,+ 2,+ 7,+ 4,+ 11,+ 10,+ 13,+ 11,+ 13,+ 12+ ]+ },+ "j": {+ "v": [+ 0.29297,+ -0.00984,+ 0.29297,+ 0.47703,+ 0.13812,+ 0.47703,+ 0.13812,+ 0.54688,+ 0.38281,+ 0.54688,+ 0.38281,+ -0.00984,+ 0.37188,+ -0.09406,+ 0.33906,+ -0.15641,+ 0.28621,+ -0.19508,+ 0.21484,+ -0.20797,+ 0.09078,+ -0.20797,+ 0.09078,+ -0.13187,+ 0.20516,+ -0.13187,+ 0.24355,+ -0.12422,+ 0.27094,+ -0.10125,+ 0.28746,+ -0.06316,+ 0.29297,+ 0.75984,+ 0.38281,+ 0.75984,+ 0.38281,+ 0.64594,+ 0.29297,+ 0.64594+ ],+ "t": [+ 12,+ 11,+ 10,+ 12,+ 10,+ 9,+ 12,+ 9,+ 8,+ 12,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 4,+ 3,+ 2,+ 4,+ 2,+ 1,+ 4,+ 1,+ 0,+ 4,+ 0,+ 15,+ 13,+ 12,+ 7,+ 7,+ 4,+ 15,+ 7,+ 15,+ 14,+ 7,+ 14,+ 13,+ 17,+ 16,+ 19,+ 17,+ 19,+ 18+ ]+ },+ "k": {+ "v": [+ 0.11531,+ 0.75984,+ 0.20797,+ 0.75984,+ 0.20797,+ 0.31984,+ 0.44391,+ 0.54688,+ 0.55328,+ 0.54688,+ 0.33797,+ 0.34078,+ 0.58688,+ 0.0,+ 0.47703,+ 0.0,+ 0.27484,+ 0.28219,+ 0.20797,+ 0.21922,+ 0.20797,+ 0.0,+ 0.11531,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 11,+ 11,+ 10,+ 9,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 8,+ 4,+ 3,+ 8,+ 3,+ 2,+ 2,+ 1,+ 11,+ 2,+ 11,+ 9,+ 2,+ 9,+ 8+ ]+ },+ "l": {+ "v": [+ 0.31203,+ 0.19828,+ 0.31758,+ 0.14512,+ 0.33422,+ 0.10687,+ 0.36172,+ 0.08391,+ 0.39984,+ 0.07625,+ 0.50484,+ 0.07625,+ 0.50484,+ 0.0,+ 0.39109,+ 0.0,+ 0.31969,+ 0.01293,+ 0.26641,+ 0.05172,+ 0.23324,+ 0.1143,+ 0.22219,+ 0.19828,+ 0.22219,+ 0.69484,+ 0.07812,+ 0.69484,+ 0.07812,+ 0.76516,+ 0.31203,+ 0.76516+ ],+ "t": [+ 15,+ 14,+ 13,+ 15,+ 13,+ 12,+ 15,+ 12,+ 11,+ 15,+ 11,+ 10,+ 15,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 9,+ 5,+ 4,+ 9,+ 4,+ 3,+ 9,+ 3,+ 2,+ 9,+ 2,+ 1,+ 9,+ 1,+ 0,+ 9,+ 0,+ 15+ ]+ },+ "m": {+ "v": [+ 0.33016,+ 0.49125,+ 0.34898,+ 0.5218,+ 0.37234,+ 0.54312,+ 0.40059,+ 0.55578,+ 0.43406,+ 0.56,+ 0.49027,+ 0.54723,+ 0.52703,+ 0.50891,+ 0.54742,+ 0.43543,+ 0.55422,+ 0.31688,+ 0.55422,+ 0.0,+ 0.47219,+ 0.0,+ 0.47219,+ 0.31297,+ 0.46895,+ 0.4068,+ 0.45922,+ 0.45672,+ 0.44098,+ 0.47781,+ 0.41219,+ 0.48484,+ 0.37926,+ 0.47734,+ 0.35859,+ 0.45484,+ 0.34781,+ 0.40437,+ 0.34422,+ 0.31297,+ 0.34422,+ 0.0,+ 0.26219,+ 0.0,+ 0.26219,+ 0.31297,+ 0.25871,+ 0.4077,+ 0.24828,+ 0.4575,+ 0.22883,+ 0.47801,+ 0.19828,+ 0.48484,+ 0.16809,+ 0.47734,+ 0.14875,+ 0.45484,+ 0.13832,+ 0.40437,+ 0.13484,+ 0.31297,+ 0.13484,+ 0.0,+ 0.05328,+ 0.0,+ 0.05328,+ 0.54688,+ 0.13484,+ 0.54688,+ 0.13484,+ 0.5,+ 0.15293,+ 0.52586,+ 0.175,+ 0.54469,+ 0.20086,+ 0.55617,+ 0.23,+ 0.56,+ 0.26395,+ 0.55574,+ 0.29172,+ 0.54297,+ 0.31367,+ 0.52152+ ],+ "t": [+ 0,+ 42,+ 41,+ 0,+ 41,+ 40,+ 0,+ 40,+ 39,+ 0,+ 39,+ 38,+ 0,+ 38,+ 37,+ 0,+ 37,+ 36,+ 0,+ 36,+ 35,+ 35,+ 34,+ 33,+ 35,+ 33,+ 32,+ 32,+ 31,+ 30,+ 32,+ 30,+ 29,+ 32,+ 29,+ 28,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 22,+ 18,+ 17,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 11,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 0,+ 35,+ 32,+ 28,+ 35,+ 28,+ 27,+ 35,+ 27,+ 26,+ 35,+ 26,+ 25,+ 23,+ 22,+ 17,+ 23,+ 17,+ 16,+ 12,+ 11,+ 5,+ 0,+ 35,+ 25,+ 0,+ 25,+ 24,+ 0,+ 24,+ 23,+ 0,+ 23,+ 16,+ 0,+ 16,+ 15,+ 13,+ 12,+ 5,+ 5,+ 0,+ 15,+ 5,+ 15,+ 14,+ 5,+ 14,+ 13+ ]+ },+ "n": {+ "v": [+ 0.51313,+ 0.33891,+ 0.51313,+ 0.0,+ 0.42281,+ 0.0,+ 0.42281,+ 0.33891,+ 0.41633,+ 0.40285,+ 0.39688,+ 0.44719,+ 0.36375,+ 0.4732,+ 0.31594,+ 0.48187,+ 0.2602,+ 0.4707,+ 0.21891,+ 0.43719,+ 0.19348,+ 0.38289,+ 0.185,+ 0.30906,+ 0.185,+ 0.0,+ 0.09516,+ 0.0,+ 0.09516,+ 0.54688,+ 0.185,+ 0.54688,+ 0.185,+ 0.46484,+ 0.21328,+ 0.50602,+ 0.25,+ 0.53578,+ 0.29484,+ 0.55395,+ 0.34719,+ 0.56,+ 0.42008,+ 0.54625,+ 0.47187,+ 0.505,+ 0.50281,+ 0.43605+ ],+ "t": [+ 1,+ 0,+ 23,+ 1,+ 23,+ 22,+ 1,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 3,+ 2,+ 1,+ 3,+ 1,+ 21,+ 16,+ 13,+ 10,+ 16,+ 10,+ 9,+ 16,+ 9,+ 8,+ 16,+ 8,+ 7,+ 4,+ 3,+ 21,+ 21,+ 16,+ 7,+ 21,+ 7,+ 6,+ 21,+ 6,+ 5,+ 21,+ 5,+ 4+ ]+ },+ "o": {+ "v": [+ 0.30078,+ 0.56,+ 0.40117,+ 0.54156,+ 0.47484,+ 0.48625,+ 0.52008,+ 0.39613,+ 0.53516,+ 0.27297,+ 0.52012,+ 0.14945,+ 0.475,+ 0.05922,+ 0.40145,+ 0.00414,+ 0.30078,+ -0.01422,+ 0.20043,+ 0.00414,+ 0.12688,+ 0.05922,+ 0.08188,+ 0.14945,+ 0.06688,+ 0.27297,+ 0.08188,+ 0.39613,+ 0.12688,+ 0.48625,+ 0.20043,+ 0.54156,+ 0.30078,+ 0.48391,+ 0.24078,+ 0.47059,+ 0.19734,+ 0.43063,+ 0.17098,+ 0.36465,+ 0.16219,+ 0.27297,+ 0.17098,+ 0.18156,+ 0.19734,+ 0.11547,+ 0.24078,+ 0.07539,+ 0.30078,+ 0.06203,+ 0.36125,+ 0.07539,+ 0.40484,+ 0.11547,+ 0.43121,+ 0.18156,+ 0.44,+ 0.27297,+ 0.43121,+ 0.36465,+ 0.40484,+ 0.43063,+ 0.36125,+ 0.47059+ ],+ "t": [+ 12,+ 20,+ 19,+ 12,+ 19,+ 18,+ 21,+ 20,+ 12,+ 21,+ 12,+ 11,+ 21,+ 11,+ 10,+ 21,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 2,+ 1,+ 0,+ 2,+ 0,+ 15,+ 2,+ 15,+ 14,+ 14,+ 13,+ 12,+ 14,+ 12,+ 18,+ 14,+ 18,+ 17,+ 14,+ 17,+ 16,+ 22,+ 21,+ 9,+ 2,+ 14,+ 16,+ 2,+ 16,+ 31,+ 2,+ 31,+ 30,+ 2,+ 30,+ 29,+ 2,+ 29,+ 28,+ 2,+ 28,+ 27,+ 23,+ 22,+ 9,+ 6,+ 2,+ 27,+ 6,+ 27,+ 26,+ 6,+ 26,+ 25,+ 6,+ 25,+ 24,+ 24,+ 23,+ 9,+ 24,+ 9,+ 6+ ]+ },+ "p": {+ "v": [+ 0.18313,+ 0.06891,+ 0.18313,+ -0.20797,+ 0.09281,+ -0.20797,+ 0.09281,+ 0.54688,+ 0.18313,+ 0.54688,+ 0.18313,+ 0.47703,+ 0.20934,+ 0.51277,+ 0.24297,+ 0.53875,+ 0.28316,+ 0.55469,+ 0.32906,+ 0.56,+ 0.41758,+ 0.54082,+ 0.48469,+ 0.48328,+ 0.52699,+ 0.39191,+ 0.54109,+ 0.27094,+ 0.52691,+ 0.15199,+ 0.48438,+ 0.06172,+ 0.41727,+ 0.00477,+ 0.32906,+ -0.01422,+ 0.28242,+ -0.00891,+ 0.24188,+ 0.00703,+ 0.20852,+ 0.03313,+ 0.44672,+ 0.27297,+ 0.43848,+ 0.36465,+ 0.41375,+ 0.43063,+ 0.37289,+ 0.47059,+ 0.31594,+ 0.48391,+ 0.2584,+ 0.47055,+ 0.21672,+ 0.43047,+ 0.19152,+ 0.36438,+ 0.18313,+ 0.27297,+ 0.19152,+ 0.18184,+ 0.21672,+ 0.11563,+ 0.2584,+ 0.07543,+ 0.31594,+ 0.06203,+ 0.37289,+ 0.07531,+ 0.41375,+ 0.11516,+ 0.43848,+ 0.18125+ ],+ "t": [+ 2,+ 29,+ 28,+ 30,+ 29,+ 2,+ 2,+ 1,+ 0,+ 0,+ 20,+ 19,+ 0,+ 19,+ 18,+ 0,+ 18,+ 17,+ 0,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 16,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 28,+ 5,+ 28,+ 27,+ 5,+ 27,+ 26,+ 5,+ 26,+ 25,+ 30,+ 2,+ 0,+ 6,+ 5,+ 25,+ 6,+ 25,+ 24,+ 31,+ 30,+ 0,+ 11,+ 6,+ 24,+ 11,+ 24,+ 23,+ 11,+ 23,+ 22,+ 11,+ 22,+ 21,+ 11,+ 21,+ 36,+ 32,+ 31,+ 0,+ 32,+ 0,+ 16,+ 16,+ 11,+ 36,+ 16,+ 36,+ 35,+ 16,+ 35,+ 34,+ 16,+ 34,+ 33,+ 16,+ 33,+ 32+ ]+ },+ "q": {+ "v": [+ 0.42484,+ 0.06781,+ 0.39898,+ 0.03203,+ 0.36547,+ 0.00562,+ 0.32512,+ -0.01066,+ 0.27875,+ -0.01609,+ 0.19094,+ 0.00289,+ 0.12375,+ 0.05984,+ 0.08109,+ 0.15012,+ 0.06688,+ 0.26906,+ 0.08102,+ 0.39004,+ 0.12344,+ 0.48141,+ 0.19062,+ 0.53895,+ 0.27875,+ 0.55812,+ 0.32477,+ 0.55281,+ 0.365,+ 0.53687,+ 0.39863,+ 0.51082,+ 0.42484,+ 0.47516,+ 0.42484,+ 0.545,+ 0.51516,+ 0.545,+ 0.51516,+ -0.21,+ 0.42484,+ -0.21,+ 0.16219,+ 0.27094,+ 0.17039,+ 0.17934,+ 0.195,+ 0.11328,+ 0.23598,+ 0.07332,+ 0.29297,+ 0.06,+ 0.35008,+ 0.07336,+ 0.39141,+ 0.11344,+ 0.41648,+ 0.17961,+ 0.42484,+ 0.27094,+ 0.41648,+ 0.36234,+ 0.39141,+ 0.42844,+ 0.35008,+ 0.46852,+ 0.29297,+ 0.48187,+ 0.23598,+ 0.46855,+ 0.195,+ 0.42859,+ 0.17039,+ 0.36262+ ],+ "t": [+ 8,+ 21,+ 36,+ 8,+ 36,+ 35,+ 22,+ 21,+ 8,+ 22,+ 8,+ 7,+ 22,+ 7,+ 6,+ 22,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 0,+ 0,+ 20,+ 19,+ 0,+ 19,+ 18,+ 18,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 16,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 35,+ 11,+ 35,+ 34,+ 11,+ 34,+ 33,+ 11,+ 33,+ 32,+ 23,+ 22,+ 5,+ 16,+ 11,+ 32,+ 16,+ 32,+ 31,+ 16,+ 31,+ 30,+ 16,+ 30,+ 29,+ 24,+ 23,+ 5,+ 18,+ 16,+ 29,+ 18,+ 29,+ 28,+ 25,+ 24,+ 5,+ 25,+ 5,+ 0,+ 0,+ 18,+ 28,+ 0,+ 28,+ 27,+ 0,+ 27,+ 26,+ 0,+ 26,+ 25+ ]+ },+ "r": {+ "v": [+ 0.56391,+ 0.43406,+ 0.53488,+ 0.45348,+ 0.50531,+ 0.46672,+ 0.47414,+ 0.47445,+ 0.44,+ 0.47703,+ 0.36582,+ 0.46383,+ 0.31141,+ 0.42422,+ 0.27812,+ 0.35984,+ 0.26703,+ 0.27203,+ 0.26703,+ 0.0,+ 0.17672,+ 0.0,+ 0.17672,+ 0.54688,+ 0.26703,+ 0.54688,+ 0.26703,+ 0.44,+ 0.29555,+ 0.49133,+ 0.33609,+ 0.52906,+ 0.38711,+ 0.55227,+ 0.44672,+ 0.56,+ 0.47887,+ 0.55793,+ 0.50875,+ 0.55172,+ 0.53699,+ 0.54113,+ 0.56391,+ 0.52594+ ],+ "t": [+ 1,+ 0,+ 21,+ 1,+ 21,+ 20,+ 1,+ 20,+ 19,+ 1,+ 19,+ 18,+ 1,+ 18,+ 17,+ 1,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 2,+ 1,+ 16,+ 13,+ 10,+ 7,+ 13,+ 7,+ 6,+ 13,+ 6,+ 5,+ 3,+ 2,+ 16,+ 16,+ 13,+ 5,+ 16,+ 5,+ 4,+ 16,+ 4,+ 3+ ]+ },+ "s": {+ "v": [+ 0.47516,+ 0.52781,+ 0.47516,+ 0.44,+ 0.43645,+ 0.45957,+ 0.3975,+ 0.47359,+ 0.35805,+ 0.48203,+ 0.31781,+ 0.48484,+ 0.26457,+ 0.47988,+ 0.22672,+ 0.465,+ 0.20422,+ 0.44012,+ 0.19672,+ 0.40484,+ 0.20234,+ 0.37277,+ 0.21922,+ 0.35,+ 0.25844,+ 0.33227,+ 0.33109,+ 0.315,+ 0.36719,+ 0.30812,+ 0.42594,+ 0.2891,+ 0.46844,+ 0.25734,+ 0.49434,+ 0.21352,+ 0.50297,+ 0.15828,+ 0.48855,+ 0.08602,+ 0.44531,+ 0.03141,+ 0.37645,+ -0.00281,+ 0.28516,+ -0.01422,+ 0.24367,+ -0.01207,+ 0.20016,+ -0.00562,+ 0.15395,+ 0.00508,+ 0.10406,+ 0.02,+ 0.10406,+ 0.11281,+ 0.15324,+ 0.09012,+ 0.20016,+ 0.07391,+ 0.24488,+ 0.0643,+ 0.28719,+ 0.06109,+ 0.34,+ 0.06711,+ 0.37938,+ 0.08516,+ 0.40398,+ 0.11418,+ 0.41219,+ 0.15281,+ 0.38227,+ 0.20566,+ 0.2925,+ 0.23922,+ 0.28859,+ 0.24031,+ 0.25484,+ 0.24703,+ 0.1877,+ 0.26738,+ 0.14156,+ 0.29813,+ 0.11484,+ 0.34055,+ 0.10594,+ 0.39594,+ 0.11922,+ 0.46566,+ 0.15906,+ 0.51734,+ 0.22371,+ 0.54934,+ 0.31109,+ 0.56,+ 0.35414,+ 0.55797,+ 0.39547,+ 0.55188,+ 0.4357,+ 0.54187+ ],+ "t": [+ 1,+ 0,+ 50,+ 1,+ 50,+ 49,+ 1,+ 49,+ 48,+ 1,+ 48,+ 47,+ 47,+ 46,+ 45,+ 47,+ 45,+ 44,+ 47,+ 44,+ 43,+ 47,+ 43,+ 42,+ 42,+ 41,+ 40,+ 42,+ 40,+ 39,+ 42,+ 39,+ 38,+ 42,+ 38,+ 37,+ 42,+ 37,+ 36,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 28,+ 24,+ 23,+ 28,+ 23,+ 22,+ 28,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 2,+ 1,+ 47,+ 29,+ 28,+ 21,+ 3,+ 2,+ 47,+ 30,+ 29,+ 21,+ 4,+ 3,+ 47,+ 31,+ 30,+ 21,+ 5,+ 4,+ 47,+ 32,+ 31,+ 21,+ 6,+ 5,+ 47,+ 33,+ 32,+ 21,+ 7,+ 6,+ 47,+ 34,+ 33,+ 21,+ 34,+ 21,+ 16,+ 8,+ 7,+ 47,+ 8,+ 47,+ 42,+ 35,+ 34,+ 16,+ 9,+ 8,+ 42,+ 36,+ 35,+ 16,+ 36,+ 16,+ 12,+ 36,+ 12,+ 11,+ 10,+ 9,+ 42,+ 42,+ 36,+ 11,+ 42,+ 11,+ 10+ ]+ },+ "t": {+ "v": [+ 0.29984,+ 0.70219,+ 0.29984,+ 0.54688,+ 0.50391,+ 0.54688,+ 0.50391,+ 0.47703,+ 0.29984,+ 0.47703,+ 0.29984,+ 0.18016,+ 0.30559,+ 0.12879,+ 0.32281,+ 0.09563,+ 0.3543,+ 0.0777,+ 0.40281,+ 0.07172,+ 0.50391,+ 0.07172,+ 0.50391,+ 0.0,+ 0.39406,+ 0.0,+ 0.30785,+ 0.01012,+ 0.25141,+ 0.04047,+ 0.22035,+ 0.0957,+ 0.21,+ 0.18016,+ 0.21,+ 0.47703,+ 0.06391,+ 0.47703,+ 0.06391,+ 0.54688,+ 0.21,+ 0.54688,+ 0.21,+ 0.70219+ ],+ "t": [+ 1,+ 0,+ 21,+ 1,+ 21,+ 20,+ 20,+ 19,+ 18,+ 20,+ 18,+ 17,+ 17,+ 16,+ 15,+ 17,+ 15,+ 14,+ 17,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 13,+ 10,+ 9,+ 13,+ 9,+ 8,+ 13,+ 8,+ 7,+ 13,+ 7,+ 6,+ 13,+ 6,+ 5,+ 4,+ 3,+ 2,+ 4,+ 2,+ 1,+ 4,+ 1,+ 20,+ 4,+ 20,+ 17,+ 17,+ 13,+ 5,+ 17,+ 5,+ 4+ ]+ },+ "u": {+ "v": [+ 0.09516,+ 0.20703,+ 0.09516,+ 0.54594,+ 0.185,+ 0.54594,+ 0.185,+ 0.20703,+ 0.19152,+ 0.14305,+ 0.21109,+ 0.09859,+ 0.24445,+ 0.07258,+ 0.29203,+ 0.06391,+ 0.34801,+ 0.07508,+ 0.38906,+ 0.10859,+ 0.41438,+ 0.16301,+ 0.42281,+ 0.23688,+ 0.42281,+ 0.54594,+ 0.51313,+ 0.54594,+ 0.51313,+ 0.0,+ 0.42281,+ 0.0,+ 0.42281,+ 0.08203,+ 0.39457,+ 0.04039,+ 0.35766,+ 0.01016,+ 0.31293,+ -0.00813,+ 0.26125,+ -0.01422,+ 0.18793,+ -0.00047,+ 0.13609,+ 0.04078,+ 0.10539,+ 0.10984+ ],+ "t": [+ 1,+ 0,+ 23,+ 1,+ 23,+ 22,+ 1,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 3,+ 2,+ 1,+ 3,+ 1,+ 21,+ 16,+ 13,+ 10,+ 16,+ 10,+ 9,+ 16,+ 9,+ 8,+ 16,+ 8,+ 7,+ 4,+ 3,+ 21,+ 21,+ 16,+ 7,+ 21,+ 7,+ 6,+ 21,+ 6,+ 5,+ 21,+ 5,+ 4+ ]+ },+ "v": {+ "v": [+ 0.04891,+ 0.54688,+ 0.14203,+ 0.54688,+ 0.30078,+ 0.08797,+ 0.46,+ 0.54688,+ 0.55328,+ 0.54688,+ 0.35891,+ 0.0,+ 0.24313,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 6,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 2,+ 1,+ 6,+ 2,+ 6,+ 5+ ]+ },+ "w": {+ "v": [+ 0.0,+ 0.54688,+ 0.08891,+ 0.54688,+ 0.18406,+ 0.105,+ 0.26219,+ 0.38719,+ 0.33891,+ 0.38719,+ 0.41797,+ 0.105,+ 0.51313,+ 0.54688,+ 0.60203,+ 0.54688,+ 0.47406,+ 0.0,+ 0.38812,+ 0.0,+ 0.30078,+ 0.29984,+ 0.21391,+ 0.0,+ 0.12797,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 12,+ 12,+ 11,+ 10,+ 10,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 5,+ 4,+ 3,+ 2,+ 1,+ 12,+ 2,+ 12,+ 10,+ 10,+ 8,+ 5,+ 10,+ 5,+ 3,+ 10,+ 3,+ 2+ ]+ },+ "x": {+ "v": [+ 0.54594,+ 0.54688,+ 0.35016,+ 0.28516,+ 0.565,+ 0.0,+ 0.46094,+ 0.0,+ 0.30078,+ 0.21922,+ 0.14109,+ 0.0,+ 0.03719,+ 0.0,+ 0.25203,+ 0.28516,+ 0.05609,+ 0.54688,+ 0.15578,+ 0.54688,+ 0.30078,+ 0.34906,+ 0.44484,+ 0.54688+ ],+ "t": [+ 1,+ 0,+ 11,+ 1,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 10,+ 7,+ 6,+ 10,+ 6,+ 5,+ 10,+ 5,+ 4,+ 10,+ 4,+ 3,+ 10,+ 3,+ 2,+ 10,+ 2,+ 1+ ]+ },+ "y": {+ "v": [+ 0.41891,+ 0.17578,+ 0.39348,+ 0.10961,+ 0.36188,+ 0.02547,+ 0.32141,+ -0.0784,+ 0.29688,+ -0.13187,+ 0.27156,+ -0.1652,+ 0.24063,+ -0.18891,+ 0.20422,+ -0.2032,+ 0.16219,+ -0.20797,+ 0.08984,+ -0.20797,+ 0.08984,+ -0.13281,+ 0.14313,+ -0.13281,+ 0.17836,+ -0.12707,+ 0.205,+ -0.10984,+ 0.23055,+ -0.06871,+ 0.26219,+ 0.00875,+ 0.05078,+ 0.54688,+ 0.14594,+ 0.54688,+ 0.30812,+ 0.11922,+ 0.46781,+ 0.54688,+ 0.56297,+ 0.54688+ ],+ "t": [+ 0,+ 20,+ 19,+ 0,+ 19,+ 18,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 11,+ 6,+ 5,+ 11,+ 5,+ 4,+ 4,+ 3,+ 2,+ 4,+ 2,+ 1,+ 4,+ 1,+ 0,+ 4,+ 0,+ 18,+ 4,+ 18,+ 14,+ 4,+ 14,+ 13,+ 4,+ 13,+ 12,+ 4,+ 12,+ 11+ ]+ },+ "z": {+ "v": [+ 0.11078,+ 0.54781,+ 0.50781,+ 0.54781,+ 0.50781,+ 0.46578,+ 0.19391,+ 0.07328,+ 0.50781,+ 0.07328,+ 0.50781,+ 0.0,+ 0.09906,+ 0.0,+ 0.09906,+ 0.08297,+ 0.41313,+ 0.47609,+ 0.11078,+ 0.47609+ ],+ "t": [+ 1,+ 0,+ 9,+ 1,+ 9,+ 8,+ 1,+ 8,+ 7,+ 1,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1+ ]+ },+ "{": {+ "v": [+ 0.49422,+ -0.09281,+ 0.49422,+ -0.16312,+ 0.46297,+ -0.16312,+ 0.36137,+ -0.15406,+ 0.3,+ -0.12688,+ 0.26906,+ -0.07285,+ 0.25875,+ 0.01703,+ 0.25875,+ 0.13375,+ 0.25223,+ 0.19613,+ 0.23266,+ 0.23578,+ 0.19598,+ 0.25711,+ 0.13812,+ 0.26422,+ 0.10797,+ 0.26422,+ 0.10797,+ 0.33406,+ 0.13812,+ 0.33406,+ 0.19625,+ 0.34102,+ 0.23281,+ 0.36188,+ 0.25227,+ 0.40105,+ 0.25875,+ 0.46297,+ 0.25875,+ 0.58016,+ 0.26906,+ 0.67,+ 0.3,+ 0.72391,+ 0.36137,+ 0.75086,+ 0.46297,+ 0.75984,+ 0.49422,+ 0.75984,+ 0.49422,+ 0.69,+ 0.46,+ 0.69,+ 0.40348,+ 0.68469,+ 0.37078,+ 0.66875,+ 0.35531,+ 0.63547,+ 0.35016,+ 0.57812,+ 0.35016,+ 0.45703,+ 0.34457,+ 0.39082,+ 0.32781,+ 0.34563,+ 0.29777,+ 0.31668,+ 0.25203,+ 0.29891,+ 0.29809,+ 0.28027,+ 0.32812,+ 0.25094,+ 0.34465,+ 0.2059,+ 0.35016,+ 0.14016,+ 0.35016,+ 0.01906,+ 0.35531,+ -0.03855,+ 0.37078,+ -0.07172,+ 0.40348,+ -0.08754,+ 0.46,+ -0.09281+ ],+ "t": [+ 1,+ 0,+ 44,+ 1,+ 44,+ 43,+ 1,+ 43,+ 42,+ 40,+ 39,+ 38,+ 40,+ 38,+ 37,+ 40,+ 37,+ 36,+ 40,+ 36,+ 35,+ 35,+ 34,+ 33,+ 35,+ 33,+ 32,+ 35,+ 32,+ 31,+ 35,+ 31,+ 30,+ 35,+ 30,+ 29,+ 26,+ 25,+ 24,+ 26,+ 24,+ 23,+ 26,+ 23,+ 22,+ 26,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 14,+ 11,+ 10,+ 14,+ 10,+ 9,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 42,+ 3,+ 42,+ 41,+ 3,+ 41,+ 40,+ 3,+ 40,+ 35,+ 27,+ 26,+ 21,+ 15,+ 14,+ 9,+ 15,+ 9,+ 8,+ 8,+ 7,+ 3,+ 8,+ 3,+ 35,+ 28,+ 27,+ 21,+ 16,+ 15,+ 8,+ 16,+ 8,+ 35,+ 29,+ 28,+ 21,+ 29,+ 21,+ 17,+ 17,+ 16,+ 35,+ 17,+ 35,+ 29+ ]+ },+ "|": {+ "v": [+ 0.34281,+ 0.76422,+ 0.34281,+ -0.23578,+ 0.25875,+ -0.23578,+ 0.25875,+ 0.76422+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "}": {+ "v": [+ 0.10797,+ -0.09281,+ 0.14109,+ -0.09281,+ 0.19801,+ -0.08742,+ 0.23094,+ -0.07125,+ 0.24676,+ -0.03797,+ 0.25203,+ 0.01906,+ 0.25203,+ 0.14016,+ 0.2575,+ 0.2059,+ 0.27391,+ 0.25094,+ 0.30398,+ 0.28027,+ 0.35016,+ 0.29891,+ 0.3043,+ 0.31668,+ 0.27422,+ 0.34563,+ 0.25758,+ 0.39082,+ 0.25203,+ 0.45703,+ 0.25203,+ 0.57812,+ 0.24676,+ 0.63516,+ 0.23094,+ 0.66844,+ 0.19801,+ 0.68461,+ 0.14109,+ 0.69,+ 0.10797,+ 0.69,+ 0.10797,+ 0.75984,+ 0.13812,+ 0.75984,+ 0.23965,+ 0.75086,+ 0.30078,+ 0.72391,+ 0.3316,+ 0.67,+ 0.34187,+ 0.58016,+ 0.34187,+ 0.46297,+ 0.3484,+ 0.40105,+ 0.36797,+ 0.36188,+ 0.40477,+ 0.34102,+ 0.46297,+ 0.33406,+ 0.49422,+ 0.33406,+ 0.49422,+ 0.26422,+ 0.46297,+ 0.26422,+ 0.40477,+ 0.25711,+ 0.36797,+ 0.23578,+ 0.3484,+ 0.19613,+ 0.34187,+ 0.13375,+ 0.34187,+ 0.01703,+ 0.3316,+ -0.07285,+ 0.30078,+ -0.12688,+ 0.23965,+ -0.15406,+ 0.13812,+ -0.16312,+ 0.10797,+ -0.16312+ ],+ "t": [+ 1,+ 0,+ 44,+ 1,+ 44,+ 43,+ 1,+ 43,+ 42,+ 1,+ 42,+ 41,+ 41,+ 40,+ 39,+ 41,+ 39,+ 38,+ 41,+ 38,+ 37,+ 34,+ 33,+ 32,+ 34,+ 32,+ 31,+ 34,+ 31,+ 30,+ 34,+ 30,+ 29,+ 27,+ 26,+ 25,+ 27,+ 25,+ 24,+ 27,+ 24,+ 23,+ 23,+ 22,+ 21,+ 23,+ 21,+ 20,+ 23,+ 20,+ 19,+ 23,+ 19,+ 18,+ 23,+ 18,+ 17,+ 23,+ 17,+ 16,+ 23,+ 16,+ 15,+ 15,+ 14,+ 13,+ 15,+ 13,+ 12,+ 15,+ 12,+ 11,+ 15,+ 11,+ 10,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 10,+ 7,+ 6,+ 10,+ 6,+ 5,+ 10,+ 5,+ 4,+ 2,+ 1,+ 41,+ 35,+ 34,+ 29,+ 35,+ 29,+ 28,+ 28,+ 27,+ 23,+ 28,+ 23,+ 15,+ 28,+ 15,+ 10,+ 3,+ 2,+ 41,+ 36,+ 35,+ 28,+ 36,+ 28,+ 10,+ 4,+ 3,+ 41,+ 4,+ 41,+ 37,+ 37,+ 36,+ 10,+ 37,+ 10,+ 4+ ]+ },+ "~": {+ "v": [+ 0.55906,+ 0.38094,+ 0.55906,+ 0.29594,+ 0.52289,+ 0.2709,+ 0.4875,+ 0.25359,+ 0.45172,+ 0.24363,+ 0.41406,+ 0.24031,+ 0.36734,+ 0.24652,+ 0.315,+ 0.26516,+ 0.30559,+ 0.2693,+ 0.29891,+ 0.27203,+ 0.26437,+ 0.28555,+ 0.23609,+ 0.29391,+ 0.21102,+ 0.29836,+ 0.18609,+ 0.29984,+ 0.14852,+ 0.29621,+ 0.11297,+ 0.28531,+ 0.07828,+ 0.26687,+ 0.04297,+ 0.24031,+ 0.04297,+ 0.32516,+ 0.08047,+ 0.35047,+ 0.11672,+ 0.36766,+ 0.15355,+ 0.37762,+ 0.19281,+ 0.38094,+ 0.21836,+ 0.37957,+ 0.24313,+ 0.37547,+ 0.27055,+ 0.3677,+ 0.30375,+ 0.355,+ 0.31066,+ 0.35191,+ 0.31984,+ 0.34766,+ 0.37363,+ 0.3275,+ 0.42188,+ 0.32078,+ 0.4559,+ 0.32449,+ 0.48953,+ 0.33563,+ 0.52363,+ 0.35445+ ],+ "t": [+ 1,+ 0,+ 33,+ 1,+ 33,+ 32,+ 1,+ 32,+ 31,+ 1,+ 31,+ 30,+ 1,+ 30,+ 29,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 28,+ 24,+ 23,+ 28,+ 23,+ 22,+ 28,+ 22,+ 21,+ 28,+ 21,+ 20,+ 28,+ 20,+ 19,+ 28,+ 19,+ 18,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 18,+ 14,+ 13,+ 18,+ 13,+ 12,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 8,+ 4,+ 3,+ 8,+ 3,+ 2,+ 8,+ 2,+ 1,+ 8,+ 1,+ 29,+ 8,+ 29,+ 28,+ 28,+ 18,+ 12,+ 28,+ 12,+ 11,+ 28,+ 11,+ 10,+ 28,+ 10,+ 9,+ 28,+ 9,+ 8+ ]+ },+ "±": {+ "v": [+ 0.04297,+ 0.08297,+ 0.55906,+ 0.08297,+ 0.55906,+ 0.0,+ 0.04297,+ 0.0,+ 0.34187,+ 0.57172,+ 0.34187,+ 0.41109,+ 0.55906,+ 0.41109,+ 0.55906,+ 0.32812,+ 0.34187,+ 0.32812,+ 0.34187,+ 0.16609,+ 0.25984,+ 0.16609,+ 0.25984,+ 0.32812,+ 0.04297,+ 0.32812,+ 0.04297,+ 0.41109,+ 0.25984,+ 0.41109,+ 0.25984,+ 0.57172+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2,+ 5,+ 4,+ 15,+ 5,+ 15,+ 14,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 14,+ 8,+ 14,+ 11+ ]+ },+ "µ": {+ "v": [+ 0.09516,+ -0.20906,+ 0.09516,+ 0.54688,+ 0.185,+ 0.54688,+ 0.185,+ 0.20703,+ 0.1923,+ 0.14578,+ 0.21422,+ 0.10078,+ 0.2498,+ 0.07312,+ 0.29781,+ 0.06391,+ 0.35219,+ 0.0743,+ 0.39125,+ 0.10547,+ 0.41492,+ 0.15687,+ 0.42281,+ 0.22797,+ 0.42281,+ 0.54688,+ 0.51313,+ 0.54688,+ 0.51313,+ 0.125,+ 0.51508,+ 0.1,+ 0.52094,+ 0.0825,+ 0.53086,+ 0.0723,+ 0.545,+ 0.06891,+ 0.55004,+ 0.06949,+ 0.55641,+ 0.07125,+ 0.56512,+ 0.07473,+ 0.57719,+ 0.08016,+ 0.57719,+ 0.00781,+ 0.5591,+ -0.00195,+ 0.54203,+ -0.00875,+ 0.52543,+ -0.01285,+ 0.50875,+ -0.01422,+ 0.48152,+ -0.00941,+ 0.46016,+ 0.005,+ 0.445,+ 0.02918,+ 0.43609,+ 0.06297,+ 0.41109,+ 0.02891,+ 0.38109,+ 0.00484,+ 0.34586,+ -0.00945,+ 0.30516,+ -0.01422,+ 0.26375,+ -0.00957,+ 0.22922,+ 0.00438,+ 0.20062,+ 0.02809,+ 0.17672,+ 0.06203,+ 0.17672,+ -0.20906+ ],+ "t": [+ 1,+ 0,+ 40,+ 1,+ 40,+ 39,+ 1,+ 39,+ 38,+ 38,+ 37,+ 36,+ 38,+ 36,+ 35,+ 38,+ 35,+ 34,+ 38,+ 34,+ 33,+ 38,+ 33,+ 32,+ 38,+ 32,+ 31,+ 31,+ 30,+ 29,+ 31,+ 29,+ 28,+ 31,+ 28,+ 27,+ 31,+ 27,+ 26,+ 31,+ 26,+ 25,+ 31,+ 25,+ 24,+ 31,+ 24,+ 23,+ 23,+ 22,+ 21,+ 23,+ 21,+ 20,+ 23,+ 20,+ 19,+ 23,+ 19,+ 18,+ 23,+ 18,+ 17,+ 23,+ 17,+ 16,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 14,+ 11,+ 10,+ 14,+ 10,+ 9,+ 14,+ 9,+ 8,+ 3,+ 2,+ 1,+ 3,+ 1,+ 38,+ 31,+ 23,+ 16,+ 31,+ 16,+ 15,+ 31,+ 15,+ 14,+ 31,+ 14,+ 8,+ 31,+ 8,+ 7,+ 4,+ 3,+ 38,+ 38,+ 31,+ 7,+ 38,+ 7,+ 6,+ 38,+ 6,+ 5,+ 38,+ 5,+ 4+ ]+ },+ "Ω": {+ "v": [+ 0.03609,+ 0.0,+ 0.03609,+ 0.08406,+ 0.15578,+ 0.08406,+ 0.10406,+ 0.15063,+ 0.06891,+ 0.21969,+ 0.04875,+ 0.29539,+ 0.04203,+ 0.38188,+ 0.05961,+ 0.51816,+ 0.11234,+ 0.62328,+ 0.19438,+ 0.69055,+ 0.29984,+ 0.71297,+ 0.40605,+ 0.69063,+ 0.48844,+ 0.62359,+ 0.54141,+ 0.51848,+ 0.55906,+ 0.38188,+ 0.55227,+ 0.29531,+ 0.53187,+ 0.21938,+ 0.4966,+ 0.15031,+ 0.44484,+ 0.08406,+ 0.56594,+ 0.08406,+ 0.56594,+ 0.0,+ 0.33984,+ 0.0,+ 0.33984,+ 0.08406,+ 0.39195,+ 0.13191,+ 0.43109,+ 0.20141,+ 0.4557,+ 0.28875,+ 0.46391,+ 0.39016,+ 0.45289,+ 0.49059,+ 0.41984,+ 0.56719,+ 0.36813,+ 0.6157,+ 0.30078,+ 0.63187,+ 0.23348,+ 0.6157,+ 0.18188,+ 0.56719,+ 0.14906,+ 0.49059,+ 0.13812,+ 0.39016,+ 0.14629,+ 0.28875,+ 0.17078,+ 0.20141,+ 0.21004,+ 0.13191,+ 0.26219,+ 0.08406,+ 0.26219,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 39,+ 39,+ 38,+ 37,+ 39,+ 37,+ 36,+ 23,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 21,+ 16,+ 15,+ 21,+ 15,+ 14,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 8,+ 4,+ 3,+ 8,+ 3,+ 2,+ 2,+ 1,+ 39,+ 2,+ 39,+ 36,+ 2,+ 36,+ 35,+ 2,+ 35,+ 34,+ 24,+ 23,+ 21,+ 24,+ 21,+ 14,+ 8,+ 2,+ 34,+ 8,+ 34,+ 33,+ 8,+ 33,+ 32,+ 8,+ 32,+ 31,+ 8,+ 31,+ 30,+ 25,+ 24,+ 14,+ 11,+ 8,+ 30,+ 11,+ 30,+ 29,+ 11,+ 29,+ 28,+ 11,+ 28,+ 27,+ 26,+ 25,+ 14,+ 14,+ 11,+ 27,+ 14,+ 27,+ 26+ ]+ },+ "°": {+ "v": [+ 0.30078,+ 0.74219,+ 0.33172,+ 0.73918,+ 0.36109,+ 0.73016,+ 0.38789,+ 0.71562,+ 0.41109,+ 0.69578,+ 0.43047,+ 0.67238,+ 0.44453,+ 0.64594,+ 0.4532,+ 0.61703,+ 0.45609,+ 0.58594,+ 0.44473,+ 0.52648,+ 0.41063,+ 0.47687,+ 0.36027,+ 0.44336,+ 0.29984,+ 0.43219,+ 0.23938,+ 0.44316,+ 0.18984,+ 0.47609,+ 0.15691,+ 0.52551,+ 0.14594,+ 0.58594,+ 0.15715,+ 0.64637,+ 0.19078,+ 0.69672,+ 0.24078,+ 0.73082,+ 0.30078,+ 0.67922,+ 0.26504,+ 0.67242,+ 0.235,+ 0.65203,+ 0.21473,+ 0.62199,+ 0.20797,+ 0.58594,+ 0.21461,+ 0.55004,+ 0.23453,+ 0.52047,+ 0.26422,+ 0.50078,+ 0.29984,+ 0.49422,+ 0.33602,+ 0.5009,+ 0.36641,+ 0.52094,+ 0.38715,+ 0.55063,+ 0.39406,+ 0.58594,+ 0.38723,+ 0.62172,+ 0.36672,+ 0.65187,+ 0.33656,+ 0.67238+ ],+ "t": [+ 16,+ 24,+ 23,+ 16,+ 23,+ 22,+ 25,+ 24,+ 16,+ 25,+ 16,+ 15,+ 25,+ 15,+ 14,+ 25,+ 14,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 13,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 9,+ 5,+ 4,+ 9,+ 4,+ 3,+ 9,+ 3,+ 2,+ 9,+ 2,+ 1,+ 1,+ 0,+ 19,+ 1,+ 19,+ 18,+ 1,+ 18,+ 17,+ 1,+ 17,+ 16,+ 1,+ 16,+ 22,+ 1,+ 22,+ 21,+ 1,+ 21,+ 20,+ 1,+ 20,+ 35,+ 1,+ 35,+ 34,+ 1,+ 34,+ 33,+ 26,+ 25,+ 13,+ 9,+ 1,+ 33,+ 9,+ 33,+ 32,+ 9,+ 32,+ 31,+ 9,+ 31,+ 30,+ 9,+ 30,+ 29,+ 27,+ 26,+ 13,+ 13,+ 9,+ 29,+ 13,+ 29,+ 28,+ 13,+ 28,+ 27+ ]+ },+ "–": {+ "v": [+ 0.0,+ 0.30906,+ 0.60203,+ 0.30906,+ 0.60203,+ 0.24031,+ 0.0,+ 0.24031+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "—": {+ "v": [+ 0.0,+ 0.30906,+ 0.60203,+ 0.30906,+ 0.60203,+ 0.24031,+ 0.0,+ 0.24031+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "×": {+ "v": [+ 0.07328,+ 0.14313,+ 0.24422,+ 0.31297,+ 0.07328,+ 0.48391,+ 0.12984,+ 0.54109,+ 0.30078,+ 0.37016,+ 0.47219,+ 0.54109,+ 0.52875,+ 0.48391,+ 0.35797,+ 0.31297,+ 0.52781,+ 0.14313,+ 0.47125,+ 0.085,+ 0.30078,+ 0.25594,+ 0.13094,+ 0.085+ ],+ "t": [+ 1,+ 0,+ 11,+ 1,+ 11,+ 10,+ 1,+ 10,+ 9,+ 1,+ 9,+ 8,+ 1,+ 8,+ 7,+ 1,+ 7,+ 6,+ 1,+ 6,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "·": {+ "v": [+ 0.23875,+ 0.42188,+ 0.36188,+ 0.42188,+ 0.36188,+ 0.27297,+ 0.23875,+ 0.27297+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "′": {+ "v": [+ 0.20906,+ 0.54688,+ 0.29391,+ 0.72906,+ 0.39266,+ 0.72906,+ 0.25203,+ 0.54688+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "″": {+ "v": [+ 0.28234,+ 0.54688,+ 0.36719,+ 0.72906,+ 0.46594,+ 0.72906,+ 0.32531,+ 0.54688,+ 0.13578,+ 0.54688,+ 0.22063,+ 0.72906,+ 0.31938,+ 0.72906,+ 0.17875,+ 0.54688+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2,+ 5,+ 4,+ 7,+ 5,+ 7,+ 6+ ]+ },+ "≤": {+ "v": [+ 0.55906,+ 0.21391,+ 0.55906,+ 0.125,+ 0.04297,+ 0.28719,+ 0.04297,+ 0.36922,+ 0.55906,+ 0.53078,+ 0.55906,+ 0.44094,+ 0.16797,+ 0.32812,+ 0.55906,+ 0.08297,+ 0.55906,+ 0.0,+ 0.04297,+ 0.0,+ 0.04297,+ 0.08297+ ],+ "t": [+ 1,+ 0,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1,+ 8,+ 7,+ 10,+ 8,+ 10,+ 9+ ]+ },+ "≥": {+ "v": [+ 0.04297,+ 0.21391,+ 0.435,+ 0.32812,+ 0.04297,+ 0.44094,+ 0.04297,+ 0.53078,+ 0.55906,+ 0.36922,+ 0.55906,+ 0.28719,+ 0.04297,+ 0.125,+ 0.04297,+ 0.08297,+ 0.55906,+ 0.08297,+ 0.55906,+ 0.0,+ 0.04297,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 6,+ 1,+ 6,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2,+ 8,+ 7,+ 10,+ 8,+ 10,+ 9+ ]+ },+ "≈": {+ "v": [+ 0.55906,+ 0.47016,+ 0.55906,+ 0.38484,+ 0.52289,+ 0.3598,+ 0.4875,+ 0.3425,+ 0.45172,+ 0.33242,+ 0.41406,+ 0.32906,+ 0.36734,+ 0.33531,+ 0.315,+ 0.35406,+ 0.30559,+ 0.35816,+ 0.29891,+ 0.36078,+ 0.26437,+ 0.37477,+ 0.23609,+ 0.38328,+ 0.21102,+ 0.38773,+ 0.18609,+ 0.38922,+ 0.14852,+ 0.38559,+ 0.11297,+ 0.37469,+ 0.07828,+ 0.35609,+ 0.04297,+ 0.32906,+ 0.04297,+ 0.41406,+ 0.08047,+ 0.43941,+ 0.11672,+ 0.45672,+ 0.15355,+ 0.4668,+ 0.19281,+ 0.47016,+ 0.21836,+ 0.46883,+ 0.24313,+ 0.46484,+ 0.27066,+ 0.45695,+ 0.30422,+ 0.44391,+ 0.31055,+ 0.44105,+ 0.31984,+ 0.43656,+ 0.37363,+ 0.41676,+ 0.42188,+ 0.41016,+ 0.4559,+ 0.41383,+ 0.48953,+ 0.42484,+ 0.52363,+ 0.44352,+ 0.55906,+ 0.29109,+ 0.55906,+ 0.20516,+ 0.52289,+ 0.18004,+ 0.4875,+ 0.1625,+ 0.45172,+ 0.1523,+ 0.41406,+ 0.14891,+ 0.36734,+ 0.15516,+ 0.315,+ 0.17391,+ 0.30559,+ 0.17813,+ 0.29891,+ 0.18109,+ 0.26238,+ 0.19574,+ 0.23406,+ 0.20438,+ 0.21004,+ 0.20859,+ 0.18609,+ 0.21,+ 0.14887,+ 0.20633,+ 0.11344,+ 0.19531,+ 0.07863,+ 0.17637,+ 0.04297,+ 0.14891,+ 0.04297,+ 0.23391,+ 0.08082,+ 0.26,+ 0.11719,+ 0.27766,+ 0.15391,+ 0.28773,+ 0.19281,+ 0.29109,+ 0.24387,+ 0.28437,+ 0.30328,+ 0.26422,+ 0.30375,+ 0.26422,+ 0.31043,+ 0.26113,+ 0.31984,+ 0.25688,+ 0.37363,+ 0.23672,+ 0.42188,+ 0.23,+ 0.45523,+ 0.23371,+ 0.48875,+ 0.24484,+ 0.5232,+ 0.26391+ ],+ "t": [+ 1,+ 0,+ 33,+ 1,+ 33,+ 32,+ 1,+ 32,+ 31,+ 1,+ 31,+ 30,+ 1,+ 30,+ 29,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 28,+ 24,+ 23,+ 28,+ 23,+ 22,+ 28,+ 22,+ 21,+ 28,+ 21,+ 20,+ 28,+ 20,+ 19,+ 28,+ 19,+ 18,+ 18,+ 17,+ 16,+ 18,+ 16,+ 15,+ 18,+ 15,+ 14,+ 18,+ 14,+ 13,+ 18,+ 13,+ 12,+ 10,+ 9,+ 8,+ 8,+ 7,+ 6,+ 8,+ 6,+ 5,+ 8,+ 5,+ 4,+ 8,+ 4,+ 3,+ 8,+ 3,+ 2,+ 8,+ 2,+ 1,+ 8,+ 1,+ 29,+ 8,+ 29,+ 28,+ 28,+ 18,+ 12,+ 28,+ 12,+ 11,+ 28,+ 11,+ 10,+ 28,+ 10,+ 8,+ 35,+ 34,+ 66,+ 35,+ 66,+ 65,+ 35,+ 65,+ 64,+ 35,+ 64,+ 63,+ 35,+ 63,+ 62,+ 60,+ 59,+ 58,+ 60,+ 58,+ 57,+ 60,+ 57,+ 56,+ 60,+ 56,+ 55,+ 60,+ 55,+ 54,+ 60,+ 54,+ 53,+ 60,+ 53,+ 52,+ 52,+ 51,+ 50,+ 52,+ 50,+ 49,+ 52,+ 49,+ 48,+ 52,+ 48,+ 47,+ 52,+ 47,+ 46,+ 42,+ 41,+ 40,+ 42,+ 40,+ 39,+ 42,+ 39,+ 38,+ 42,+ 38,+ 37,+ 42,+ 37,+ 36,+ 42,+ 36,+ 35,+ 42,+ 35,+ 62,+ 42,+ 62,+ 61,+ 42,+ 61,+ 60,+ 60,+ 52,+ 46,+ 60,+ 46,+ 45,+ 60,+ 45,+ 44,+ 60,+ 44,+ 43,+ 60,+ 43,+ 42+ ]+ },+ "÷": {+ "v": [+ 0.24125,+ 0.19281,+ 0.36078,+ 0.19281,+ 0.36078,+ 0.07328,+ 0.24125,+ 0.07328,+ 0.24125,+ 0.55422,+ 0.36078,+ 0.55422,+ 0.36078,+ 0.43406,+ 0.24125,+ 0.43406,+ 0.04297,+ 0.355,+ 0.55906,+ 0.355,+ 0.55906,+ 0.27203,+ 0.04297,+ 0.27203+ ],+ "t": [+ 1,+ 0,+ 3,+ 1,+ 3,+ 2,+ 5,+ 4,+ 7,+ 5,+ 7,+ 6,+ 9,+ 8,+ 11,+ 9,+ 11,+ 10+ ]+ },+ "√": {+ "v": [+ 0.04891,+ 0.35797,+ 0.02875,+ 0.41891,+ 0.17094,+ 0.46687,+ 0.27781,+ 0.10984,+ 0.50594,+ 0.82812,+ 0.57812,+ 0.82812,+ 0.57812,+ 0.76422,+ 0.55516,+ 0.76422,+ 0.30812,+ -0.01906,+ 0.24609,+ -0.01906,+ 0.12594,+ 0.38375+ ],+ "t": [+ 1,+ 0,+ 10,+ 10,+ 9,+ 8,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 2,+ 1,+ 10,+ 2,+ 10,+ 8,+ 8,+ 7,+ 3,+ 8,+ 3,+ 2+ ]+ },+ "∞": {+ "v": [+ 0.30078,+ 0.37312,+ 0.32695,+ 0.42363,+ 0.35953,+ 0.46109,+ 0.39762,+ 0.48441,+ 0.44,+ 0.49219,+ 0.49406,+ 0.47883,+ 0.54,+ 0.43875,+ 0.57152,+ 0.37914,+ 0.58203,+ 0.30719,+ 0.57207,+ 0.23305,+ 0.54219,+ 0.17375,+ 0.49703,+ 0.13496,+ 0.44094,+ 0.12203,+ 0.40277,+ 0.12812,+ 0.36922,+ 0.14641,+ 0.33625,+ 0.18078,+ 0.29984,+ 0.23484,+ 0.26797,+ 0.18293,+ 0.23578,+ 0.14813,+ 0.20129,+ 0.12855,+ 0.16219,+ 0.12203,+ 0.10621,+ 0.13508,+ 0.06047,+ 0.17422,+ 0.03012,+ 0.23363,+ 0.02,+ 0.30719,+ 0.02957,+ 0.38305,+ 0.05828,+ 0.44188,+ 0.1032,+ 0.47961,+ 0.16109,+ 0.49219,+ 0.20383,+ 0.48516,+ 0.24016,+ 0.46406,+ 0.27195,+ 0.42734,+ 0.33891,+ 0.30609,+ 0.36531,+ 0.2502,+ 0.38891,+ 0.21531,+ 0.41301,+ 0.19703,+ 0.44094,+ 0.19094,+ 0.4725,+ 0.1991,+ 0.49781,+ 0.22359,+ 0.51445,+ 0.26137,+ 0.52,+ 0.30906,+ 0.51488,+ 0.35613,+ 0.49953,+ 0.39266,+ 0.47562,+ 0.41609,+ 0.44484,+ 0.42391,+ 0.4143,+ 0.41676,+ 0.38703,+ 0.39531,+ 0.36219,+ 0.35871,+ 0.26219,+ 0.31,+ 0.23605,+ 0.36516,+ 0.21234,+ 0.39969,+ 0.18812,+ 0.41785,+ 0.16016,+ 0.42391,+ 0.12859,+ 0.41578,+ 0.10328,+ 0.39141,+ 0.08664,+ 0.3541,+ 0.08109,+ 0.30719,+ 0.08613,+ 0.25934,+ 0.10125,+ 0.22234,+ 0.1248,+ 0.19879,+ 0.15484,+ 0.19094,+ 0.18578,+ 0.19812,+ 0.21328,+ 0.21969,+ 0.23848,+ 0.25672+ ],+ "t": [+ 63,+ 32,+ 47,+ 63,+ 47,+ 46,+ 33,+ 32,+ 63,+ 33,+ 63,+ 62,+ 57,+ 56,+ 24,+ 57,+ 24,+ 23,+ 57,+ 23,+ 22,+ 57,+ 22,+ 21,+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 16,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1,+ 0,+ 31,+ 30,+ 0,+ 30,+ 29,+ 0,+ 29,+ 28,+ 0,+ 28,+ 27,+ 27,+ 26,+ 25,+ 27,+ 25,+ 24,+ 24,+ 56,+ 55,+ 24,+ 55,+ 54,+ 48,+ 63,+ 46,+ 48,+ 46,+ 45,+ 58,+ 57,+ 21,+ 27,+ 24,+ 54,+ 27,+ 54,+ 53,+ 27,+ 53,+ 52,+ 27,+ 52,+ 51,+ 59,+ 58,+ 21,+ 0,+ 27,+ 51,+ 0,+ 51,+ 50,+ 0,+ 50,+ 49,+ 0,+ 49,+ 48,+ 0,+ 48,+ 45,+ 60,+ 59,+ 21,+ 1,+ 0,+ 45,+ 1,+ 45,+ 44,+ 61,+ 60,+ 21,+ 61,+ 21,+ 16,+ 6,+ 1,+ 44,+ 6,+ 44,+ 43,+ 6,+ 43,+ 42,+ 6,+ 42,+ 41,+ 6,+ 41,+ 40,+ 6,+ 40,+ 39,+ 62,+ 61,+ 16,+ 11,+ 6,+ 39,+ 11,+ 39,+ 38,+ 11,+ 38,+ 37,+ 11,+ 37,+ 36,+ 11,+ 36,+ 35,+ 33,+ 62,+ 16,+ 16,+ 11,+ 35,+ 16,+ 35,+ 34,+ 16,+ 34,+ 33+ ]+ },+ "Δ": {+ "v": [+ 0.58406,+ 0.0,+ 0.01812,+ 0.0,+ 0.24125,+ 0.72906,+ 0.36078,+ 0.72906,+ 0.45797,+ 0.08297,+ 0.30078,+ 0.64203,+ 0.14359,+ 0.08297+ ],+ "t": [+ 1,+ 6,+ 5,+ 4,+ 6,+ 1,+ 4,+ 1,+ 0,+ 4,+ 0,+ 3,+ 2,+ 1,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2+ ]+ },+ "α": {+ "v": [+ 0.24422,+ 0.55906,+ 0.36488,+ 0.52148,+ 0.42438,+ 0.40375,+ 0.47266,+ 0.54688,+ 0.55281,+ 0.54688,+ 0.45266,+ 0.25047,+ 0.47219,+ 0.14359,+ 0.47973,+ 0.12066,+ 0.49359,+ 0.09969,+ 0.51262,+ 0.08211,+ 0.52938,+ 0.07625,+ 0.57234,+ 0.07625,+ 0.57234,+ 0.0,+ 0.51859,+ 0.0,+ 0.47391,+ 0.01027,+ 0.43172,+ 0.04109,+ 0.41453,+ 0.06719,+ 0.40328,+ 0.10453,+ 0.37527,+ 0.05371,+ 0.33594,+ 0.00781,+ 0.30199,+ -0.00742,+ 0.24422,+ -0.01219,+ 0.15777,+ 0.00684,+ 0.09187,+ 0.06203,+ 0.04863,+ 0.15281,+ 0.03422,+ 0.27297,+ 0.04961,+ 0.3982,+ 0.09578,+ 0.48391,+ 0.16773,+ 0.53957,+ 0.37406,+ 0.25438,+ 0.3525,+ 0.36719,+ 0.31449,+ 0.45379,+ 0.24422,+ 0.48297,+ 0.20082,+ 0.46977,+ 0.16656,+ 0.42922,+ 0.13832,+ 0.35672,+ 0.12891,+ 0.27297,+ 0.13793,+ 0.17953,+ 0.165,+ 0.11422,+ 0.20363,+ 0.07508,+ 0.24422,+ 0.06203,+ 0.30164,+ 0.08805,+ 0.34422,+ 0.16609+ ],+ "t": [+ 25,+ 36,+ 35,+ 25,+ 35,+ 34,+ 25,+ 34,+ 33,+ 37,+ 36,+ 25,+ 37,+ 25,+ 24,+ 37,+ 24,+ 23,+ 37,+ 23,+ 22,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 22,+ 18,+ 17,+ 17,+ 16,+ 15,+ 17,+ 15,+ 14,+ 17,+ 14,+ 13,+ 17,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 9,+ 12,+ 9,+ 8,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 0,+ 0,+ 28,+ 27,+ 0,+ 27,+ 26,+ 0,+ 26,+ 25,+ 0,+ 25,+ 33,+ 0,+ 33,+ 32,+ 0,+ 32,+ 31,+ 38,+ 37,+ 22,+ 17,+ 12,+ 8,+ 17,+ 8,+ 7,+ 17,+ 7,+ 6,+ 17,+ 6,+ 5,+ 5,+ 0,+ 31,+ 5,+ 31,+ 30,+ 5,+ 30,+ 29,+ 5,+ 29,+ 42,+ 5,+ 42,+ 41,+ 39,+ 38,+ 22,+ 17,+ 5,+ 41,+ 17,+ 41,+ 40,+ 40,+ 39,+ 22,+ 40,+ 22,+ 17+ ]+ },+ "β": {+ "v": [+ 0.16453,+ 0.03375,+ 0.16453,+ -0.20797,+ 0.07422,+ -0.20797,+ 0.07422,+ 0.54344,+ 0.13051,+ 0.71801,+ 0.29938,+ 0.76609,+ 0.44551,+ 0.71254,+ 0.49422,+ 0.57812,+ 0.47289,+ 0.46512,+ 0.41016,+ 0.39547,+ 0.51223,+ 0.33879,+ 0.54688,+ 0.22125,+ 0.48906,+ 0.0532,+ 0.31156,+ -0.01031,+ 0.24309,+ -0.0007,+ 0.16453,+ 0.16703,+ 0.22191,+ 0.11281,+ 0.315,+ 0.08797,+ 0.42047,+ 0.11473,+ 0.45563,+ 0.21969,+ 0.39898,+ 0.32035,+ 0.22906,+ 0.34672,+ 0.22906,+ 0.42969,+ 0.36195,+ 0.46457,+ 0.40625,+ 0.57516,+ 0.3777,+ 0.64602,+ 0.29203,+ 0.67391,+ 0.19641,+ 0.64414,+ 0.16453,+ 0.54047+ ],+ "t": [+ 2,+ 15,+ 28,+ 23,+ 22,+ 21,+ 23,+ 21,+ 20,+ 23,+ 20,+ 19,+ 2,+ 1,+ 0,+ 0,+ 14,+ 13,+ 0,+ 13,+ 12,+ 12,+ 11,+ 10,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 6,+ 5,+ 4,+ 4,+ 3,+ 2,+ 4,+ 2,+ 28,+ 4,+ 28,+ 27,+ 4,+ 27,+ 26,+ 15,+ 2,+ 0,+ 6,+ 4,+ 26,+ 6,+ 26,+ 25,+ 6,+ 25,+ 24,+ 16,+ 15,+ 0,+ 9,+ 6,+ 24,+ 9,+ 24,+ 23,+ 9,+ 23,+ 19,+ 17,+ 16,+ 0,+ 17,+ 0,+ 12,+ 10,+ 9,+ 19,+ 10,+ 19,+ 18,+ 18,+ 17,+ 12,+ 18,+ 12,+ 10+ ]+ },+ "γ": {+ "v": [+ 0.1075,+ 0.40828,+ 0.07949,+ 0.45434,+ 0.03953,+ 0.46969,+ 0.01562,+ 0.46969,+ 0.01562,+ 0.54688,+ 0.04984,+ 0.54688,+ 0.12879,+ 0.52539,+ 0.17625,+ 0.46094,+ 0.30078,+ 0.12641,+ 0.46,+ 0.54688,+ 0.55328,+ 0.54688,+ 0.34766,+ 0.0,+ 0.34766,+ -0.20797,+ 0.25484,+ -0.20797,+ 0.25484,+ 0.0+ ],+ "t": [+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 14,+ 11,+ 10,+ 14,+ 10,+ 9,+ 14,+ 9,+ 8,+ 14,+ 8,+ 7,+ 14,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1,+ 6,+ 1,+ 0,+ 6,+ 0,+ 14+ ]+ },+ "δ": {+ "v": [+ 0.16312,+ 0.52094,+ 0.15121,+ 0.52922,+ 0.13422,+ 0.545,+ 0.1116,+ 0.57852,+ 0.10406,+ 0.61969,+ 0.11852,+ 0.67949,+ 0.16187,+ 0.72609,+ 0.2293,+ 0.75609,+ 0.31594,+ 0.76609,+ 0.35941,+ 0.76465,+ 0.39016,+ 0.76031,+ 0.46391,+ 0.74266,+ 0.46391,+ 0.65828,+ 0.43121,+ 0.66887,+ 0.3975,+ 0.67719,+ 0.35633,+ 0.68324,+ 0.31594,+ 0.68453,+ 0.30031,+ 0.68406,+ 0.26625,+ 0.67812,+ 0.23531,+ 0.66219,+ 0.21625,+ 0.64844,+ 0.20641,+ 0.63402,+ 0.20312,+ 0.61422,+ 0.20473,+ 0.59984,+ 0.20953,+ 0.58891,+ 0.22074,+ 0.57754,+ 0.23781,+ 0.56688,+ 0.25941,+ 0.56203,+ 0.30078,+ 0.56,+ 0.4016,+ 0.5409,+ 0.47469,+ 0.48641,+ 0.52004,+ 0.39617,+ 0.53516,+ 0.27297,+ 0.52012,+ 0.14945,+ 0.475,+ 0.05922,+ 0.40145,+ 0.00414,+ 0.30078,+ -0.01422,+ 0.20043,+ 0.00414,+ 0.12688,+ 0.05922,+ 0.08188,+ 0.14945,+ 0.06688,+ 0.27297,+ 0.08191,+ 0.39617,+ 0.12703,+ 0.48641,+ 0.14355,+ 0.50426,+ 0.30078,+ 0.48391,+ 0.24078,+ 0.47059,+ 0.19734,+ 0.43063,+ 0.17098,+ 0.36465,+ 0.16219,+ 0.27297,+ 0.17098,+ 0.18156,+ 0.19734,+ 0.11547,+ 0.24078,+ 0.07539,+ 0.30078,+ 0.06203,+ 0.36125,+ 0.07539,+ 0.40484,+ 0.11547,+ 0.43121,+ 0.18156,+ 0.44,+ 0.27297,+ 0.43121,+ 0.36465,+ 0.40484,+ 0.43063,+ 0.36125,+ 0.47059+ ],+ "t": [+ 40,+ 48,+ 47,+ 40,+ 47,+ 46,+ 49,+ 48,+ 40,+ 49,+ 40,+ 39,+ 49,+ 39,+ 38,+ 49,+ 38,+ 37,+ 37,+ 36,+ 35,+ 37,+ 35,+ 34,+ 34,+ 33,+ 32,+ 34,+ 32,+ 31,+ 34,+ 31,+ 30,+ 30,+ 29,+ 28,+ 30,+ 28,+ 27,+ 30,+ 27,+ 26,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 13,+ 10,+ 9,+ 13,+ 9,+ 8,+ 13,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 7,+ 3,+ 2,+ 7,+ 2,+ 1,+ 7,+ 1,+ 0,+ 0,+ 43,+ 42,+ 0,+ 42,+ 41,+ 0,+ 41,+ 40,+ 0,+ 40,+ 46,+ 0,+ 46,+ 45,+ 0,+ 45,+ 44,+ 0,+ 44,+ 59,+ 50,+ 49,+ 37,+ 14,+ 13,+ 7,+ 51,+ 50,+ 37,+ 15,+ 14,+ 7,+ 52,+ 51,+ 37,+ 52,+ 37,+ 34,+ 16,+ 15,+ 7,+ 53,+ 52,+ 34,+ 17,+ 16,+ 7,+ 54,+ 53,+ 34,+ 18,+ 17,+ 7,+ 55,+ 54,+ 34,+ 55,+ 34,+ 30,+ 19,+ 18,+ 7,+ 56,+ 55,+ 30,+ 20,+ 19,+ 7,+ 57,+ 56,+ 30,+ 21,+ 20,+ 7,+ 21,+ 7,+ 0,+ 58,+ 57,+ 30,+ 22,+ 21,+ 0,+ 59,+ 58,+ 30,+ 59,+ 30,+ 26,+ 59,+ 26,+ 25,+ 23,+ 22,+ 0,+ 0,+ 59,+ 25,+ 0,+ 25,+ 24,+ 0,+ 24,+ 23+ ]+ },+ "ε": {+ "v": [+ 0.21922,+ 0.29641,+ 0.1677,+ 0.31348,+ 0.12937,+ 0.34031,+ 0.10594,+ 0.37523,+ 0.09813,+ 0.4175,+ 0.11301,+ 0.47621,+ 0.15766,+ 0.52141,+ 0.22793,+ 0.55035,+ 0.31938,+ 0.56,+ 0.36012,+ 0.55855,+ 0.40328,+ 0.55422,+ 0.44984,+ 0.54684,+ 0.49953,+ 0.53656,+ 0.49953,+ 0.45516,+ 0.45082,+ 0.4666,+ 0.40625,+ 0.47469,+ 0.36547,+ 0.47902,+ 0.32719,+ 0.48047,+ 0.26762,+ 0.4752,+ 0.22359,+ 0.45938,+ 0.19652,+ 0.43465,+ 0.1875,+ 0.40234,+ 0.19629,+ 0.37473,+ 0.22266,+ 0.35156,+ 0.26551,+ 0.33551,+ 0.32375,+ 0.33016,+ 0.40484,+ 0.33016,+ 0.40484,+ 0.25984,+ 0.32719,+ 0.25984,+ 0.26195,+ 0.25312,+ 0.21281,+ 0.23297,+ 0.18211,+ 0.20293,+ 0.17188,+ 0.16656,+ 0.18285,+ 0.12414,+ 0.21578,+ 0.09281,+ 0.27027,+ 0.07371,+ 0.34469,+ 0.06734,+ 0.39211,+ 0.06957,+ 0.4375,+ 0.07625,+ 0.4802,+ 0.0866,+ 0.51953,+ 0.10109,+ 0.51953,+ 0.01656,+ 0.47305,+ 0.00465,+ 0.42828,+ -0.00391,+ 0.38441,+ -0.00906,+ 0.34187,+ -0.01078,+ 0.23184,+ 0.00035,+ 0.14984,+ 0.03375,+ 0.09934,+ 0.08766,+ 0.0825,+ 0.15969,+ 0.09152,+ 0.20867,+ 0.11859,+ 0.24906,+ 0.16187,+ 0.27895+ ],+ "t": [+ 0,+ 52,+ 51,+ 0,+ 51,+ 50,+ 0,+ 50,+ 49,+ 0,+ 49,+ 48,+ 48,+ 47,+ 46,+ 48,+ 46,+ 45,+ 48,+ 45,+ 44,+ 48,+ 44,+ 43,+ 48,+ 43,+ 42,+ 48,+ 42,+ 41,+ 41,+ 40,+ 39,+ 41,+ 39,+ 38,+ 41,+ 38,+ 37,+ 41,+ 37,+ 36,+ 41,+ 36,+ 35,+ 28,+ 27,+ 26,+ 28,+ 26,+ 25,+ 28,+ 25,+ 24,+ 28,+ 24,+ 23,+ 14,+ 13,+ 12,+ 14,+ 12,+ 11,+ 14,+ 11,+ 10,+ 14,+ 10,+ 9,+ 14,+ 9,+ 8,+ 14,+ 8,+ 7,+ 14,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1,+ 48,+ 41,+ 35,+ 48,+ 35,+ 34,+ 48,+ 34,+ 33,+ 48,+ 33,+ 32,+ 48,+ 32,+ 31,+ 29,+ 28,+ 23,+ 29,+ 23,+ 22,+ 15,+ 14,+ 6,+ 0,+ 48,+ 31,+ 0,+ 31,+ 30,+ 0,+ 30,+ 29,+ 0,+ 29,+ 22,+ 0,+ 22,+ 21,+ 16,+ 15,+ 6,+ 1,+ 0,+ 21,+ 17,+ 16,+ 6,+ 6,+ 1,+ 21,+ 6,+ 21,+ 20,+ 6,+ 20,+ 19,+ 6,+ 19,+ 18,+ 6,+ 18,+ 17+ ]+ },+ "θ": {+ "v": [+ 0.30078,+ 0.7325,+ 0.40117,+ 0.70848,+ 0.47484,+ 0.63641,+ 0.52008,+ 0.51918,+ 0.53516,+ 0.35938,+ 0.52012,+ 0.19852,+ 0.475,+ 0.08125,+ 0.40145,+ 0.00965,+ 0.30078,+ -0.01422,+ 0.20043,+ 0.00965,+ 0.12688,+ 0.08125,+ 0.08188,+ 0.19852,+ 0.06688,+ 0.35938,+ 0.08188,+ 0.51918,+ 0.12688,+ 0.63641,+ 0.20043,+ 0.70848,+ 0.43891,+ 0.40437,+ 0.42875,+ 0.50359,+ 0.40484,+ 0.58063,+ 0.36125,+ 0.63664,+ 0.30078,+ 0.65531,+ 0.24078,+ 0.63664,+ 0.19734,+ 0.58063,+ 0.1734,+ 0.50359,+ 0.16312,+ 0.40437,+ 0.43891,+ 0.31453,+ 0.16312,+ 0.31453,+ 0.17316,+ 0.21574,+ 0.19734,+ 0.13812,+ 0.24078,+ 0.08176,+ 0.30078,+ 0.06297,+ 0.36125,+ 0.08176,+ 0.40484,+ 0.13812,+ 0.42898,+ 0.21574+ ],+ "t": [+ 12,+ 24,+ 23,+ 12,+ 23,+ 22,+ 16,+ 24,+ 12,+ 16,+ 12,+ 26,+ 16,+ 26,+ 25,+ 27,+ 26,+ 12,+ 27,+ 12,+ 11,+ 27,+ 11,+ 10,+ 27,+ 10,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 2,+ 1,+ 0,+ 2,+ 0,+ 15,+ 15,+ 14,+ 13,+ 15,+ 13,+ 12,+ 15,+ 12,+ 22,+ 15,+ 22,+ 21,+ 15,+ 21,+ 20,+ 15,+ 20,+ 19,+ 28,+ 27,+ 9,+ 2,+ 15,+ 19,+ 2,+ 19,+ 18,+ 2,+ 18,+ 17,+ 2,+ 17,+ 16,+ 2,+ 16,+ 25,+ 2,+ 25,+ 33,+ 29,+ 28,+ 9,+ 6,+ 2,+ 33,+ 6,+ 33,+ 32,+ 6,+ 32,+ 31,+ 6,+ 31,+ 30,+ 30,+ 29,+ 9,+ 30,+ 9,+ 6+ ]+ },+ "λ": {+ "v": [+ 0.31344,+ 0.67438,+ 0.56547,+ 0.0,+ 0.47016,+ 0.0,+ 0.31688,+ 0.40437,+ 0.12844,+ 0.0,+ 0.03328,+ 0.0,+ 0.27297,+ 0.52438,+ 0.23688,+ 0.62109,+ 0.20086,+ 0.6675,+ 0.13875,+ 0.68266,+ 0.11469,+ 0.68266,+ 0.11469,+ 0.75984,+ 0.14891,+ 0.75875,+ 0.25691,+ 0.73594+ ],+ "t": [+ 1,+ 0,+ 13,+ 13,+ 12,+ 11,+ 13,+ 11,+ 10,+ 13,+ 10,+ 9,+ 13,+ 9,+ 8,+ 13,+ 8,+ 7,+ 13,+ 7,+ 6,+ 6,+ 5,+ 4,+ 6,+ 4,+ 3,+ 6,+ 3,+ 2,+ 6,+ 2,+ 1,+ 6,+ 1,+ 13+ ]+ },+ "π": {+ "v": [+ 0.03906,+ 0.54688,+ 0.56297,+ 0.54688,+ 0.56297,+ 0.45703,+ 0.49422,+ 0.45703,+ 0.49422,+ 0.12109,+ 0.49719,+ 0.09086,+ 0.50609,+ 0.07047,+ 0.52184,+ 0.05898,+ 0.545,+ 0.05516,+ 0.55309,+ 0.05547,+ 0.56297,+ 0.05641,+ 0.57191,+ 0.05746,+ 0.57719,+ 0.05813,+ 0.57719,+ -0.00688,+ 0.55977,+ -0.0123,+ 0.54187,+ -0.01609,+ 0.52391,+ -0.01832,+ 0.50594,+ -0.01906,+ 0.45883,+ -0.01105,+ 0.42813,+ 0.01297,+ 0.41137,+ 0.05848,+ 0.40578,+ 0.13094,+ 0.40578,+ 0.45703,+ 0.19672,+ 0.45703,+ 0.19672,+ 0.0,+ 0.10891,+ 0.0,+ 0.10891,+ 0.45703,+ 0.03906,+ 0.45703+ ],+ "t": [+ 1,+ 0,+ 27,+ 1,+ 27,+ 26,+ 26,+ 25,+ 24,+ 26,+ 24,+ 23,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 22,+ 18,+ 17,+ 22,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 16,+ 12,+ 11,+ 16,+ 11,+ 10,+ 16,+ 10,+ 9,+ 16,+ 9,+ 8,+ 16,+ 8,+ 7,+ 16,+ 7,+ 6,+ 16,+ 6,+ 5,+ 3,+ 2,+ 1,+ 1,+ 26,+ 23,+ 1,+ 23,+ 22,+ 22,+ 16,+ 5,+ 22,+ 5,+ 4,+ 22,+ 4,+ 3,+ 22,+ 3,+ 1+ ]+ },+ "σ": {+ "v": [+ 0.43453,+ 0.45703,+ 0.51,+ 0.36332,+ 0.53516,+ 0.24031,+ 0.51672,+ 0.13637,+ 0.46141,+ 0.04734,+ 0.39344,+ 0.00094,+ 0.30078,+ -0.01422,+ 0.20043,+ 0.00414,+ 0.12688,+ 0.05922,+ 0.08188,+ 0.14945,+ 0.06688,+ 0.27297,+ 0.08191,+ 0.38867,+ 0.12703,+ 0.47703,+ 0.19852,+ 0.52941,+ 0.30078,+ 0.54688,+ 0.55219,+ 0.54688,+ 0.55219,+ 0.45703,+ 0.29734,+ 0.45656,+ 0.23938,+ 0.4468,+ 0.19734,+ 0.4175,+ 0.17098,+ 0.36113,+ 0.16219,+ 0.27297,+ 0.17098,+ 0.18156,+ 0.19734,+ 0.11547,+ 0.24078,+ 0.07539,+ 0.30078,+ 0.06203,+ 0.36125,+ 0.07539,+ 0.40484,+ 0.11547,+ 0.43121,+ 0.1734,+ 0.44,+ 0.24031,+ 0.41898,+ 0.34723,+ 0.35594,+ 0.42484,+ 0.32668,+ 0.44371+ ],+ "t": [+ 10,+ 21,+ 20,+ 10,+ 20,+ 19,+ 22,+ 21,+ 10,+ 22,+ 10,+ 9,+ 22,+ 9,+ 8,+ 22,+ 8,+ 7,+ 7,+ 6,+ 5,+ 7,+ 5,+ 4,+ 7,+ 4,+ 3,+ 3,+ 2,+ 1,+ 3,+ 1,+ 0,+ 0,+ 16,+ 15,+ 0,+ 15,+ 14,+ 0,+ 14,+ 13,+ 0,+ 13,+ 12,+ 12,+ 11,+ 10,+ 12,+ 10,+ 19,+ 12,+ 19,+ 18,+ 12,+ 18,+ 17,+ 23,+ 22,+ 7,+ 0,+ 12,+ 17,+ 0,+ 17,+ 32,+ 0,+ 32,+ 31,+ 0,+ 31,+ 30,+ 0,+ 30,+ 29,+ 24,+ 23,+ 7,+ 3,+ 0,+ 29,+ 3,+ 29,+ 28,+ 3,+ 28,+ 27,+ 3,+ 27,+ 26,+ 25,+ 24,+ 7,+ 7,+ 3,+ 26,+ 7,+ 26,+ 25+ ]+ },+ "φ": {+ "v": [+ 0.3775,+ 0.55078,+ 0.44254,+ 0.53469,+ 0.50297,+ 0.48641,+ 0.54949,+ 0.39871,+ 0.565,+ 0.27344,+ 0.54949,+ 0.15187,+ 0.50297,+ 0.0625,+ 0.43219,+ 0.00684,+ 0.34578,+ -0.01172,+ 0.34578,+ -0.20797,+ 0.25641,+ -0.20797,+ 0.25641,+ -0.01219,+ 0.16836,+ 0.00648,+ 0.09859,+ 0.0625,+ 0.05254,+ 0.15293,+ 0.03719,+ 0.27297,+ 0.05254,+ 0.39891,+ 0.09859,+ 0.48391,+ 0.15551,+ 0.52727,+ 0.22469,+ 0.55078,+ 0.22469,+ 0.47125,+ 0.1948,+ 0.4525,+ 0.16891,+ 0.42188,+ 0.14113,+ 0.3566,+ 0.13187,+ 0.27297,+ 0.14113,+ 0.18152,+ 0.16891,+ 0.11813,+ 0.20984,+ 0.08039,+ 0.25641,+ 0.06781,+ 0.25641,+ 0.40328,+ 0.28668,+ 0.51391,+ 0.3775,+ 0.47406,+ 0.35371,+ 0.45637,+ 0.34578,+ 0.40328,+ 0.34578,+ 0.06844,+ 0.38992,+ 0.08113,+ 0.43266,+ 0.11922,+ 0.46078,+ 0.18043,+ 0.47016,+ 0.27344,+ 0.46078,+ 0.36648,+ 0.43266,+ 0.42969,+ 0.40152,+ 0.46297+ ],+ "t": [+ 21,+ 20,+ 19,+ 21,+ 19,+ 18,+ 21,+ 18,+ 17,+ 21,+ 17,+ 16,+ 21,+ 16,+ 15,+ 15,+ 14,+ 13,+ 15,+ 13,+ 12,+ 15,+ 12,+ 11,+ 11,+ 10,+ 9,+ 11,+ 9,+ 8,+ 11,+ 8,+ 7,+ 11,+ 7,+ 6,+ 11,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 1,+ 0,+ 30,+ 1,+ 30,+ 29,+ 22,+ 21,+ 15,+ 23,+ 22,+ 15,+ 24,+ 23,+ 15,+ 25,+ 24,+ 15,+ 26,+ 25,+ 15,+ 26,+ 15,+ 11,+ 27,+ 26,+ 11,+ 28,+ 27,+ 11,+ 34,+ 28,+ 11,+ 29,+ 28,+ 34,+ 29,+ 34,+ 33,+ 29,+ 33,+ 32,+ 29,+ 32,+ 31,+ 35,+ 34,+ 11,+ 35,+ 11,+ 5,+ 1,+ 29,+ 31,+ 1,+ 31,+ 41,+ 1,+ 41,+ 40,+ 1,+ 40,+ 39,+ 36,+ 35,+ 5,+ 5,+ 1,+ 39,+ 5,+ 39,+ 38,+ 5,+ 38,+ 37,+ 5,+ 37,+ 36+ ]+ },+ "ω": {+ "v": [+ 0.50438,+ 0.54688,+ 0.55242,+ 0.41496,+ 0.56844,+ 0.27703,+ 0.5623,+ 0.15645,+ 0.54391,+ 0.07625,+ 0.49379,+ 0.0084,+ 0.41656,+ -0.01422,+ 0.37746,+ -0.00793,+ 0.34328,+ 0.01094,+ 0.31691,+ 0.0391,+ 0.30125,+ 0.07328,+ 0.28617,+ 0.04035,+ 0.26031,+ 0.01188,+ 0.22613,+ -0.0077,+ 0.18609,+ -0.01422,+ 0.10875,+ 0.0084,+ 0.05859,+ 0.07625,+ 0.04031,+ 0.15645,+ 0.03422,+ 0.27703,+ 0.0502,+ 0.41496,+ 0.09813,+ 0.54688,+ 0.19094,+ 0.54688,+ 0.14477,+ 0.41117,+ 0.12937,+ 0.2725,+ 0.13121,+ 0.18219,+ 0.13766,+ 0.13187,+ 0.16047,+ 0.07902,+ 0.18891,+ 0.06203,+ 0.22457,+ 0.07629,+ 0.2475,+ 0.11719,+ 0.25676,+ 0.1932,+ 0.25984,+ 0.34125,+ 0.34281,+ 0.34125,+ 0.34586,+ 0.1932,+ 0.355,+ 0.11719,+ 0.37793,+ 0.07629,+ 0.41359,+ 0.06203,+ 0.44203,+ 0.07902,+ 0.46484,+ 0.13187,+ 0.47129,+ 0.18219,+ 0.47313,+ 0.2725,+ 0.45773,+ 0.41117,+ 0.41156,+ 0.54688+ ],+ "t": [+ 1,+ 0,+ 42,+ 1,+ 42,+ 41,+ 1,+ 41,+ 40,+ 1,+ 40,+ 39,+ 1,+ 39,+ 38,+ 33,+ 32,+ 31,+ 33,+ 31,+ 30,+ 33,+ 30,+ 29,+ 33,+ 29,+ 28,+ 22,+ 21,+ 20,+ 22,+ 20,+ 19,+ 22,+ 19,+ 18,+ 22,+ 18,+ 17,+ 22,+ 17,+ 16,+ 16,+ 15,+ 14,+ 16,+ 14,+ 13,+ 16,+ 13,+ 12,+ 16,+ 12,+ 11,+ 10,+ 9,+ 8,+ 10,+ 8,+ 7,+ 10,+ 7,+ 6,+ 10,+ 6,+ 5,+ 5,+ 4,+ 3,+ 5,+ 3,+ 2,+ 5,+ 2,+ 1,+ 5,+ 1,+ 38,+ 5,+ 38,+ 37,+ 5,+ 37,+ 36,+ 5,+ 36,+ 35,+ 34,+ 33,+ 28,+ 34,+ 28,+ 27,+ 23,+ 22,+ 16,+ 10,+ 5,+ 35,+ 10,+ 35,+ 34,+ 10,+ 34,+ 27,+ 24,+ 23,+ 16,+ 11,+ 10,+ 27,+ 25,+ 24,+ 16,+ 16,+ 11,+ 27,+ 16,+ 27,+ 26,+ 16,+ 26,+ 25+ ]+ },+ "→": {+ "v": [+ 0.56984,+ 0.25391,+ 0.42781,+ 0.11188,+ 0.38375,+ 0.15578,+ 0.46188,+ 0.23391,+ 0.03219,+ 0.23391,+ 0.03219,+ 0.31391,+ 0.46188,+ 0.31391,+ 0.38375,+ 0.39203,+ 0.42781,+ 0.43609,+ 0.56984,+ 0.29391+ ],+ "t": [+ 1,+ 0,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 9,+ 5,+ 4,+ 9,+ 4,+ 3,+ 9,+ 3,+ 2,+ 9,+ 2,+ 1+ ]+ },+ "←": {+ "v": [+ 0.03219,+ 0.25391,+ 0.03219,+ 0.29391,+ 0.17438,+ 0.43609,+ 0.21828,+ 0.39203,+ 0.14016,+ 0.31391,+ 0.56984,+ 0.31391,+ 0.56984,+ 0.23391,+ 0.14016,+ 0.23391,+ 0.21828,+ 0.15578,+ 0.17438,+ 0.11188+ ],+ "t": [+ 1,+ 0,+ 9,+ 1,+ 9,+ 8,+ 1,+ 8,+ 7,+ 1,+ 7,+ 6,+ 1,+ 6,+ 5,+ 1,+ 5,+ 4,+ 1,+ 4,+ 3,+ 1,+ 3,+ 2+ ]+ },+ "↑": {+ "v": [+ 0.32125,+ 0.53766,+ 0.46297,+ 0.39547,+ 0.41891,+ 0.35156,+ 0.34078,+ 0.42969,+ 0.34078,+ 0.0,+ 0.26078,+ 0.0,+ 0.26078,+ 0.42969,+ 0.18266,+ 0.35156,+ 0.13875,+ 0.39547,+ 0.28125,+ 0.53766+ ],+ "t": [+ 1,+ 0,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 9,+ 5,+ 4,+ 9,+ 4,+ 3,+ 9,+ 3,+ 2,+ 9,+ 2,+ 1+ ]+ },+ "↓": {+ "v": [+ 0.28125,+ 0.0,+ 0.13875,+ 0.14203,+ 0.18266,+ 0.18609,+ 0.26078,+ 0.10797,+ 0.26078,+ 0.53766,+ 0.34078,+ 0.53766,+ 0.34078,+ 0.10797,+ 0.41891,+ 0.18609,+ 0.46297,+ 0.14203,+ 0.32125,+ 0.0+ ],+ "t": [+ 1,+ 0,+ 9,+ 9,+ 8,+ 7,+ 9,+ 7,+ 6,+ 9,+ 6,+ 5,+ 9,+ 5,+ 4,+ 9,+ 4,+ 3,+ 9,+ 3,+ 2,+ 9,+ 2,+ 1+ ]+ }+ }+}
provenance/tools/upgrade.pyadded+124@@ -0,0 +1,124 @@+"""Add the adom-hero 1.4 hero GLB and the Altium SchLib/PcbLib to an existing component page clone,+and refresh page.json, models.json, verification.json, provenance.json, README.md and LICENSE for them.+Everything else in the clone is left as it is.++usage: upgrade.py <clone-dir>+"""+import sys, os, json, hashlib, subprocess, shutil, re+TOOLS = os.path.dirname(os.path.abspath(__file__))+PY = "/home/adom/.venvs/cq/bin/python"+TODAY = "2026-10-21"+D = os.path.abspath(sys.argv[1]); slug = os.path.basename(D)+def p_(f): return os.path.join(D, f)+sha = lambda f: hashlib.sha256(open(p_(f), "rb").read()).hexdigest()+def blob(f):+ b = open(p_(f), "rb").read(); return hashlib.sha1(b"blob %d\0" % len(b) + b).hexdigest()+def run(cmd, cwd=None):+ r = subprocess.run(cmd, capture_output=True, text=True, cwd=cwd)+ if r.returncode != 0:+ print("FAILED", cmd, r.stdout[-1500:], r.stderr[-1500:]); sys.exit(1)+ return r+page = json.load(open(p_("page.json"))); comp = page["component"]; parts = comp["parts"]; MPN = comp["mpn"]+SYM, FP, STEP = parts["symbol"], parts["footprint"], parts["step"]+PLAIN = "package-reference.glb"+assert parts.get("model_3d") == PLAIN and os.path.exists(p_(PLAIN)), parts+HERO = f"{slug}-hero.glb"; HERO_SC = f"{slug}-hero.overlay.json"; PREV = f"docs/{slug}-hero-preview.png"+by = {"name": "Claude (AI agent) for John Lauer", "handle": "john"}++# hero+r = run([PY, "-I", os.path.join(TOOLS, "hero_glb.py"), p_(PLAIN), p_(FP), p_("page.json"), p_(HERO), "--png", p_(PREV)], cwd=TOOLS)+hero_line = r.stdout.strip().splitlines()[-1]; print("hero:", hero_line)+assert "align OK" in hero_line and os.path.exists(p_(HERO_SC))+hero_res = hero_line.split(": ", 1)[-1]++# altium+os.makedirs(p_("altium"), exist_ok=True)+run(["adom-lbr", "import-kicad", "--sym", p_(SYM), "--fp", p_(FP), "--mpn", MPN], cwd=p_("altium"))+run(["adom-lbr", "export-altium", f"{MPN}.adom-lbr.json", "--out-dir", "."], cwd=p_("altium"))+ALT = [f"altium/{MPN}.SchLib", f"altium/{MPN}.PcbLib", f"altium/{MPN}.adom-lbr.json"]+assert all(os.path.getsize(p_(f)) > 1000 for f in ALT)++# tools into provenance+for t in ("hero_glb.py", "hero_glyphs.json", "upgrade.py"):+ shutil.copyfile(os.path.join(TOOLS, t), p_("provenance/tools/" + t))++# page.json+parts["model_3d"] = HERO; parts["model_3d_plain"] = PLAIN+parts["altium_schlib"], parts["altium_pcblib"] = ALT[0], ALT[1]+page.setdefault("eda_assets", {})["altium"] = {"schlib": ALT[0], "pcblib": ALT[1], "provenance": "generated"}+comp.setdefault("provenance", {})["hero"] = "adom-hero 1.4 (adom/component-hero hero_glb.py)"+json.dump(page, open(p_("page.json"), "w"), indent=1)++# models.json+mj = json.load(open(p_("models.json")))+src = next(m for m in mj["models"] if m["path"] == PLAIN)+src.update({"slot": "model_3d_plain", "use": sorted(set(src.get("use", []) + ["board-insertion"])),+ "unique": "The clean model as a GLB (step2glb), no artwork: the download for viewers and assemblies"})+mj["models"] = [m for m in mj["models"] if m["path"] != HERO]+i = mj["models"].index(src) + 1+mj["models"].insert(i, {"path": HERO, "format": "glb", "title": "Hero (page viewer)", "status": "current", "slot": "model_3d", "variant": "hero",+ "role": "derived", "use": ["wiki-hero"], "marking": None, "derived_from": PLAIN,+ "unique": "The clean model plus nonphysical footprint artwork (adom-hero 1.4): teal dashed pad outlines, silkscreen, pad numbers 1 and 2; not for board use",+ "thumb": PREV, "source": src.get("source"), "sha256": sha(HERO), "git_blob": blob(HERO), "bytes": os.path.getsize(p_(HERO))})+mj["updated"] = TODAY+json.dump(mj, open(p_("models.json"), "w"), indent=1)++# verification.json (append)+vj = json.load(open(p_("verification.json")))+vj["entries"] = [e for e in vj["entries"] if e.get("title") not in ("Hero GLB built to adom-hero 1.4 over the clean model", "Altium libraries generated from the KiCad symbol and footprint")]+vj["entries"].append({"date": TODAY, "by": by, "status": "verified", "title": "Hero GLB built to adom-hero 1.4 over the clean model",+ "scope": ["3d-model", "hero"], "variants": ["*"],+ "checks": [{"text": hero_res, "result": "pass"},+ {"text": "pad outlines teal 50 %, silkscreen 30 % alpha, pad-number labels 50 % (the terminals have no names); no pin-1 dot, the part is non-polar", "result": "pass"},+ {"text": "hero is a separate file; package-reference.glb and every LOD carry no artwork", "result": "pass"},+ {"text": "preview looked at by the AI agent; the live wiki viewer still needs a person's look", "result": "note"}],+ "evidence": [{"label": "preview (top and oblique)", "href": PREV}, {"label": "sidecar", "href": HERO_SC}],+ "files": {HERO: sha(HERO), PLAIN: sha(PLAIN), FP: sha(FP)}})+vj["entries"].append({"date": TODAY, "by": by, "status": "verified", "title": "Altium libraries generated from the KiCad symbol and footprint",+ "scope": ["symbol", "footprint", "eda"], "variants": ["*"],+ "checks": [{"text": "adom-lbr import-kicad + export-altium: native .SchLib (2 pins) and .PcbLib (2 pads) written and read back; MPN, Manufacturer and supplier numbers carried as parameters", "result": "pass"},+ {"text": "not yet opened in Altium by a person", "result": "note"}],+ "evidence": [], "files": {f: sha(f) for f in ALT}})+json.dump(vj, open(p_("verification.json"), "w"), indent=1)++# README (additions only)+rd = open(p_("README.md")).read()+if HERO not in rd:+ hero_txt = (f"The page viewer shows `{HERO}`: the clean model plus nonphysical reference artwork drawn under it to the adom-hero 1.4\n"+ "standard (adom/component-hero): the footprint's pads as teal dashed outlines at 50 % opacity, its silkscreen at\n"+ "70 % transparency and the pad numbers 1 and 2 (the terminals have no names). The part is non-polar, so no pin-1 dot is\n"+ f"added. The artwork never goes into the STEP, `{PLAIN}` or the board LODs.\n\n"+ f"\n\n")+ k = rd.index("::adom-models")+ rd = rd[:k] + hero_txt + rd[k:]+ row = next(l for l in rd.splitlines() if l.startswith(f"| `{PLAIN}` |"))+ new = (row + "\n" + f"| `{HERO}` | page-viewer hero: the clean model plus footprint artwork (adom-hero 1.4); `{HERO_SC}` lists every pad and label |\n"+ f"| `{ALT[0]}` | Altium schematic library, made with `adom-lbr import-kicad` and `export-altium` |\n"+ f"| `{ALT[1]}` | Altium PCB library, made with `adom-lbr import-kicad` and `export-altium` |\n"+ f"| `{ALT[2]}` | adom-lbr hub JSON (symbol, footprint, pin-to-pad map) behind the Altium files |")+ rd = rd.replace(row, new, 1)+ open(p_("README.md"), "w").write(rd)++# LICENSE (one wording change so the hero is covered)+lic = open(p_("LICENSE")).read()+lic2 = lic.replace("(and the GLB and LOD files derived from it)", "(and the GLB, hero and LOD files derived from it)")+if "component-hero" not in lic2:+ lic2 = lic2.rstrip("\n") + "\n- provenance/tools/hero_glb.py and hero_glyphs.json come from adom/component-hero.\n"+open(p_("LICENSE"), "w").write(lic2)++# provenance.json (add sections, refresh every file hash)+pv = json.load(open(p_("provenance.json")))+pv["hero_glb"] = {"file": HERO, "sidecar": HERO_SC, "preview": PREV, "added": TODAY,+ "tool": "hero_glb.py (adom/component-hero, adom-hero 1.4), copied into provenance/tools/",+ "inputs": [PLAIN, FP, "page.json component.pins (1 and 2, unnamed)"], "result": hero_res}+pv["altium"] = {"files": ALT, "added": TODAY, "tool": "adom-lbr import-kicad --sym --fp --mpn, then adom-lbr export-altium (adom-lbr 2.47.5)"}+pv["upgrade_note"] = f"{TODAY}: hero GLB, Altium libraries and Source added by provenance/tools/upgrade.py; no other file changed except the records that describe them (page.json, models.json, verification.json, README.md, LICENSE, this file)."+files = {}+for dp, dn, fn in os.walk(D):+ for f in fn:+ rel = os.path.relpath(os.path.join(dp, f), D)+ if rel != "provenance.json":+ files[rel] = sha(rel)+pv["files"] = files+json.dump(pv, open(p_("provenance.json"), "w"), indent=1)+print("upgraded", slug)
verification.json+82@@ -229,6 +229,88 @@ "0402ZD105KAT2A.kicad_sym": "4fb61235b89779e8ebb17e67d638bad7e576ef1aa18546042e4b9d84b3a32015", "0402ZD105KAT2A.step": "03e44c4b2b727b8d4b6b1fd598cbd12dd5e614f1dfeefa96a92a07e3a3b312a2" }+ },+ {+ "date": "2026-10-21",+ "by": {+ "name": "Claude (AI agent) for John Lauer",+ "handle": "john"+ },+ "status": "verified",+ "title": "Hero GLB built to adom-hero 1.4 over the clean model",+ "scope": [+ "3d-model",+ "hero"+ ],+ "variants": [+ "*"+ ],+ "checks": [+ {+ "text": "pads 2, silk items 2, pin1 none, labels 2; align OK (offset 0.0 mm)",+ "result": "pass"+ },+ {+ "text": "pad outlines teal 50 %, silkscreen 30 % alpha, pad-number labels 50 % (the terminals have no names); no pin-1 dot, the part is non-polar",+ "result": "pass"+ },+ {+ "text": "hero is a separate file; package-reference.glb and every LOD carry no artwork",+ "result": "pass"+ },+ {+ "text": "preview looked at by the AI agent; the live wiki viewer still needs a person's look",+ "result": "note"+ }+ ],+ "evidence": [+ {+ "label": "preview (top and oblique)",+ "href": "docs/0402zd105kat2a-hero-preview.png"+ },+ {+ "label": "sidecar",+ "href": "0402zd105kat2a-hero.overlay.json"+ }+ ],+ "files": {+ "0402zd105kat2a-hero.glb": "4201e860514b498278ab8df9f9f5f2e57d09281815a135bdd1f028acaa6dbc62",+ "package-reference.glb": "100935c5c0d6f20a6c9bdfb6386f874dc8a4457bf0e4f3ace69f1ab090100773",+ "C_0402_1005Metric_0402ZD105KAT2A.kicad_mod": "75e472f604e9e3473daf00ae179e4902d07ae5dc5eddbc841028a68b91c022c0"+ }+ },+ {+ "date": "2026-10-21",+ "by": {+ "name": "Claude (AI agent) for John Lauer",+ "handle": "john"+ },+ "status": "verified",+ "title": "Altium libraries generated from the KiCad symbol and footprint",+ "scope": [+ "symbol",+ "footprint",+ "eda"+ ],+ "variants": [+ "*"+ ],+ "checks": [+ {+ "text": "adom-lbr import-kicad + export-altium: native .SchLib (2 pins) and .PcbLib (2 pads) written and read back; MPN, Manufacturer and supplier numbers carried as parameters",+ "result": "pass"+ },+ {+ "text": "not yet opened in Altium by a person",+ "result": "note"+ }+ ],+ "evidence": [],+ "files": {+ "altium/0402ZD105KAT2A.SchLib": "72469850a0eeeac6830560ec7ed39edfd72c1bbee5ef63d90855a423f906abdd",+ "altium/0402ZD105KAT2A.PcbLib": "6e364773b4ebbe1cd1c05e8c89beb73f4f517e4f02b15bc96d36ee8f72e9ce83",+ "altium/0402ZD105KAT2A.adom-lbr.json": "67b1d3a02532f202d28b20c21231aeac442e120b3fbe38295a950d66ea5900e9"+ } } ] }