]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/assets/iD/iD/mapillary-js/mapillary.js.map
Merge remote-tracking branch 'upstream/pull/834'
[rails.git] / vendor / assets / iD / iD / mapillary-js / mapillary.js.map
index 3ac2f5388c5ec3be79df2b968587ac595da03d52..bfb45ab43c87c42e20e09639e93f17ad449a96ce 100644 (file)
@@ -23,6 +23,7 @@
     "node_modules/individual/one-version.js",
     "node_modules/is-object/index.js",
     "node_modules/latlon-geohash/latlon-geohash.js",
+    "node_modules/martinez-polygon-clipping/dist/martinez.umd.js",
     "node_modules/path-browserify/index.js",
     "node_modules/pbf/index.js",
     "node_modules/quickselect/quickselect.js",
     "src/component/tag/tag/SpotTag.ts",
     "src/component/tag/tag/Tag.ts",
     "src/component/tag/tag/TagDomain.ts",
+    "src/component/utils/ComponentSize.ts",
     "src/component/utils/HandlerBase.ts",
     "src/component/utils/MeshFactory.ts",
     "src/component/utils/MeshScene.ts",
     "src/viewer/MouseService.ts",
     "src/viewer/Navigator.ts",
     "src/viewer/Observer.ts",
+    "src/viewer/PanService.ts",
     "src/viewer/PlayService.ts",
     "src/viewer/Projection.ts",
     "src/viewer/SpriteService.ts",
     "src/viewer/Viewer.ts"
   ],
   "names": [],
-  "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7NA;AACA;AACA;AACA;AACA;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1mBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC37BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACRA,qCAAkC;AAA1B,wBAAA,KAAK,CAAA;AACb,mDAAgD;AAAxC,sCAAA,YAAY,CAAA;;;;;;;;ACDpB,mDAAgD;AAAxC,gCAAA,SAAS,CAAA;AACjB,iEAA8D;AAAtD,8CAAA,gBAAgB,CAAA;AACxB,6DAA0D;AAAlD,oCAAA,WAAW,CAAA;AACnB,6DAA0D;AAAlD,oCAAA,WAAW,CAAA;AACnB,yDAAsD;AAA9C,gCAAA,SAAS,CAAA;AACjB,iEAA8D;AAAtD,wCAAA,aAAa,CAAA;AACrB,yEAAsE;AAA9D,sDAAA,oBAAoB,CAAA;AAC5B,uEAAoE;AAA5D,oDAAA,mBAAmB,CAAA;AAC3B,iEAA8D;AAAtD,8CAAA,gBAAgB,CAAA;AACxB,6DAA0D;AAAlD,0CAAA,cAAc,CAAA;AACtB,6DAA0D;AAAlD,0CAAA,cAAc,CAAA;AACtB,6DAA0D;AAAlD,0CAAA,cAAc,CAAA;AACtB,+EAA4E;AAApE,kDAAA,kBAAkB,CAAA;AAC1B,uFAAoF;AAA5E,0DAAA,sBAAsB,CAAA;AAC9B,mFAAgF;AAAxE,sDAAA,oBAAoB,CAAA;AAC5B,6DAA0D;AAAlD,0CAAA,cAAc,CAAA;A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",
+  "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7NA;AACA;AACA;AACA;AACA;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1mBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC37BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACRA,qCAAkC;AAA1B,wBAAA,KAAK,CAAA;AACb,mDAAgD;AAAxC,sCAAA,YAAY,CAAA;;;;;;;;ACDpB,mDAAgD;AAAxC,gCAAA,SAAS,CAAA;AACjB,iEAA8D;AAAtD,8CAAA,gBAAgB,CAAA;AACxB,6DAA0D;AAAlD,oCAAA,WAAW,CAAA;AACnB,6DAA0D;AAAlD,oCAAA,WAAW,CAAA;AACnB,yDAAsD;AAA9C,gCAAA,SAAS,CAAA;AACjB,iEAA8D;AAAtD,wCAAA,aAAa,CAAA;AACrB,iEAA8D;AAAtD,wCAAA,aAAa,CAAA;AACrB,yEAAsE;AAA9D,sDAAA,oBAAoB,CAAA;AAC5B,uEAAoE;AAA5D,oDAAA,mBAAmB,CAAA;AAC3B,iEAA8D;AAAtD,8CAAA,gBAAgB,CAAA;AACxB,6DAA0D;A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",
   "file": "generated.js",
   "sourceRoot": "",
   "sourcesContent": [
     "'use strict';\n\nvar Individual = require('./index.js');\n\nmodule.exports = OneVersion;\n\nfunction OneVersion(moduleName, version, defaultValue) {\n    var key = '__INDIVIDUAL_ONE_VERSION_' + moduleName;\n    var enforceKey = key + '_ENFORCE_SINGLETON';\n\n    var versionValue = Individual(enforceKey, version);\n\n    if (versionValue !== version) {\n        throw new Error('Can only have one copy of ' +\n            moduleName + '.\\n' +\n            'You already have version ' + versionValue +\n            ' installed.\\n' +\n            'This means you cannot install version ' + version);\n    }\n\n    return Individual(key, defaultValue);\n}\n",
     "\"use strict\";\n\nmodule.exports = function isObject(x) {\n\treturn typeof x === \"object\" && x !== null;\n};\n",
     "/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n/* Geohash encoding/decoding and associated functions   (c) Chris Veness 2014-2016 / MIT Licence  */\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n'use strict';\n\n\n/**\n * Geohash encode, decode, bounds, neighbours.\n *\n * @namespace\n */\nvar Geohash = {};\n\n/* (Geohash-specific) Base32 map */\nGeohash.base32 = '0123456789bcdefghjkmnpqrstuvwxyz';\n\n/**\n * Encodes latitude/longitude to geohash, either to specified precision or to automatically\n * evaluated precision.\n *\n * @param   {number} lat - Latitude in degrees.\n * @param   {number} lon - Longitude in degrees.\n * @param   {number} [precision] - Number of characters in resulting geohash.\n * @returns {string} Geohash of supplied latitude/longitude.\n * @throws  Invalid geohash.\n *\n * @example\n *     var geohash = Geohash.encode(52.205, 0.119, 7); // geohash: 'u120fxw'\n */\nGeohash.encode = function(lat, lon, precision) {\n    // infer precision?\n    if (typeof precision == 'undefined') {\n        // refine geohash until it matches precision of supplied lat/lon\n        for (var p=1; p<=12; p++) {\n            var hash = Geohash.encode(lat, lon, p);\n            var posn = Geohash.decode(hash);\n            if (posn.lat==lat && posn.lon==lon) return hash;\n        }\n        precision = 12; // set to maximum\n    }\n\n    lat = Number(lat);\n    lon = Number(lon);\n    precision = Number(precision);\n\n    if (isNaN(lat) || isNaN(lon) || isNaN(precision)) throw new Error('Invalid geohash');\n\n    var idx = 0; // index into base32 map\n    var bit = 0; // each char holds 5 bits\n    var evenBit = true;\n    var geohash = '';\n\n    var latMin =  -90, latMax =  90;\n    var lonMin = -180, lonMax = 180;\n\n    while (geohash.length < precision) {\n        if (evenBit) {\n            // bisect E-W longitude\n            var lonMid = (lonMin + lonMax) / 2;\n            if (lon >= lonMid) {\n                idx = idx*2 + 1;\n                lonMin = lonMid;\n            } else {\n                idx = idx*2;\n                lonMax = lonMid;\n            }\n        } else {\n            // bisect N-S latitude\n            var latMid = (latMin + latMax) / 2;\n            if (lat >= latMid) {\n                idx = idx*2 + 1;\n                latMin = latMid;\n            } else {\n                idx = idx*2;\n                latMax = latMid;\n            }\n        }\n        evenBit = !evenBit;\n\n        if (++bit == 5) {\n            // 5 bits gives us a character: append it and start over\n            geohash += Geohash.base32.charAt(idx);\n            bit = 0;\n            idx = 0;\n        }\n    }\n\n    return geohash;\n};\n\n\n/**\n * Decode geohash to latitude/longitude (location is approximate centre of geohash cell,\n *     to reasonable precision).\n *\n * @param   {string} geohash - Geohash string to be converted to latitude/longitude.\n * @returns {{lat:number, lon:number}} (Center of) geohashed location.\n * @throws  Invalid geohash.\n *\n * @example\n *     var latlon = Geohash.decode('u120fxw'); // latlon: { lat: 52.205, lon: 0.1188 }\n */\nGeohash.decode = function(geohash) {\n\n    var bounds = Geohash.bounds(geohash); // <-- the hard work\n    // now just determine the centre of the cell...\n\n    var latMin = bounds.sw.lat, lonMin = bounds.sw.lon;\n    var latMax = bounds.ne.lat, lonMax = bounds.ne.lon;\n\n    // cell centre\n    var lat = (latMin + latMax)/2;\n    var lon = (lonMin + lonMax)/2;\n\n    // round to close to centre without excessive precision: ⌊2-log10(Δ°)⌋ decimal places\n    lat = lat.toFixed(Math.floor(2-Math.log(latMax-latMin)/Math.LN10));\n    lon = lon.toFixed(Math.floor(2-Math.log(lonMax-lonMin)/Math.LN10));\n\n    return { lat: Number(lat), lon: Number(lon) };\n};\n\n\n/**\n * Returns SW/NE latitude/longitude bounds of specified geohash.\n *\n * @param   {string} geohash - Cell that bounds are required of.\n * @returns {{sw: {lat: number, lon: number}, ne: {lat: number, lon: number}}}\n * @throws  Invalid geohash.\n */\nGeohash.bounds = function(geohash) {\n    if (geohash.length === 0) throw new Error('Invalid geohash');\n\n    geohash = geohash.toLowerCase();\n\n    var evenBit = true;\n    var latMin =  -90, latMax =  90;\n    var lonMin = -180, lonMax = 180;\n\n    for (var i=0; i<geohash.length; i++) {\n        var chr = geohash.charAt(i);\n        var idx = Geohash.base32.indexOf(chr);\n        if (idx == -1) throw new Error('Invalid geohash');\n\n        for (var n=4; n>=0; n--) {\n            var bitN = idx >> n & 1;\n            if (evenBit) {\n                // longitude\n                var lonMid = (lonMin+lonMax) / 2;\n                if (bitN == 1) {\n                    lonMin = lonMid;\n                } else {\n                    lonMax = lonMid;\n                }\n            } else {\n                // latitude\n                var latMid = (latMin+latMax) / 2;\n                if (bitN == 1) {\n                    latMin = latMid;\n                } else {\n                    latMax = latMid;\n                }\n            }\n            evenBit = !evenBit;\n        }\n    }\n\n    var bounds = {\n        sw: { lat: latMin, lon: lonMin },\n        ne: { lat: latMax, lon: lonMax },\n    };\n\n    return bounds;\n};\n\n\n/**\n * Determines adjacent cell in given direction.\n *\n * @param   geohash - Cell to which adjacent cell is required.\n * @param   direction - Direction from geohash (N/S/E/W).\n * @returns {string} Geocode of adjacent cell.\n * @throws  Invalid geohash.\n */\nGeohash.adjacent = function(geohash, direction) {\n    // based on github.com/davetroy/geohash-js\n\n    geohash = geohash.toLowerCase();\n    direction = direction.toLowerCase();\n\n    if (geohash.length === 0) throw new Error('Invalid geohash');\n    if ('nsew'.indexOf(direction) == -1) throw new Error('Invalid direction');\n\n    var neighbour = {\n        n: [ 'p0r21436x8zb9dcf5h7kjnmqesgutwvy', 'bc01fg45238967deuvhjyznpkmstqrwx' ],\n        s: [ '14365h7k9dcfesgujnmqp0r2twvyx8zb', '238967debc01fg45kmstqrwxuvhjyznp' ],\n        e: [ 'bc01fg45238967deuvhjyznpkmstqrwx', 'p0r21436x8zb9dcf5h7kjnmqesgutwvy' ],\n        w: [ '238967debc01fg45kmstqrwxuvhjyznp', '14365h7k9dcfesgujnmqp0r2twvyx8zb' ],\n    };\n    var border = {\n        n: [ 'prxz',     'bcfguvyz' ],\n        s: [ '028b',     '0145hjnp' ],\n        e: [ 'bcfguvyz', 'prxz'     ],\n        w: [ '0145hjnp', '028b'     ],\n    };\n\n    var lastCh = geohash.slice(-1);    // last character of hash\n    var parent = geohash.slice(0, -1); // hash without last character\n\n    var type = geohash.length % 2;\n\n    // check for edge-cases which don't share common prefix\n    if (border[direction][type].indexOf(lastCh) != -1 && parent !== '') {\n        parent = Geohash.adjacent(parent, direction);\n    }\n\n    // append letter for direction to parent\n    return parent + Geohash.base32.charAt(neighbour[direction][type].indexOf(lastCh));\n};\n\n\n/**\n * Returns all 8 adjacent cells to specified geohash.\n *\n * @param   {string} geohash - Geohash neighbours are required of.\n * @returns {{n,ne,e,se,s,sw,w,nw: string}}\n * @throws  Invalid geohash.\n */\nGeohash.neighbours = function(geohash) {\n    return {\n        'n':  Geohash.adjacent(geohash, 'n'),\n        'ne': Geohash.adjacent(Geohash.adjacent(geohash, 'n'), 'e'),\n        'e':  Geohash.adjacent(geohash, 'e'),\n        'se': Geohash.adjacent(Geohash.adjacent(geohash, 's'), 'e'),\n        's':  Geohash.adjacent(geohash, 's'),\n        'sw': Geohash.adjacent(Geohash.adjacent(geohash, 's'), 'w'),\n        'w':  Geohash.adjacent(geohash, 'w'),\n        'nw': Geohash.adjacent(Geohash.adjacent(geohash, 'n'), 'w'),\n    };\n};\n\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\nif (typeof module != 'undefined' && module.exports) module.exports = Geohash; // CommonJS, node.js\n",
+    "/**\n * martinez v0.5.0\n * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor\n *\n * @author Alex Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.martinez = {})));\n}(this, (function (exports) { 'use strict';\n\n  function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; }\n\n  var SplayTree = function SplayTree(compare, noDuplicates) {\n    if ( compare === void 0 ) compare = DEFAULT_COMPARE;\n    if ( noDuplicates === void 0 ) noDuplicates = false;\n\n    this._compare = compare;\n    this._root = null;\n    this._size = 0;\n    this._noDuplicates = !!noDuplicates;\n  };\n\n  var prototypeAccessors = { size: { configurable: true } };\n\n\n  SplayTree.prototype.rotateLeft = function rotateLeft (x) {\n    var y = x.right;\n    if (y) {\n      x.right = y.left;\n      if (y.left) { y.left.parent = x; }\n      y.parent = x.parent;\n    }\n\n    if (!x.parent)              { this._root = y; }\n    else if (x === x.parent.left) { x.parent.left = y; }\n    else                        { x.parent.right = y; }\n    if (y) { y.left = x; }\n    x.parent = y;\n  };\n\n\n  SplayTree.prototype.rotateRight = function rotateRight (x) {\n    var y = x.left;\n    if (y) {\n      x.left = y.right;\n      if (y.right) { y.right.parent = x; }\n      y.parent = x.parent;\n    }\n\n    if (!x.parent)             { this._root = y; }\n    else if(x === x.parent.left) { x.parent.left = y; }\n    else                       { x.parent.right = y; }\n    if (y) { y.right = x; }\n    x.parent = y;\n  };\n\n\n  SplayTree.prototype._splay = function _splay (x) {\n      var this$1 = this;\n\n    while (x.parent) {\n      var p = x.parent;\n      if (!p.parent) {\n        if (p.left === x) { this$1.rotateRight(p); }\n        else            { this$1.rotateLeft(p); }\n      } else if (p.left === x && p.parent.left === p) {\n        this$1.rotateRight(p.parent);\n        this$1.rotateRight(p);\n      } else if (p.right === x && p.parent.right === p) {\n        this$1.rotateLeft(p.parent);\n        this$1.rotateLeft(p);\n      } else if (p.left === x && p.parent.right === p) {\n        this$1.rotateRight(p);\n        this$1.rotateLeft(p);\n      } else {\n        this$1.rotateLeft(p);\n        this$1.rotateRight(p);\n      }\n    }\n  };\n\n\n  SplayTree.prototype.splay = function splay (x) {\n      var this$1 = this;\n\n    var p, gp, ggp, l, r;\n\n    while (x.parent) {\n      p = x.parent;\n      gp = p.parent;\n\n      if (gp && gp.parent) {\n        ggp = gp.parent;\n        if (ggp.left === gp) { ggp.left= x; }\n        else               { ggp.right = x; }\n        x.parent = ggp;\n      } else {\n        x.parent = null;\n        this$1._root = x;\n      }\n\n      l = x.left; r = x.right;\n\n      if (x === p.left) { // left\n        if (gp) {\n          if (gp.left === p) {\n            /* zig-zig */\n            if (p.right) {\n              gp.left = p.right;\n              gp.left.parent = gp;\n            } else { gp.left = null; }\n\n            p.right = gp;\n            gp.parent = p;\n          } else {\n            /* zig-zag */\n            if (l) {\n              gp.right = l;\n              l.parent = gp;\n            } else { gp.right = null; }\n\n            x.left  = gp;\n            gp.parent = x;\n          }\n        }\n        if (r) {\n          p.left = r;\n          r.parent = p;\n        } else { p.left = null; }\n\n        x.right= p;\n        p.parent = x;\n      } else { // right\n        if (gp) {\n          if (gp.right === p) {\n            /* zig-zig */\n            if (p.left) {\n              gp.right = p.left;\n              gp.right.parent = gp;\n            } else { gp.right = null; }\n\n            p.left = gp;\n            gp.parent = p;\n          } else {\n            /* zig-zag */\n            if (r) {\n              gp.left = r;\n              r.parent = gp;\n            } else { gp.left = null; }\n\n            x.right = gp;\n            gp.parent = x;\n          }\n        }\n        if (l) {\n          p.right = l;\n          l.parent = p;\n        } else { p.right = null; }\n\n        x.left = p;\n        p.parent = x;\n      }\n    }\n  };\n\n\n  SplayTree.prototype.replace = function replace (u, v) {\n    if (!u.parent) { this._root = v; }\n    else if (u === u.parent.left) { u.parent.left = v; }\n    else { u.parent.right = v; }\n    if (v) { v.parent = u.parent; }\n  };\n\n\n  SplayTree.prototype.minNode = function minNode (u) {\n      if ( u === void 0 ) u = this._root;\n\n    if (u) { while (u.left) { u = u.left; } }\n    return u;\n  };\n\n\n  SplayTree.prototype.maxNode = function maxNode (u) {\n      if ( u === void 0 ) u = this._root;\n\n    if (u) { while (u.right) { u = u.right; } }\n    return u;\n  };\n\n\n  SplayTree.prototype.insert = function insert (key, data) {\n    var z = this._root;\n    var p = null;\n    var comp = this._compare;\n    var cmp;\n\n    if (this._noDuplicates) {\n      while (z) {\n        p = z;\n        cmp = comp(z.key, key);\n        if (cmp === 0) { return; }\n        else if (comp(z.key, key) < 0) { z = z.right; }\n        else { z = z.left; }\n      }\n    } else {\n      while (z) {\n        p = z;\n        if (comp(z.key, key) < 0) { z = z.right; }\n        else { z = z.left; }\n      }\n    }\n\n    z = { key: key, data: data, left: null, right: null, parent: p };\n\n    if (!p)                        { this._root = z; }\n    else if (comp(p.key, z.key) < 0) { p.right = z; }\n    else                           { p.left= z; }\n\n    this.splay(z);\n    this._size++;\n    return z;\n  };\n\n\n  SplayTree.prototype.find = function find (key) {\n    var z  = this._root;\n    var comp = this._compare;\n    while (z) {\n      var cmp = comp(z.key, key);\n      if    (cmp < 0) { z = z.right; }\n      else if (cmp > 0) { z = z.left; }\n      else            { return z; }\n    }\n    return null;\n  };\n\n  /**\n   * Whether the tree contains a node with the given key\n   * @param{Key} key\n   * @return {boolean} true/false\n   */\n  SplayTree.prototype.contains = function contains (key) {\n    var node     = this._root;\n    var comparator = this._compare;\n    while (node){\n      var cmp = comparator(key, node.key);\n      if    (cmp === 0) { return true; }\n      else if (cmp < 0) { node = node.left; }\n      else              { node = node.right; }\n    }\n\n    return false;\n  };\n\n\n  SplayTree.prototype.remove = function remove (key) {\n    var z = this.find(key);\n\n    if (!z) { return false; }\n\n    this.splay(z);\n\n    if (!z.left) { this.replace(z, z.right); }\n    else if (!z.right) { this.replace(z, z.left); }\n    else {\n      var y = this.minNode(z.right);\n      if (y.parent !== z) {\n        this.replace(y, y.right);\n        y.right = z.right;\n        y.right.parent = y;\n      }\n      this.replace(z, y);\n      y.left = z.left;\n      y.left.parent = y;\n    }\n\n    this._size--;\n    return true;\n  };\n\n\n  SplayTree.prototype.removeNode = function removeNode (z) {\n    if (!z) { return false; }\n\n    this.splay(z);\n\n    if (!z.left) { this.replace(z, z.right); }\n    else if (!z.right) { this.replace(z, z.left); }\n    else {\n      var y = this.minNode(z.right);\n      if (y.parent !== z) {\n        this.replace(y, y.right);\n        y.right = z.right;\n        y.right.parent = y;\n      }\n      this.replace(z, y);\n      y.left = z.left;\n      y.left.parent = y;\n    }\n\n    this._size--;\n    return true;\n  };\n\n\n  SplayTree.prototype.erase = function erase (key) {\n    var z = this.find(key);\n    if (!z) { return; }\n\n    this.splay(z);\n\n    var s = z.left;\n    var t = z.right;\n\n    var sMax = null;\n    if (s) {\n      s.parent = null;\n      sMax = this.maxNode(s);\n      this.splay(sMax);\n      this._root = sMax;\n    }\n    if (t) {\n      if (s) { sMax.right = t; }\n      else { this._root = t; }\n      t.parent = sMax;\n    }\n\n    this._size--;\n  };\n\n  /**\n   * Removes and returns the node with smallest key\n   * @return {?Node}\n   */\n  SplayTree.prototype.pop = function pop () {\n    var node = this._root, returnValue = null;\n    if (node) {\n      while (node.left) { node = node.left; }\n      returnValue = { key: node.key, data: node.data };\n      this.remove(node.key);\n    }\n    return returnValue;\n  };\n\n\n  /* eslint-disable class-methods-use-this */\n\n  /**\n   * Successor node\n   * @param{Node} node\n   * @return {?Node}\n   */\n  SplayTree.prototype.next = function next (node) {\n    var successor = node;\n    if (successor) {\n      if (successor.right) {\n        successor = successor.right;\n        while (successor && successor.left) { successor = successor.left; }\n      } else {\n        successor = node.parent;\n        while (successor && successor.right === node) {\n          node = successor; successor = successor.parent;\n        }\n      }\n    }\n    return successor;\n  };\n\n\n  /**\n   * Predecessor node\n   * @param{Node} node\n   * @return {?Node}\n   */\n  SplayTree.prototype.prev = function prev (node) {\n    var predecessor = node;\n    if (predecessor) {\n      if (predecessor.left) {\n        predecessor = predecessor.left;\n        while (predecessor && predecessor.right) { predecessor = predecessor.right; }\n      } else {\n        predecessor = node.parent;\n        while (predecessor && predecessor.left === node) {\n          node = predecessor;\n          predecessor = predecessor.parent;\n        }\n      }\n    }\n    return predecessor;\n  };\n  /* eslint-enable class-methods-use-this */\n\n\n  /**\n   * @param{forEachCallback} callback\n   * @return {SplayTree}\n   */\n  SplayTree.prototype.forEach = function forEach (callback) {\n    var current = this._root;\n    var s = [], done = false, i = 0;\n\n    while (!done) {\n      // Reach the left most Node of the current Node\n      if (current) {\n        // Place pointer to a tree node on the stack\n        // before traversing the node's left subtree\n        s.push(current);\n        current = current.left;\n      } else {\n        // BackTrack from the empty subtree and visit the Node\n        // at the top of the stack; however, if the stack is\n        // empty you are done\n        if (s.length > 0) {\n          current = s.pop();\n          callback(current, i++);\n\n          // We have visited the node and its left\n          // subtree. Now, it's right subtree's turn\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return this;\n  };\n\n\n  /**\n   * Walk key range from `low` to `high`. Stops if `fn` returns a value.\n   * @param{Key}    low\n   * @param{Key}    high\n   * @param{Function} fn\n   * @param{*?}     ctx\n   * @return {SplayTree}\n   */\n  SplayTree.prototype.range = function range (low, high, fn, ctx) {\n      var this$1 = this;\n\n    var Q = [];\n    var compare = this._compare;\n    var node = this._root, cmp;\n\n    while (Q.length !== 0 || node) {\n      if (node) {\n        Q.push(node);\n        node = node.left;\n      } else {\n        node = Q.pop();\n        cmp = compare(node.key, high);\n        if (cmp > 0) {\n          break;\n        } else if (compare(node.key, low) >= 0) {\n          if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned\n        }\n        node = node.right;\n      }\n    }\n    return this;\n  };\n\n  /**\n   * Returns all keys in order\n   * @return {Array<Key>}\n   */\n  SplayTree.prototype.keys = function keys () {\n    var current = this._root;\n    var s = [], r = [], done = false;\n\n    while (!done) {\n      if (current) {\n        s.push(current);\n        current = current.left;\n      } else {\n        if (s.length > 0) {\n          current = s.pop();\n          r.push(current.key);\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return r;\n  };\n\n\n  /**\n   * Returns `data` fields of all nodes in order.\n   * @return {Array<Value>}\n   */\n  SplayTree.prototype.values = function values () {\n    var current = this._root;\n    var s = [], r = [], done = false;\n\n    while (!done) {\n      if (current) {\n        s.push(current);\n        current = current.left;\n      } else {\n        if (s.length > 0) {\n          current = s.pop();\n          r.push(current.data);\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return r;\n  };\n\n\n  /**\n   * Returns node at given index\n   * @param{number} index\n   * @return {?Node}\n   */\n  SplayTree.prototype.at = function at (index) {\n    // removed after a consideration, more misleading than useful\n    // index = index % this.size;\n    // if (index < 0) index = this.size - index;\n\n    var current = this._root;\n    var s = [], done = false, i = 0;\n\n    while (!done) {\n      if (current) {\n        s.push(current);\n        current = current.left;\n      } else {\n        if (s.length > 0) {\n          current = s.pop();\n          if (i === index) { return current; }\n          i++;\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return null;\n  };\n\n  /**\n   * Bulk-load items. Both array have to be same size\n   * @param{Array<Key>}  keys\n   * @param{Array<Value>}[values]\n   * @param{Boolean}     [presort=false] Pre-sort keys and values, using\n   *                                       tree's comparator. Sorting is done\n   *                                       in-place\n   * @return {AVLTree}\n   */\n  SplayTree.prototype.load = function load (keys, values, presort) {\n      if ( keys === void 0 ) keys = [];\n      if ( values === void 0 ) values = [];\n      if ( presort === void 0 ) presort = false;\n\n    if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); }\n    var size = keys.length;\n    if (presort) { sort(keys, values, 0, size - 1, this._compare); }\n    this._root = loadRecursive(null, keys, values, 0, size);\n    this._size = size;\n    return this;\n  };\n\n\n  SplayTree.prototype.min = function min () {\n    var node = this.minNode(this._root);\n    if (node) { return node.key; }\n    else    { return null; }\n  };\n\n\n  SplayTree.prototype.max = function max () {\n    var node = this.maxNode(this._root);\n    if (node) { return node.key; }\n    else    { return null; }\n  };\n\n  SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; };\n  prototypeAccessors.size.get = function () { return this._size; };\n\n\n  /**\n   * Create a tree and load it with items\n   * @param{Array<Key>}        keys\n   * @param{Array<Value>?}      [values]\n\n   * @param{Function?}          [comparator]\n   * @param{Boolean?}           [presort=false] Pre-sort keys and values, using\n   *                                             tree's comparator. Sorting is done\n   *                                             in-place\n   * @param{Boolean?}           [noDuplicates=false] Allow duplicates\n   * @return {SplayTree}\n   */\n  SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) {\n    return new SplayTree(comparator, noDuplicates).load(keys, values, presort);\n  };\n\n  Object.defineProperties( SplayTree.prototype, prototypeAccessors );\n\n\n  function loadRecursive (parent, keys, values, start, end) {\n    var size = end - start;\n    if (size > 0) {\n      var middle = start + Math.floor(size / 2);\n      var key    = keys[middle];\n      var data   = values[middle];\n      var node   = { key: key, data: data, parent: parent };\n      node.left    = loadRecursive(node, keys, values, start, middle);\n      node.right   = loadRecursive(node, keys, values, middle + 1, end);\n      return node;\n    }\n    return null;\n  }\n\n\n  function sort(keys, values, left, right, compare) {\n    if (left >= right) { return; }\n\n    var pivot = keys[(left + right) >> 1];\n    var i = left - 1;\n    var j = right + 1;\n\n    while (true) {\n      do { i++; } while (compare(keys[i], pivot) < 0);\n      do { j--; } while (compare(keys[j], pivot) > 0);\n      if (i >= j) { break; }\n\n      var tmp = keys[i];\n      keys[i] = keys[j];\n      keys[j] = tmp;\n\n      tmp = values[i];\n      values[i] = values[j];\n      values[j] = tmp;\n    }\n\n    sort(keys, values,  left,     j, compare);\n    sort(keys, values, j + 1, right, compare);\n  }\n\n  var NORMAL               = 0;\n  var NON_CONTRIBUTING     = 1;\n  var SAME_TRANSITION      = 2;\n  var DIFFERENT_TRANSITION = 3;\n\n  var INTERSECTION = 0;\n  var UNION        = 1;\n  var DIFFERENCE   = 2;\n  var XOR          = 3;\n\n  /**\n   * @param  {SweepEvent} event\n   * @param  {SweepEvent} prev\n   * @param  {Operation} operation\n   */\n  function computeFields (event, prev, operation) {\n    // compute inOut and otherInOut fields\n    if (prev === null) {\n      event.inOut      = false;\n      event.otherInOut = true;\n\n    // previous line segment in sweepline belongs to the same polygon\n    } else {\n      if (event.isSubject === prev.isSubject) {\n        event.inOut      = !prev.inOut;\n        event.otherInOut = prev.otherInOut;\n\n      // previous line segment in sweepline belongs to the clipping polygon\n      } else {\n        event.inOut      = !prev.otherInOut;\n        event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;\n      }\n\n      // compute prevInResult field\n      if (prev) {\n        event.prevInResult = (!inResult(prev, operation) || prev.isVertical())\n          ? prev.prevInResult : prev;\n      }\n    }\n\n    // check if the line segment belongs to the Boolean operation\n    event.inResult = inResult(event, operation);\n  }\n\n\n  /* eslint-disable indent */\n  function inResult(event, operation) {\n    switch (event.type) {\n      case NORMAL:\n        switch (operation) {\n          case INTERSECTION:\n            return !event.otherInOut;\n          case UNION:\n            return event.otherInOut;\n          case DIFFERENCE:\n            // return (event.isSubject && !event.otherInOut) ||\n            //         (!event.isSubject && event.otherInOut);\n            return (event.isSubject && event.otherInOut) ||\n                    (!event.isSubject && !event.otherInOut);\n          case XOR:\n            return true;\n        }\n        break;\n      case SAME_TRANSITION:\n        return operation === INTERSECTION || operation === UNION;\n      case DIFFERENT_TRANSITION:\n        return operation === DIFFERENCE;\n      case NON_CONTRIBUTING:\n        return false;\n    }\n    return false;\n  }\n  /* eslint-enable indent */\n\n  var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) {\n\n    /**\n     * Is left endpoint?\n     * @type {Boolean}\n     */\n    this.left = left;\n\n    /**\n     * @type {Array.<Number>}\n     */\n    this.point = point;\n\n    /**\n     * Other edge reference\n     * @type {SweepEvent}\n     */\n    this.otherEvent = otherEvent;\n\n    /**\n     * Belongs to source or clipping polygon\n     * @type {Boolean}\n     */\n    this.isSubject = isSubject;\n\n    /**\n     * Edge contribution type\n     * @type {Number}\n     */\n    this.type = edgeType || NORMAL;\n\n\n    /**\n     * In-out transition for the sweepline crossing polygon\n     * @type {Boolean}\n     */\n    this.inOut = false;\n\n\n    /**\n     * @type {Boolean}\n     */\n    this.otherInOut = false;\n\n    /**\n     * Previous event in result?\n     * @type {SweepEvent}\n     */\n    this.prevInResult = null;\n\n    /**\n     * Does event belong to result?\n     * @type {Boolean}\n     */\n    this.inResult = false;\n\n\n    // connection step\n\n    /**\n     * @type {Boolean}\n     */\n    this.resultInOut = false;\n\n    this.isExteriorRing = true;\n  };\n\n\n  /**\n   * @param{Array.<Number>}p\n   * @return {Boolean}\n   */\n  SweepEvent.prototype.isBelow = function isBelow (p) {\n    var p0 = this.point, p1 = this.otherEvent.point;\n    return this.left\n      ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0\n      // signedArea(this.point, this.otherEvent.point, p) > 0 :\n      : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;\n      //signedArea(this.otherEvent.point, this.point, p) > 0;\n  };\n\n\n  /**\n   * @param{Array.<Number>}p\n   * @return {Boolean}\n   */\n  SweepEvent.prototype.isAbove = function isAbove (p) {\n    return !this.isBelow(p);\n  };\n\n\n  /**\n   * @return {Boolean}\n   */\n  SweepEvent.prototype.isVertical = function isVertical () {\n    return this.point[0] === this.otherEvent.point[0];\n  };\n\n\n  SweepEvent.prototype.clone = function clone () {\n    var copy = new SweepEvent(\n      this.point, this.left, this.otherEvent, this.isSubject, this.type);\n\n    copy.inResult     = this.inResult;\n    copy.prevInResult = this.prevInResult;\n    copy.isExteriorRing = this.isExteriorRing;\n    copy.inOut        = this.inOut;\n    copy.otherInOut   = this.otherInOut;\n\n    return copy;\n  };\n\n  function equals(p1, p2) {\n    if (p1[0] === p2[0]) {\n      if (p1[1] === p2[1]) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n    return false;\n  }\n\n  // const EPSILON = 1e-9;\n  // const abs = Math.abs;\n  // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164\n  // Precision problem.\n  //\n  // module.exports = function equals(p1, p2) {\n  //   return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;\n  // };\n\n  /**\n   * Signed area of the triangle (p0, p1, p2)\n   * @param  {Array.<Number>} p0\n   * @param  {Array.<Number>} p1\n   * @param  {Array.<Number>} p2\n   * @return {Number}\n   */\n  function signedArea(p0, p1, p2) {\n    return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);\n  }\n\n  /**\n   * @param  {SweepEvent} e1\n   * @param  {SweepEvent} e2\n   * @return {Number}\n   */\n  function compareEvents(e1, e2) {\n    var p1 = e1.point;\n    var p2 = e2.point;\n\n    // Different x-coordinate\n    if (p1[0] > p2[0]) { return 1; }\n    if (p1[0] < p2[0]) { return -1; }\n\n    // Different points, but same x-coordinate\n    // Event with lower y-coordinate is processed first\n    if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; }\n\n    return specialCases(e1, e2, p1, p2);\n  }\n\n\n  /* eslint-disable no-unused-vars */\n  function specialCases(e1, e2, p1, p2) {\n    // Same coordinates, but one is a left endpoint and the other is\n    // a right endpoint. The right endpoint is processed first\n    if (e1.left !== e2.left)\n      { return e1.left ? 1 : -1; }\n\n    // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;\n    // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])\n    // Same coordinates, both events\n    // are left endpoints or right endpoints.\n    // not collinear\n    if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) {\n      // the event associate to the bottom segment is processed first\n      return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1;\n    }\n\n    return (!e1.isSubject && e2.isSubject) ? 1 : -1;\n  }\n  /* eslint-enable no-unused-vars */\n\n  /**\n   * @param  {SweepEvent} se\n   * @param  {Array.<Number>} p\n   * @param  {Queue} queue\n   * @return {Queue}\n   */\n  function divideSegment(se, p, queue)  {\n    var r = new SweepEvent(p, false, se,            se.isSubject);\n    var l = new SweepEvent(p, true,  se.otherEvent, se.isSubject);\n\n    /* eslint-disable no-console */\n    if (equals(se.point, se.otherEvent.point)) {\n\n      console.warn('what is that, a collapsed segment?', se);\n    }\n    /* eslint-enable no-console */\n\n    r.contourId = l.contourId = se.contourId;\n\n    // avoid a rounding error. The left event would be processed after the right event\n    if (compareEvents(l, se.otherEvent) > 0) {\n      se.otherEvent.left = true;\n      l.left = false;\n    }\n\n    // avoid a rounding error. The left event would be processed after the right event\n    // if (compareEvents(se, r) > 0) {}\n\n    se.otherEvent.otherEvent = l;\n    se.otherEvent = r;\n\n    queue.push(l);\n    queue.push(r);\n\n    return queue;\n  }\n\n  //const EPS = 1e-9;\n\n  /**\n   * Finds the magnitude of the cross product of two vectors (if we pretend\n   * they're in three dimensions)\n   *\n   * @param {Object} a First vector\n   * @param {Object} b Second vector\n   * @private\n   * @returns {Number} The magnitude of the cross product\n   */\n  function crossProduct(a, b) {\n    return (a[0] * b[1]) - (a[1] * b[0]);\n  }\n\n  /**\n   * Finds the dot product of two vectors.\n   *\n   * @param {Object} a First vector\n   * @param {Object} b Second vector\n   * @private\n   * @returns {Number} The dot product\n   */\n  function dotProduct(a, b) {\n    return (a[0] * b[0]) + (a[1] * b[1]);\n  }\n\n  /**\n   * Finds the intersection (if any) between two line segments a and b, given the\n   * line segments' end points a1, a2 and b1, b2.\n   *\n   * This algorithm is based on Schneider and Eberly.\n   * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf\n   * Page 244.\n   *\n   * @param {Array.<Number>} a1 point of first line\n   * @param {Array.<Number>} a2 point of first line\n   * @param {Array.<Number>} b1 point of second line\n   * @param {Array.<Number>} b2 point of second line\n   * @param {Boolean=}       noEndpointTouch whether to skip single touchpoints\n   *                                         (meaning connected segments) as\n   *                                         intersections\n   * @returns {Array.<Array.<Number>>|Null} If the lines intersect, the point of\n   * intersection. If they overlap, the two end points of the overlapping segment.\n   * Otherwise, null.\n   */\n  function intersection (a1, a2, b1, b2, noEndpointTouch) {\n    // The algorithm expects our lines in the form P + sd, where P is a point,\n    // s is on the interval [0, 1], and d is a vector.\n    // We are passed two points. P can be the first point of each pair. The\n    // vector, then, could be thought of as the distance (in x and y components)\n    // from the first point to the second point.\n    // So first, let's make our vectors:\n    var va = [a2[0] - a1[0], a2[1] - a1[1]];\n    var vb = [b2[0] - b1[0], b2[1] - b1[1]];\n    // We also define a function to convert back to regular point form:\n\n    /* eslint-disable arrow-body-style */\n\n    function toPoint(p, s, d) {\n      return [\n        p[0] + s * d[0],\n        p[1] + s * d[1]\n      ];\n    }\n\n    /* eslint-enable arrow-body-style */\n\n    // The rest is pretty much a straight port of the algorithm.\n    var e = [b1[0] - a1[0], b1[1] - a1[1]];\n    var kross    = crossProduct(va, vb);\n    var sqrKross = kross * kross;\n    var sqrLenA  = dotProduct(va, va);\n    //const sqrLenB  = dotProduct(vb, vb);\n\n    // Check for line intersection. This works because of the properties of the\n    // cross product -- specifically, two vectors are parallel if and only if the\n    // cross product is the 0 vector. The full calculation involves relative error\n    // to account for possible very small line segments. See Schneider & Eberly\n    // for details.\n    if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) {\n      // If they're not parallel, then (because these are line segments) they\n      // still might not actually intersect. This code checks that the\n      // intersection point of the lines is actually on both line segments.\n      var s = crossProduct(e, vb) / kross;\n      if (s < 0 || s > 1) {\n        // not on line segment a\n        return null;\n      }\n      var t = crossProduct(e, va) / kross;\n      if (t < 0 || t > 1) {\n        // not on line segment b\n        return null;\n      }\n      if (s === 0 || s === 1) {\n        // on an endpoint of line segment a\n        return noEndpointTouch ? null : [toPoint(a1, s, va)];\n      }\n      if (t === 0 || t === 1) {\n        // on an endpoint of line segment b\n        return noEndpointTouch ? null : [toPoint(b1, t, vb)];\n      }\n      return [toPoint(a1, s, va)];\n    }\n\n    // If we've reached this point, then the lines are either parallel or the\n    // same, but the segments could overlap partially or fully, or not at all.\n    // So we need to find the overlap, if any. To do that, we can use e, which is\n    // the (vector) difference between the two initial points. If this is parallel\n    // with the line itself, then the two lines are the same line, and there will\n    // be overlap.\n    //const sqrLenE = dotProduct(e, e);\n    kross = crossProduct(e, va);\n    sqrKross = kross * kross;\n\n    if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) {\n    // Lines are just parallel, not the same. No overlap.\n      return null;\n    }\n\n    var sa = dotProduct(va, e) / sqrLenA;\n    var sb = sa + dotProduct(va, vb) / sqrLenA;\n    var smin = Math.min(sa, sb);\n    var smax = Math.max(sa, sb);\n\n    // this is, essentially, the FindIntersection acting on floats from\n    // Schneider & Eberly, just inlined into this function.\n    if (smin <= 1 && smax >= 0) {\n\n      // overlap on an end point\n      if (smin === 1) {\n        return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)];\n      }\n\n      if (smax === 0) {\n        return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)];\n      }\n\n      if (noEndpointTouch && smin === 0 && smax === 1) { return null; }\n\n      // There's overlap on a segment -- two points of intersection. Return both.\n      return [\n        toPoint(a1, smin > 0 ? smin : 0, va),\n        toPoint(a1, smax < 1 ? smax : 1, va)\n      ];\n    }\n\n    return null;\n  }\n\n  /**\n   * @param  {SweepEvent} se1\n   * @param  {SweepEvent} se2\n   * @param  {Queue}      queue\n   * @return {Number}\n   */\n  function possibleIntersection (se1, se2, queue) {\n    // that disallows self-intersecting polygons,\n    // did cost us half a day, so I'll leave it\n    // out of respect\n    // if (se1.isSubject === se2.isSubject) return;\n    var inter = intersection(\n      se1.point, se1.otherEvent.point,\n      se2.point, se2.otherEvent.point\n    );\n\n    var nintersections = inter ? inter.length : 0;\n    if (nintersections === 0) { return 0; } // no intersection\n\n    // the line segments intersect at an endpoint of both line segments\n    if ((nintersections === 1) &&\n        (equals(se1.point, se2.point) ||\n         equals(se1.otherEvent.point, se2.otherEvent.point))) {\n      return 0;\n    }\n\n    if (nintersections === 2 && se1.isSubject === se2.isSubject) {\n      // if(se1.contourId === se2.contourId){\n      // console.warn('Edges of the same polygon overlap',\n      //   se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n      // }\n      //throw new Error('Edges of the same polygon overlap');\n      return 0;\n    }\n\n    // The line segments associated to se1 and se2 intersect\n    if (nintersections === 1) {\n\n      // if the intersection point is not an endpoint of se1\n      if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) {\n        divideSegment(se1, inter[0], queue);\n      }\n\n      // if the intersection point is not an endpoint of se2\n      if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) {\n        divideSegment(se2, inter[0], queue);\n      }\n      return 1;\n    }\n\n    // The line segments associated to se1 and se2 overlap\n    var events        = [];\n    var leftCoincide  = false;\n    var rightCoincide = false;\n\n    if (equals(se1.point, se2.point)) {\n      leftCoincide = true; // linked\n    } else if (compareEvents(se1, se2) === 1) {\n      events.push(se2, se1);\n    } else {\n      events.push(se1, se2);\n    }\n\n    if (equals(se1.otherEvent.point, se2.otherEvent.point)) {\n      rightCoincide = true;\n    } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) {\n      events.push(se2.otherEvent, se1.otherEvent);\n    } else {\n      events.push(se1.otherEvent, se2.otherEvent);\n    }\n\n    if ((leftCoincide && rightCoincide) || leftCoincide) {\n      // both line segments are equal or share the left endpoint\n      se2.type = NON_CONTRIBUTING;\n      se1.type = (se2.inOut === se1.inOut)\n        ? SAME_TRANSITION : DIFFERENT_TRANSITION;\n\n      if (leftCoincide && !rightCoincide) {\n        // honestly no idea, but changing events selection from [2, 1]\n        // to [0, 1] fixes the overlapping self-intersecting polygons issue\n        divideSegment(events[1].otherEvent, events[0].point, queue);\n      }\n      return 2;\n    }\n\n    // the line segments share the right endpoint\n    if (rightCoincide) {\n      divideSegment(events[0], events[1].point, queue);\n      return 3;\n    }\n\n    // no line segment includes totally the other one\n    if (events[0] !== events[3].otherEvent) {\n      divideSegment(events[0], events[1].point, queue);\n      divideSegment(events[1], events[2].point, queue);\n      return 3;\n    }\n\n    // one line segment includes the other one\n    divideSegment(events[0], events[1].point, queue);\n    divideSegment(events[3].otherEvent, events[2].point, queue);\n\n    return 3;\n  }\n\n  /**\n   * @param  {SweepEvent} le1\n   * @param  {SweepEvent} le2\n   * @return {Number}\n   */\n  function compareSegments(le1, le2) {\n    if (le1 === le2) { return 0; }\n\n    // Segments are not collinear\n    if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 ||\n      signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {\n\n      // If they share their left endpoint use the right endpoint to sort\n      if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; }\n\n      // Different left endpoint: use the left endpoint to sort\n      if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; }\n\n      // has the line segment associated to e1 been inserted\n      // into S after the line segment associated to e2 ?\n      if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; }\n\n      // The line segment associated to e2 has been inserted\n      // into S after the line segment associated to e1\n      return le1.isBelow(le2.point) ? -1 : 1;\n    }\n\n    if (le1.isSubject === le2.isSubject) { // same polygon\n      var p1 = le1.point, p2 = le2.point;\n      if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) {\n        p1 = le1.otherEvent.point; p2 = le2.otherEvent.point;\n        if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; }\n        else { return le1.contourId > le2.contourId ? 1 : -1; }\n      }\n    } else { // Segments are collinear, but belong to separate polygons\n      return le1.isSubject ? -1 : 1;\n    }\n\n    return compareEvents(le1, le2) === 1 ? 1 : -1;\n  }\n\n  function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {\n    var sweepLine = new SplayTree(compareSegments);\n    var sortedEvents = [];\n\n    var rightbound = Math.min(sbbox[2], cbbox[2]);\n\n    var prev, next, begin;\n\n    while (eventQueue.length !== 0) {\n      var event = eventQueue.pop();\n      sortedEvents.push(event);\n\n      // optimization by bboxes for intersection and difference goes here\n      if ((operation === INTERSECTION && event.point[0] > rightbound) ||\n          (operation === DIFFERENCE   && event.point[0] > sbbox[2])) {\n        break;\n      }\n\n      if (event.left) {\n        next  = prev = sweepLine.insert(event);\n        begin = sweepLine.minNode();\n\n        if (prev !== begin) { prev = sweepLine.prev(prev); }\n        else                { prev = null; }\n\n        next = sweepLine.next(next);\n\n        var prevEvent = prev ? prev.key : null;\n        var prevprevEvent = (void 0);\n        computeFields(event, prevEvent, operation);\n        if (next) {\n          if (possibleIntersection(event, next.key, eventQueue) === 2) {\n            computeFields(event, prevEvent, operation);\n            computeFields(event, next.key, operation);\n          }\n        }\n\n        if (prev) {\n          if (possibleIntersection(prev.key, event, eventQueue) === 2) {\n            var prevprev = prev;\n            if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); }\n            else                    { prevprev = null; }\n\n            prevprevEvent = prevprev ? prevprev.key : null;\n            computeFields(prevEvent, prevprevEvent, operation);\n            computeFields(event,     prevEvent,     operation);\n          }\n        }\n      } else {\n        event = event.otherEvent;\n        next = prev = sweepLine.find(event);\n\n        if (prev && next) {\n\n          if (prev !== begin) { prev = sweepLine.prev(prev); }\n          else                { prev = null; }\n\n          next = sweepLine.next(next);\n          sweepLine.remove(event);\n\n          if (next && prev) {\n            possibleIntersection(prev.key, next.key, eventQueue);\n          }\n        }\n      }\n    }\n    return sortedEvents;\n  }\n\n  /**\n   * @param  {Array.<SweepEvent>} sortedEvents\n   * @return {Array.<SweepEvent>}\n   */\n  function orderEvents(sortedEvents) {\n    var event, i, len, tmp;\n    var resultEvents = [];\n    for (i = 0, len = sortedEvents.length; i < len; i++) {\n      event = sortedEvents[i];\n      if ((event.left && event.inResult) ||\n        (!event.left && event.otherEvent.inResult)) {\n        resultEvents.push(event);\n      }\n    }\n    // Due to overlapping edges the resultEvents array can be not wholly sorted\n    var sorted = false;\n    while (!sorted) {\n      sorted = true;\n      for (i = 0, len = resultEvents.length; i < len; i++) {\n        if ((i + 1) < len &&\n          compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {\n          tmp = resultEvents[i];\n          resultEvents[i] = resultEvents[i + 1];\n          resultEvents[i + 1] = tmp;\n          sorted = false;\n        }\n      }\n    }\n\n\n    for (i = 0, len = resultEvents.length; i < len; i++) {\n      event = resultEvents[i];\n      event.pos = i;\n    }\n\n    // imagine, the right event is found in the beginning of the queue,\n    // when his left counterpart is not marked yet\n    for (i = 0, len = resultEvents.length; i < len; i++) {\n      event = resultEvents[i];\n      if (!event.left) {\n        tmp = event.pos;\n        event.pos = event.otherEvent.pos;\n        event.otherEvent.pos = tmp;\n      }\n    }\n\n    return resultEvents;\n  }\n\n\n  /**\n   * @param  {Number} pos\n   * @param  {Array.<SweepEvent>} resultEvents\n   * @param  {Object>}    processed\n   * @return {Number}\n   */\n  function nextPos(pos, resultEvents, processed, origIndex) {\n    var p, p1;\n    var newPos = pos + 1;\n    var length = resultEvents.length;\n\n    p  = resultEvents[pos].point;\n\n    if (newPos < length)\n      { p1 = resultEvents[newPos].point; }\n\n\n    // while in range and not the current one by value\n    while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) {\n      if (!processed[newPos]) {\n        return newPos;\n      } else   {\n        newPos++;\n      }\n      p1 = resultEvents[newPos].point;\n    }\n\n    newPos = pos - 1;\n\n    while (processed[newPos] && newPos >= origIndex) {\n      newPos--;\n    }\n    return newPos;\n  }\n\n\n  /**\n   * @param  {Array.<SweepEvent>} sortedEvents\n   * @return {Array.<*>} polygons\n   */\n  function connectEdges(sortedEvents, operation) {\n    var i, len;\n    var resultEvents = orderEvents(sortedEvents);\n\n    // \"false\"-filled array\n    var processed = {};\n    var result = [];\n    var event;\n\n    for (i = 0, len = resultEvents.length; i < len; i++) {\n      if (processed[i]) { continue; }\n      var contour = [[]];\n\n      if (!resultEvents[i].isExteriorRing) {\n        if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) {\n          result.push(contour);\n        } else if (result.length === 0) {\n          result.push([[contour]]);\n        } else {\n          result[result.length - 1].push(contour[0]);\n        }\n      } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) {\n        result[result.length - 1].push(contour[0]);\n      } else {\n        result.push(contour);\n      }\n\n      var ringId = result.length - 1;\n      var pos = i;\n\n      var initial = resultEvents[i].point;\n      contour[0].push(initial);\n\n      while (pos >= i) {\n        event = resultEvents[pos];\n        processed[pos] = true;\n\n        if (event.left) {\n          event.resultInOut = false;\n          event.contourId   = ringId;\n        } else {\n          event.otherEvent.resultInOut = true;\n          event.otherEvent.contourId   = ringId;\n        }\n\n        pos = event.pos;\n        processed[pos] = true;\n        contour[0].push(resultEvents[pos].point);\n        pos = nextPos(pos, resultEvents, processed, i);\n      }\n\n      pos = pos === -1 ? i : pos;\n\n      event = resultEvents[pos];\n      processed[pos] = processed[event.pos] = true;\n      event.otherEvent.resultInOut = true;\n      event.otherEvent.contourId   = ringId;\n    }\n\n    // Handle if the result is a polygon (eg not multipoly)\n    // Commented it again, let's see what do we mean by that\n    // if (result.length === 1) result = result[0];\n    return result;\n  }\n\n  var tinyqueue = TinyQueue;\n  var default_1 = TinyQueue;\n\n  function TinyQueue(data, compare) {\n      var this$1 = this;\n\n      if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); }\n\n      this.data = data || [];\n      this.length = this.data.length;\n      this.compare = compare || defaultCompare;\n\n      if (this.length > 0) {\n          for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); }\n      }\n  }\n\n  function defaultCompare(a, b) {\n      return a < b ? -1 : a > b ? 1 : 0;\n  }\n\n  TinyQueue.prototype = {\n\n      push: function (item) {\n          this.data.push(item);\n          this.length++;\n          this._up(this.length - 1);\n      },\n\n      pop: function () {\n          if (this.length === 0) { return undefined; }\n\n          var top = this.data[0];\n          this.length--;\n\n          if (this.length > 0) {\n              this.data[0] = this.data[this.length];\n              this._down(0);\n          }\n          this.data.pop();\n\n          return top;\n      },\n\n      peek: function () {\n          return this.data[0];\n      },\n\n      _up: function (pos) {\n          var data = this.data;\n          var compare = this.compare;\n          var item = data[pos];\n\n          while (pos > 0) {\n              var parent = (pos - 1) >> 1;\n              var current = data[parent];\n              if (compare(item, current) >= 0) { break; }\n              data[pos] = current;\n              pos = parent;\n          }\n\n          data[pos] = item;\n      },\n\n      _down: function (pos) {\n          var this$1 = this;\n\n          var data = this.data;\n          var compare = this.compare;\n          var halfLength = this.length >> 1;\n          var item = data[pos];\n\n          while (pos < halfLength) {\n              var left = (pos << 1) + 1;\n              var right = left + 1;\n              var best = data[left];\n\n              if (right < this$1.length && compare(data[right], best) < 0) {\n                  left = right;\n                  best = data[right];\n              }\n              if (compare(best, item) >= 0) { break; }\n\n              data[pos] = best;\n              pos = left;\n          }\n\n          data[pos] = item;\n      }\n  };\n  tinyqueue.default = default_1;\n\n  var max = Math.max;\n  var min = Math.min;\n\n  var contourId = 0;\n\n\n  function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {\n    var i, len, s1, s2, e1, e2;\n    for (i = 0, len = contourOrHole.length - 1; i < len; i++) {\n      s1 = contourOrHole[i];\n      s2 = contourOrHole[i + 1];\n      e1 = new SweepEvent(s1, false, undefined, isSubject);\n      e2 = new SweepEvent(s2, false, e1,        isSubject);\n      e1.otherEvent = e2;\n\n      if (s1[0] === s2[0] && s1[1] === s2[1]) {\n        continue; // skip collapsed edges, or it breaks\n      }\n\n      e1.contourId = e2.contourId = depth;\n      if (!isExteriorRing) {\n        e1.isExteriorRing = false;\n        e2.isExteriorRing = false;\n      }\n      if (compareEvents(e1, e2) > 0) {\n        e2.left = true;\n      } else {\n        e1.left = true;\n      }\n\n      var x = s1[0], y = s1[1];\n      bbox[0] = min(bbox[0], x);\n      bbox[1] = min(bbox[1], y);\n      bbox[2] = max(bbox[2], x);\n      bbox[3] = max(bbox[3], y);\n\n      // Pushing it so the queue is sorted from left to right,\n      // with object on the left having the highest priority.\n      Q.push(e1);\n      Q.push(e2);\n    }\n  }\n\n\n  function fillQueue(subject, clipping, sbbox, cbbox, operation) {\n    var eventQueue = new tinyqueue(null, compareEvents);\n    var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;\n\n    for (i = 0, ii = subject.length; i < ii; i++) {\n      polygonSet = subject[i];\n      for (j = 0, jj = polygonSet.length; j < jj; j++) {\n        isExteriorRing = j === 0;\n        if (isExteriorRing) { contourId++; }\n        processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);\n      }\n    }\n\n    for (i = 0, ii = clipping.length; i < ii; i++) {\n      polygonSet = clipping[i];\n      for (j = 0, jj = polygonSet.length; j < jj; j++) {\n        isExteriorRing = j === 0;\n        if (operation === DIFFERENCE) { isExteriorRing = false; }\n        if (isExteriorRing) { contourId++; }\n        processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);\n      }\n    }\n\n    return eventQueue;\n  }\n\n  var EMPTY = [];\n\n\n  function trivialOperation(subject, clipping, operation) {\n    var result = null;\n    if (subject.length * clipping.length === 0) {\n      if        (operation === INTERSECTION) {\n        result = EMPTY;\n      } else if (operation === DIFFERENCE) {\n        result = subject;\n      } else if (operation === UNION ||\n                 operation === XOR) {\n        result = (subject.length === 0) ? clipping : subject;\n      }\n    }\n    return result;\n  }\n\n\n  function compareBBoxes(subject, clipping, sbbox, cbbox, operation) {\n    var result = null;\n    if (sbbox[0] > cbbox[2] ||\n        cbbox[0] > sbbox[2] ||\n        sbbox[1] > cbbox[3] ||\n        cbbox[1] > sbbox[3]) {\n      if        (operation === INTERSECTION) {\n        result = EMPTY;\n      } else if (operation === DIFFERENCE) {\n        result = subject;\n      } else if (operation === UNION ||\n                 operation === XOR) {\n        result = subject.concat(clipping);\n      }\n    }\n    return result;\n  }\n\n\n  function boolean(subject, clipping, operation) {\n    if (typeof subject[0][0][0] === 'number') {\n      subject = [subject];\n    }\n    if (typeof clipping[0][0][0] === 'number') {\n      clipping = [clipping];\n    }\n    var trivial = trivialOperation(subject, clipping, operation);\n    if (trivial) {\n      return trivial === EMPTY ? null : trivial;\n    }\n    var sbbox = [Infinity, Infinity, -Infinity, -Infinity];\n    var cbbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n    //console.time('fill queue');\n    var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);\n    //console.timeEnd('fill queue');\n\n    trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);\n    if (trivial) {\n      return trivial === EMPTY ? null : trivial;\n    }\n    //console.time('subdivide edges');\n    var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation);\n    //console.timeEnd('subdivide edges');\n\n    //console.time('connect vertices');\n    var result = connectEdges(sortedEvents, operation);\n    //console.timeEnd('connect vertices');\n    return result;\n  }\n\n  function union (subject, clipping) {\n    return boolean(subject, clipping, UNION);\n  }\n\n  function diff (subject, clipping) {\n    return boolean(subject, clipping, DIFFERENCE);\n  }\n\n  function xor (subject, clipping){\n    return boolean(subject, clipping, XOR);\n  }\n\n  function intersection$1 (subject, clipping) {\n    return boolean(subject, clipping, INTERSECTION);\n  }\n\n  /**\n   * @enum {Number}\n   */\n  var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR };\n\n  exports.union = union;\n  exports.diff = diff;\n  exports.xor = xor;\n  exports.intersection = intersection$1;\n  exports.operations = operations;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=martinez.umd.js.map\n",
     "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n  return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n  var result = splitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n  var f = splitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nexports.extname = function(path) {\n  return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n",
     "'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n    this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n    this.pos = 0;\n    this.type = 0;\n    this.length = this.buf.length;\n}\n\nPbf.Varint  = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes   = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n    SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\nPbf.prototype = {\n\n    destroy: function() {\n        this.buf = null;\n    },\n\n    // === READING =================================================================\n\n    readFields: function(readField, result, end) {\n        end = end || this.length;\n\n        while (this.pos < end) {\n            var val = this.readVarint(),\n                tag = val >> 3,\n                startPos = this.pos;\n\n            this.type = val & 0x7;\n            readField(tag, result, this);\n\n            if (this.pos === startPos) this.skip(val);\n        }\n        return result;\n    },\n\n    readMessage: function(readField, result) {\n        return this.readFields(readField, result, this.readVarint() + this.pos);\n    },\n\n    readFixed32: function() {\n        var val = readUInt32(this.buf, this.pos);\n        this.pos += 4;\n        return val;\n    },\n\n    readSFixed32: function() {\n        var val = readInt32(this.buf, this.pos);\n        this.pos += 4;\n        return val;\n    },\n\n    // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n    readFixed64: function() {\n        var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    },\n\n    readSFixed64: function() {\n        var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    },\n\n    readFloat: function() {\n        var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n        this.pos += 4;\n        return val;\n    },\n\n    readDouble: function() {\n        var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n        this.pos += 8;\n        return val;\n    },\n\n    readVarint: function(isSigned) {\n        var buf = this.buf,\n            val, b;\n\n        b = buf[this.pos++]; val  =  b & 0x7f;        if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 7;  if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n        b = buf[this.pos];   val |= (b & 0x0f) << 28;\n\n        return readVarintRemainder(val, isSigned, this);\n    },\n\n    readVarint64: function() { // for compatibility with v2.0.1\n        return this.readVarint(true);\n    },\n\n    readSVarint: function() {\n        var num = this.readVarint();\n        return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n    },\n\n    readBoolean: function() {\n        return Boolean(this.readVarint());\n    },\n\n    readString: function() {\n        var end = this.readVarint() + this.pos,\n            str = readUtf8(this.buf, this.pos, end);\n        this.pos = end;\n        return str;\n    },\n\n    readBytes: function() {\n        var end = this.readVarint() + this.pos,\n            buffer = this.buf.subarray(this.pos, end);\n        this.pos = end;\n        return buffer;\n    },\n\n    // verbose for performance reasons; doesn't affect gzipped size\n\n    readPackedVarint: function(arr, isSigned) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readVarint(isSigned));\n        return arr;\n    },\n    readPackedSVarint: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readSVarint());\n        return arr;\n    },\n    readPackedBoolean: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readBoolean());\n        return arr;\n    },\n    readPackedFloat: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readFloat());\n        return arr;\n    },\n    readPackedDouble: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readDouble());\n        return arr;\n    },\n    readPackedFixed32: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readFixed32());\n        return arr;\n    },\n    readPackedSFixed32: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readSFixed32());\n        return arr;\n    },\n    readPackedFixed64: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readFixed64());\n        return arr;\n    },\n    readPackedSFixed64: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readSFixed64());\n        return arr;\n    },\n\n    skip: function(val) {\n        var type = val & 0x7;\n        if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n        else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n        else if (type === Pbf.Fixed32) this.pos += 4;\n        else if (type === Pbf.Fixed64) this.pos += 8;\n        else throw new Error('Unimplemented type: ' + type);\n    },\n\n    // === WRITING =================================================================\n\n    writeTag: function(tag, type) {\n        this.writeVarint((tag << 3) | type);\n    },\n\n    realloc: function(min) {\n        var length = this.length || 16;\n\n        while (length < this.pos + min) length *= 2;\n\n        if (length !== this.length) {\n            var buf = new Uint8Array(length);\n            buf.set(this.buf);\n            this.buf = buf;\n            this.length = length;\n        }\n    },\n\n    finish: function() {\n        this.length = this.pos;\n        this.pos = 0;\n        return this.buf.subarray(0, this.length);\n    },\n\n    writeFixed32: function(val) {\n        this.realloc(4);\n        writeInt32(this.buf, val, this.pos);\n        this.pos += 4;\n    },\n\n    writeSFixed32: function(val) {\n        this.realloc(4);\n        writeInt32(this.buf, val, this.pos);\n        this.pos += 4;\n    },\n\n    writeFixed64: function(val) {\n        this.realloc(8);\n        writeInt32(this.buf, val & -1, this.pos);\n        writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n        this.pos += 8;\n    },\n\n    writeSFixed64: function(val) {\n        this.realloc(8);\n        writeInt32(this.buf, val & -1, this.pos);\n        writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n        this.pos += 8;\n    },\n\n    writeVarint: function(val) {\n        val = +val || 0;\n\n        if (val > 0xfffffff || val < 0) {\n            writeBigVarint(val, this);\n            return;\n        }\n\n        this.realloc(4);\n\n        this.buf[this.pos++] =           val & 0x7f  | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] =   (val >>> 7) & 0x7f;\n    },\n\n    writeSVarint: function(val) {\n        this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n    },\n\n    writeBoolean: function(val) {\n        this.writeVarint(Boolean(val));\n    },\n\n    writeString: function(str) {\n        str = String(str);\n        this.realloc(str.length * 4);\n\n        this.pos++; // reserve 1 byte for short string length\n\n        var startPos = this.pos;\n        // write the string directly to the buffer and see how much was written\n        this.pos = writeUtf8(this.buf, str, this.pos);\n        var len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    },\n\n    writeFloat: function(val) {\n        this.realloc(4);\n        ieee754.write(this.buf, val, this.pos, true, 23, 4);\n        this.pos += 4;\n    },\n\n    writeDouble: function(val) {\n        this.realloc(8);\n        ieee754.write(this.buf, val, this.pos, true, 52, 8);\n        this.pos += 8;\n    },\n\n    writeBytes: function(buffer) {\n        var len = buffer.length;\n        this.writeVarint(len);\n        this.realloc(len);\n        for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n    },\n\n    writeRawMessage: function(fn, obj) {\n        this.pos++; // reserve 1 byte for short message length\n\n        // write the message directly to the buffer and see how much was written\n        var startPos = this.pos;\n        fn(obj, this);\n        var len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    },\n\n    writeMessage: function(tag, fn, obj) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeRawMessage(fn, obj);\n    },\n\n    writePackedVarint:   function(tag, arr) { this.writeMessage(tag, writePackedVarint, arr);   },\n    writePackedSVarint:  function(tag, arr) { this.writeMessage(tag, writePackedSVarint, arr);  },\n    writePackedBoolean:  function(tag, arr) { this.writeMessage(tag, writePackedBoolean, arr);  },\n    writePackedFloat:    function(tag, arr) { this.writeMessage(tag, writePackedFloat, arr);    },\n    writePackedDouble:   function(tag, arr) { this.writeMessage(tag, writePackedDouble, arr);   },\n    writePackedFixed32:  function(tag, arr) { this.writeMessage(tag, writePackedFixed32, arr);  },\n    writePackedSFixed32: function(tag, arr) { this.writeMessage(tag, writePackedSFixed32, arr); },\n    writePackedFixed64:  function(tag, arr) { this.writeMessage(tag, writePackedFixed64, arr);  },\n    writePackedSFixed64: function(tag, arr) { this.writeMessage(tag, writePackedSFixed64, arr); },\n\n    writeBytesField: function(tag, buffer) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeBytes(buffer);\n    },\n    writeFixed32Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeFixed32(val);\n    },\n    writeSFixed32Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeSFixed32(val);\n    },\n    writeFixed64Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeFixed64(val);\n    },\n    writeSFixed64Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeSFixed64(val);\n    },\n    writeVarintField: function(tag, val) {\n        this.writeTag(tag, Pbf.Varint);\n        this.writeVarint(val);\n    },\n    writeSVarintField: function(tag, val) {\n        this.writeTag(tag, Pbf.Varint);\n        this.writeSVarint(val);\n    },\n    writeStringField: function(tag, str) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeString(str);\n    },\n    writeFloatField: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeFloat(val);\n    },\n    writeDoubleField: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeDouble(val);\n    },\n    writeBooleanField: function(tag, val) {\n        this.writeVarintField(tag, Boolean(val));\n    }\n};\n\nfunction readVarintRemainder(l, s, p) {\n    var buf = p.buf,\n        h, b;\n\n    b = buf[p.pos++]; h  = (b & 0x70) >> 4;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 3;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n    throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n    return pbf.type === Pbf.Bytes ?\n        pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n    if (isSigned) {\n        return high * 0x100000000 + (low >>> 0);\n    }\n\n    return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n    var low, high;\n\n    if (val >= 0) {\n        low  = (val % 0x100000000) | 0;\n        high = (val / 0x100000000) | 0;\n    } else {\n        low  = ~(-val % 0x100000000);\n        high = ~(-val / 0x100000000);\n\n        if (low ^ 0xffffffff) {\n            low = (low + 1) | 0;\n        } else {\n            low = 0;\n            high = (high + 1) | 0;\n        }\n    }\n\n    if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n        throw new Error('Given varint doesn\\'t fit into 10 bytes');\n    }\n\n    pbf.realloc(10);\n\n    writeBigVarintLow(low, high, pbf);\n    writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos]   = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n    var lsb = (high & 0x07) << 4;\n\n    pbf.buf[pbf.pos++] |= lsb         | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n    var extraLen =\n        len <= 0x3fff ? 1 :\n        len <= 0x1fffff ? 2 :\n        len <= 0xfffffff ? 3 : Math.ceil(Math.log(len) / (Math.LN2 * 7));\n\n    // if 1 byte isn't enough for encoding message length, shift the data to the right\n    pbf.realloc(extraLen);\n    for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf)   { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]);   }\nfunction writePackedSVarint(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]);  }\nfunction writePackedFloat(arr, pbf)    { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]);    }\nfunction writePackedDouble(arr, pbf)   { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]);   }\nfunction writePackedBoolean(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]);  }\nfunction writePackedFixed32(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]);  }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]);  }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n    return ((buf[pos]) |\n        (buf[pos + 1] << 8) |\n        (buf[pos + 2] << 16)) +\n        (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n    buf[pos] = val;\n    buf[pos + 1] = (val >>> 8);\n    buf[pos + 2] = (val >>> 16);\n    buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n    return ((buf[pos]) |\n        (buf[pos + 1] << 8) |\n        (buf[pos + 2] << 16)) +\n        (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n    var str = '';\n    var i = pos;\n\n    while (i < end) {\n        var b0 = buf[i];\n        var c = null; // codepoint\n        var bytesPerSequence =\n            b0 > 0xEF ? 4 :\n            b0 > 0xDF ? 3 :\n            b0 > 0xBF ? 2 : 1;\n\n        if (i + bytesPerSequence > end) break;\n\n        var b1, b2, b3;\n\n        if (bytesPerSequence === 1) {\n            if (b0 < 0x80) {\n                c = b0;\n            }\n        } else if (bytesPerSequence === 2) {\n            b1 = buf[i + 1];\n            if ((b1 & 0xC0) === 0x80) {\n                c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n                if (c <= 0x7F) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 3) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n                if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 4) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            b3 = buf[i + 3];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n                if (c <= 0xFFFF || c >= 0x110000) {\n                    c = null;\n                }\n            }\n        }\n\n        if (c === null) {\n            c = 0xFFFD;\n            bytesPerSequence = 1;\n\n        } else if (c > 0xFFFF) {\n            c -= 0x10000;\n            str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n            c = 0xDC00 | c & 0x3FF;\n        }\n\n        str += String.fromCharCode(c);\n        i += bytesPerSequence;\n    }\n\n    return str;\n}\n\nfunction writeUtf8(buf, str, pos) {\n    for (var i = 0, c, lead; i < str.length; i++) {\n        c = str.charCodeAt(i); // code point\n\n        if (c > 0xD7FF && c < 0xE000) {\n            if (lead) {\n                if (c < 0xDC00) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                    lead = c;\n                    continue;\n                } else {\n                    c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n                    lead = null;\n                }\n            } else {\n                if (c > 0xDBFF || (i + 1 === str.length)) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                } else {\n                    lead = c;\n                }\n                continue;\n            }\n        } else if (lead) {\n            buf[pos++] = 0xEF;\n            buf[pos++] = 0xBF;\n            buf[pos++] = 0xBD;\n            lead = null;\n        }\n\n        if (c < 0x80) {\n            buf[pos++] = c;\n        } else {\n            if (c < 0x800) {\n                buf[pos++] = c >> 0x6 | 0xC0;\n            } else {\n                if (c < 0x10000) {\n                    buf[pos++] = c >> 0xC | 0xE0;\n                } else {\n                    buf[pos++] = c >> 0x12 | 0xF0;\n                    buf[pos++] = c >> 0xC & 0x3F | 0x80;\n                }\n                buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n            }\n            buf[pos++] = c & 0x3F | 0x80;\n        }\n    }\n    return pos;\n}\n",
     "(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.quickselect = factory());\n}(this, (function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n    quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            var n = right - left + 1;\n            var m = k - left + 1;\n            var z = Math.log(n);\n            var s = 0.5 * Math.exp(2 * z / 3);\n            var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselectStep(arr, k, newLeft, newRight, compare);\n        }\n\n        var t = arr[k];\n        var i = left;\n        var j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\nfunction swap(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\nreturn quickselect;\n\n})));\n",
     "/** @license MIT License (c) copyright 2010-2014 original author or authors */\n\n/**\n * Promises/A+ and when() implementation\n * when is part of the cujoJS family of libraries (http://cujojs.com/)\n * @author Brian Cavalier\n * @author John Hann\n */\n(function(define) { 'use strict';\ndefine(function (require) {\n\n\tvar timed = require('./lib/decorators/timed');\n\tvar array = require('./lib/decorators/array');\n\tvar flow = require('./lib/decorators/flow');\n\tvar fold = require('./lib/decorators/fold');\n\tvar inspect = require('./lib/decorators/inspect');\n\tvar generate = require('./lib/decorators/iterate');\n\tvar progress = require('./lib/decorators/progress');\n\tvar withThis = require('./lib/decorators/with');\n\tvar unhandledRejection = require('./lib/decorators/unhandledRejection');\n\tvar TimeoutError = require('./lib/TimeoutError');\n\n\tvar Promise = [array, flow, fold, generate, progress,\n\t\tinspect, withThis, timed, unhandledRejection]\n\t\t.reduce(function(Promise, feature) {\n\t\t\treturn feature(Promise);\n\t\t}, require('./lib/Promise'));\n\n\tvar apply = require('./lib/apply')(Promise);\n\n\t// Public API\n\n\twhen.promise     = promise;              // Create a pending promise\n\twhen.resolve     = Promise.resolve;      // Create a resolved promise\n\twhen.reject      = Promise.reject;       // Create a rejected promise\n\n\twhen.lift        = lift;                 // lift a function to return promises\n\twhen['try']      = attempt;              // call a function and return a promise\n\twhen.attempt     = attempt;              // alias for when.try\n\n\twhen.iterate     = Promise.iterate;      // DEPRECATED (use cujojs/most streams) Generate a stream of promises\n\twhen.unfold      = Promise.unfold;       // DEPRECATED (use cujojs/most streams) Generate a stream of promises\n\n\twhen.join        = join;                 // Join 2 or more promises\n\n\twhen.all         = all;                  // Resolve a list of promises\n\twhen.settle      = settle;               // Settle a list of promises\n\n\twhen.any         = lift(Promise.any);    // One-winner race\n\twhen.some        = lift(Promise.some);   // Multi-winner race\n\twhen.race        = lift(Promise.race);   // First-to-settle race\n\n\twhen.map         = map;                  // Array.map() for promises\n\twhen.filter      = filter;               // Array.filter() for promises\n\twhen.reduce      = lift(Promise.reduce);       // Array.reduce() for promises\n\twhen.reduceRight = lift(Promise.reduceRight);  // Array.reduceRight() for promises\n\n\twhen.isPromiseLike = isPromiseLike;      // Is something promise-like, aka thenable\n\n\twhen.Promise     = Promise;              // Promise constructor\n\twhen.defer       = defer;                // Create a {promise, resolve, reject} tuple\n\n\t// Error types\n\n\twhen.TimeoutError = TimeoutError;\n\n\t/**\n\t * Get a trusted promise for x, or by transforming x with onFulfilled\n\t *\n\t * @param {*} x\n\t * @param {function?} onFulfilled callback to be called when x is\n\t *   successfully fulfilled.  If promiseOrValue is an immediate value, callback\n\t *   will be invoked immediately.\n\t * @param {function?} onRejected callback to be called when x is\n\t *   rejected.\n\t * @param {function?} onProgress callback to be called when progress updates\n\t *   are issued for x. @deprecated\n\t * @returns {Promise} a new promise that will fulfill with the return\n\t *   value of callback or errback or the completion value of promiseOrValue if\n\t *   callback and/or errback is not supplied.\n\t */\n\tfunction when(x, onFulfilled, onRejected, onProgress) {\n\t\tvar p = Promise.resolve(x);\n\t\tif (arguments.length < 2) {\n\t\t\treturn p;\n\t\t}\n\n\t\treturn p.then(onFulfilled, onRejected, onProgress);\n\t}\n\n\t/**\n\t * Creates a new promise whose fate is determined by resolver.\n\t * @param {function} resolver function(resolve, reject, notify)\n\t * @returns {Promise} promise whose fate is determine by resolver\n\t */\n\tfunction promise(resolver) {\n\t\treturn new Promise(resolver);\n\t}\n\n\t/**\n\t * Lift the supplied function, creating a version of f that returns\n\t * promises, and accepts promises as arguments.\n\t * @param {function} f\n\t * @returns {Function} version of f that returns promises\n\t */\n\tfunction lift(f) {\n\t\treturn function() {\n\t\t\tfor(var i=0, l=arguments.length, a=new Array(l); i<l; ++i) {\n\t\t\t\ta[i] = arguments[i];\n\t\t\t}\n\t\t\treturn apply(f, this, a);\n\t\t};\n\t}\n\n\t/**\n\t * Call f in a future turn, with the supplied args, and return a promise\n\t * for the result.\n\t * @param {function} f\n\t * @returns {Promise}\n\t */\n\tfunction attempt(f /*, args... */) {\n\t\t/*jshint validthis:true */\n\t\tfor(var i=0, l=arguments.length-1, a=new Array(l); i<l; ++i) {\n\t\t\ta[i] = arguments[i+1];\n\t\t}\n\t\treturn apply(f, this, a);\n\t}\n\n\t/**\n\t * Creates a {promise, resolver} pair, either or both of which\n\t * may be given out safely to consumers.\n\t * @return {{promise: Promise, resolve: function, reject: function, notify: function}}\n\t */\n\tfunction defer() {\n\t\treturn new Deferred();\n\t}\n\n\tfunction Deferred() {\n\t\tvar p = Promise._defer();\n\n\t\tfunction resolve(x) { p._handler.resolve(x); }\n\t\tfunction reject(x) { p._handler.reject(x); }\n\t\tfunction notify(x) { p._handler.notify(x); }\n\n\t\tthis.promise = p;\n\t\tthis.resolve = resolve;\n\t\tthis.reject = reject;\n\t\tthis.notify = notify;\n\t\tthis.resolver = { resolve: resolve, reject: reject, notify: notify };\n\t}\n\n\t/**\n\t * Determines if x is promise-like, i.e. a thenable object\n\t * NOTE: Will return true for *any thenable object*, and isn't truly\n\t * safe, since it may attempt to access the `then` property of x (i.e.\n\t *  clever/malicious getters may do weird things)\n\t * @param {*} x anything\n\t * @returns {boolean} true if x is promise-like\n\t */\n\tfunction isPromiseLike(x) {\n\t\treturn x && typeof x.then === 'function';\n\t}\n\n\t/**\n\t * Return a promise that will resolve only once all the supplied arguments\n\t * have resolved. The resolution value of the returned promise will be an array\n\t * containing the resolution values of each of the arguments.\n\t * @param {...*} arguments may be a mix of promises and values\n\t * @returns {Promise}\n\t */\n\tfunction join(/* ...promises */) {\n\t\treturn Promise.all(arguments);\n\t}\n\n\t/**\n\t * Return a promise that will fulfill once all input promises have\n\t * fulfilled, or reject when any one input promise rejects.\n\t * @param {array|Promise} promises array (or promise for an array) of promises\n\t * @returns {Promise}\n\t */\n\tfunction all(promises) {\n\t\treturn when(promises, Promise.all);\n\t}\n\n\t/**\n\t * Return a promise that will always fulfill with an array containing\n\t * the outcome states of all input promises.  The returned promise\n\t * will only reject if `promises` itself is a rejected promise.\n\t * @param {array|Promise} promises array (or promise for an array) of promises\n\t * @returns {Promise} promise for array of settled state descriptors\n\t */\n\tfunction settle(promises) {\n\t\treturn when(promises, Promise.settle);\n\t}\n\n\t/**\n\t * Promise-aware array map function, similar to `Array.prototype.map()`,\n\t * but input array may contain promises or values.\n\t * @param {Array|Promise} promises array of anything, may contain promises and values\n\t * @param {function(x:*, index:Number):*} mapFunc map function which may\n\t *  return a promise or value\n\t * @returns {Promise} promise that will fulfill with an array of mapped values\n\t *  or reject if any input promise rejects.\n\t */\n\tfunction map(promises, mapFunc) {\n\t\treturn when(promises, function(promises) {\n\t\t\treturn Promise.map(promises, mapFunc);\n\t\t});\n\t}\n\n\t/**\n\t * Filter the provided array of promises using the provided predicate.  Input may\n\t * contain promises and values\n\t * @param {Array|Promise} promises array of promises and values\n\t * @param {function(x:*, index:Number):boolean} predicate filtering predicate.\n\t *  Must return truthy (or promise for truthy) for items to retain.\n\t * @returns {Promise} promise that will fulfill with an array containing all items\n\t *  for which predicate returned truthy.\n\t */\n\tfunction filter(promises, predicate) {\n\t\treturn when(promises, function(promises) {\n\t\t\treturn Promise.filter(promises, predicate);\n\t\t});\n\t}\n\n\treturn when;\n});\n})(typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require); });\n",
     "var nativeIsArray = Array.isArray\nvar toString = Object.prototype.toString\n\nmodule.exports = nativeIsArray || isArray\n\nfunction isArray(obj) {\n    return toString.call(obj) === \"[object Array]\"\n}\n",
     "export {APIv3} from \"./api/APIv3\";\nexport {ModelCreator} from \"./api/ModelCreator\";\nexport * from \"./api/interfaces/interfaces\";\n",
-    "export {Component} from \"./component/Component\";\nexport {ComponentService} from \"./component/ComponentService\";\nexport {HandlerBase} from \"./component/utils/HandlerBase\";\nexport {MeshFactory} from \"./component/utils/MeshFactory\";\nexport {MeshScene} from \"./component/utils/MeshScene\";\nexport {MouseOperator} from \"./component/utils/MouseOperator\";\nexport {AttributionComponent} from \"./component/AttributionComponent\";\nexport {BackgroundComponent} from \"./component/BackgroundComponent\";\nexport {BearingComponent} from \"./component/BearingComponent\";\nexport {CacheComponent} from \"./component/CacheComponent\";\nexport {CoverComponent} from \"./component/CoverComponent\";\nexport {DebugComponent} from \"./component/DebugComponent\";\nexport {DirectionComponent} from \"./component/direction/DirectionComponent\";\nexport {DirectionDOMCalculator} from \"./component/direction/DirectionDOMCalculator\";\nexport {DirectionDOMRenderer} from \"./component/direction/DirectionDOMRenderer\";\nexport {ImageComponent} from \"./component/ImageComponent\";\nexport {KeyboardComponent} from \"./component/keyboard/KeyboardComponent\";\nexport {KeyPlayHandler} from \"./component/keyboard/KeyPlayHandler\";\nexport {KeyZoomHandler} from \"./component/keyboard/KeyZoomHandler\";\nexport {KeySequenceNavigationHandler} from \"./component/keyboard/KeySequenceNavigationHandler\";\nexport {KeySpatialNavigationHandler} from \"./component/keyboard/KeySpatialNavigationHandler\";\nexport {LoadingComponent} from \"./component/LoadingComponent\";\nexport {Marker} from \"./component/marker/marker/Marker\";\nexport {MarkerComponent} from \"./component/marker/MarkerComponent\";\nexport {MarkerScene} from \"./component/marker/MarkerScene\";\nexport {MarkerSet} from \"./component/marker/MarkerSet\";\nexport {MouseComponent} from \"./component/mouse/MouseComponent\";\nexport * from \"./component/mouse/HandlerTypes\";\nexport {BounceHandler} from \"./component/mouse/BounceHandler\";\nexport {DragPanHandler} from \"./component/mouse/DragPanHandler\";\nexport {DoubleClickZoomHandler} from \"./component/mouse/DoubleClickZoomHandler\";\nexport {EarthControlHandler} from \"./component/mouse/EarthControlHandler\";\nexport {ScrollZoomHandler} from \"./component/mouse/ScrollZoomHandler\";\nexport {TouchZoomHandler} from \"./component/mouse/TouchZoomHandler\";\nimport * as ImageBoundary from \"./component/mouse/ImageBoundary\";\nexport {ImageBoundary};\nexport {Popup} from \"./component/popup/popup/Popup\";\nexport {PopupComponent} from \"./component/popup/PopupComponent\";\nexport {PopupAlignment} from \"./component/popup/popup/PopupAlignment\";\nexport {IPopupOffset} from \"./component/popup/interfaces/IPopupOffset\";\nexport {IPopupOptions} from \"./component/popup/interfaces/IPopupOptions\";\nexport {NavigationComponent} from \"./component/NavigationComponent\";\nexport {RouteComponent} from \"./component/RouteComponent\";\nexport {SequenceComponent} from \"./component/sequence/SequenceComponent\";\nexport {SequenceDOMRenderer} from \"./component/sequence/SequenceDOMRenderer\";\nexport {SequenceMode} from \"./component/sequence/SequenceMode\";\nexport {NodeData, ReconstructionData, SpatialDataCache} from \"./component/spatialdata/SpatialDataCache\";\nexport {SpatialDataComponent} from \"./component/spatialdata/SpatialDataComponent\";\nexport {SpatialDataScene} from \"./component/spatialdata/SpatialDataScene\";\nexport {ImagePlaneComponent} from \"./component/imageplane/ImagePlaneComponent\";\nexport {ImagePlaneGLRenderer} from \"./component/imageplane/ImagePlaneGLRenderer\";\nexport {Shaders} from \"./component/shaders/Shaders\";\nexport {SimpleMarker} from \"./component/marker/marker/SimpleMarker\";\nexport {CircleMarker} from \"./component/marker/marker/CircleMarker\";\nexport {SliderComponent} from \"./component/slider/SliderComponent\";\nexport {SliderDOMRenderer} from \"./component/slider/SliderDOMRenderer\";\nexport {SliderGLRenderer} from \"./component/slider/SliderGLRenderer\";\nexport {StatsComponent} from \"./component/StatsComponent\";\nexport {TagHandlerBase} from \"./component/tag/handlers/TagHandlerBase\";\nexport {CreateHandlerBase} from \"./component/tag/handlers/CreateHandlerBase\";\nexport {CreatePointHandler} from \"./component/tag/handlers/CreatePointHandler\";\nexport {CreateVertexHandler} from \"./component/tag/handlers/CreateVertexHandler\";\nexport {CreatePolygonHandler} from \"./component/tag/handlers/CreatePolygonHandler\";\nexport {CreateRectHandler} from \"./component/tag/handlers/CreateRectHandler\";\nexport {CreateRectDragHandler} from \"./component/tag/handlers/CreateRectDragHandler\";\nexport {EditVertexHandler} from \"./component/tag/handlers/EditVertexHandler\";\nexport {Tag} from \"./component/tag/tag/Tag\";\nexport {OutlineTag} from \"./component/tag/tag/OutlineTag\";\nexport {RenderTag} from \"./component/tag/tag/RenderTag\";\nexport {OutlineRenderTag} from \"./component/tag/tag/OutlineRenderTag\";\nexport {OutlineCreateTag} from \"./component/tag/tag/OutlineCreateTag\";\nexport {SpotTag} from \"./component/tag/tag/SpotTag\";\nexport {SpotRenderTag} from \"./component/tag/tag/SpotRenderTag\";\nexport {TagDomain} from \"./component/tag/tag/TagDomain\";\nexport {TagComponent} from \"./component/tag/TagComponent\";\nexport {TagCreator} from \"./component/tag/TagCreator\";\nexport {TagDOMRenderer} from \"./component/tag/TagDOMRenderer\";\nexport {TagMode} from \"./component/tag/TagMode\";\nexport {TagOperation} from \"./component/tag/TagOperation\";\nexport {TagScene} from \"./component/tag/TagScene\";\nexport {TagSet} from \"./component/tag/TagSet\";\nexport {Geometry} from \"./component/tag/geometry/Geometry\";\nexport {VertexGeometry} from \"./component/tag/geometry/VertexGeometry\";\nexport {RectGeometry} from \"./component/tag/geometry/RectGeometry\";\nexport {PointGeometry} from \"./component/tag/geometry/PointGeometry\";\nexport {PolygonGeometry} from \"./component/tag/geometry/PolygonGeometry\";\nexport {GeometryTagError} from \"./component/tag/error/GeometryTagError\";\nexport {ZoomComponent} from \"./component/zoom/ZoomComponent\";\nexport * from \"./component/interfaces/interfaces\";\n",
+    "export {Component} from \"./component/Component\";\nexport {ComponentService} from \"./component/ComponentService\";\nexport {HandlerBase} from \"./component/utils/HandlerBase\";\nexport {MeshFactory} from \"./component/utils/MeshFactory\";\nexport {MeshScene} from \"./component/utils/MeshScene\";\nexport {MouseOperator} from \"./component/utils/MouseOperator\";\nexport {ComponentSize} from \"./component/utils/ComponentSize\";\nexport {AttributionComponent} from \"./component/AttributionComponent\";\nexport {BackgroundComponent} from \"./component/BackgroundComponent\";\nexport {BearingComponent} from \"./component/BearingComponent\";\nexport {CacheComponent} from \"./component/CacheComponent\";\nexport {CoverComponent} from \"./component/CoverComponent\";\nexport {DebugComponent} from \"./component/DebugComponent\";\nexport {DirectionComponent} from \"./component/direction/DirectionComponent\";\nexport {DirectionDOMCalculator} from \"./component/direction/DirectionDOMCalculator\";\nexport {DirectionDOMRenderer} from \"./component/direction/DirectionDOMRenderer\";\nexport {ImageComponent} from \"./component/ImageComponent\";\nexport {KeyboardComponent} from \"./component/keyboard/KeyboardComponent\";\nexport {KeyPlayHandler} from \"./component/keyboard/KeyPlayHandler\";\nexport {KeyZoomHandler} from \"./component/keyboard/KeyZoomHandler\";\nexport {KeySequenceNavigationHandler} from \"./component/keyboard/KeySequenceNavigationHandler\";\nexport {KeySpatialNavigationHandler} from \"./component/keyboard/KeySpatialNavigationHandler\";\nexport {LoadingComponent} from \"./component/LoadingComponent\";\nexport {Marker} from \"./component/marker/marker/Marker\";\nexport {MarkerComponent} from \"./component/marker/MarkerComponent\";\nexport {MarkerScene} from \"./component/marker/MarkerScene\";\nexport {MarkerSet} from \"./component/marker/MarkerSet\";\nexport {MouseComponent} from \"./component/mouse/MouseComponent\";\nexport * from \"./component/mouse/HandlerTypes\";\nexport {BounceHandler} from \"./component/mouse/BounceHandler\";\nexport {DragPanHandler} from \"./component/mouse/DragPanHandler\";\nexport {DoubleClickZoomHandler} from \"./component/mouse/DoubleClickZoomHandler\";\nexport {EarthControlHandler} from \"./component/mouse/EarthControlHandler\";\nexport {ScrollZoomHandler} from \"./component/mouse/ScrollZoomHandler\";\nexport {TouchZoomHandler} from \"./component/mouse/TouchZoomHandler\";\nimport * as ImageBoundary from \"./component/mouse/ImageBoundary\";\nexport {ImageBoundary};\nexport {Popup} from \"./component/popup/popup/Popup\";\nexport {PopupComponent} from \"./component/popup/PopupComponent\";\nexport {PopupAlignment} from \"./component/popup/popup/PopupAlignment\";\nexport {IPopupOffset} from \"./component/popup/interfaces/IPopupOffset\";\nexport {IPopupOptions} from \"./component/popup/interfaces/IPopupOptions\";\nexport {NavigationComponent} from \"./component/NavigationComponent\";\nexport {RouteComponent} from \"./component/RouteComponent\";\nexport {SequenceComponent} from \"./component/sequence/SequenceComponent\";\nexport {SequenceDOMRenderer} from \"./component/sequence/SequenceDOMRenderer\";\nexport {SequenceMode} from \"./component/sequence/SequenceMode\";\nexport {NodeData, ReconstructionData, SpatialDataCache} from \"./component/spatialdata/SpatialDataCache\";\nexport {SpatialDataComponent} from \"./component/spatialdata/SpatialDataComponent\";\nexport {SpatialDataScene} from \"./component/spatialdata/SpatialDataScene\";\nexport {ImagePlaneComponent} from \"./component/imageplane/ImagePlaneComponent\";\nexport {ImagePlaneGLRenderer} from \"./component/imageplane/ImagePlaneGLRenderer\";\nexport {Shaders} from \"./component/shaders/Shaders\";\nexport {SimpleMarker} from \"./component/marker/marker/SimpleMarker\";\nexport {CircleMarker} from \"./component/marker/marker/CircleMarker\";\nexport {SliderComponent} from \"./component/slider/SliderComponent\";\nexport {SliderDOMRenderer} from \"./component/slider/SliderDOMRenderer\";\nexport {SliderGLRenderer} from \"./component/slider/SliderGLRenderer\";\nexport {StatsComponent} from \"./component/StatsComponent\";\nexport {TagHandlerBase} from \"./component/tag/handlers/TagHandlerBase\";\nexport {CreateHandlerBase} from \"./component/tag/handlers/CreateHandlerBase\";\nexport {CreatePointHandler} from \"./component/tag/handlers/CreatePointHandler\";\nexport {CreateVertexHandler} from \"./component/tag/handlers/CreateVertexHandler\";\nexport {CreatePolygonHandler} from \"./component/tag/handlers/CreatePolygonHandler\";\nexport {CreateRectHandler} from \"./component/tag/handlers/CreateRectHandler\";\nexport {CreateRectDragHandler} from \"./component/tag/handlers/CreateRectDragHandler\";\nexport {EditVertexHandler} from \"./component/tag/handlers/EditVertexHandler\";\nexport {Tag} from \"./component/tag/tag/Tag\";\nexport {OutlineTag} from \"./component/tag/tag/OutlineTag\";\nexport {RenderTag} from \"./component/tag/tag/RenderTag\";\nexport {OutlineRenderTag} from \"./component/tag/tag/OutlineRenderTag\";\nexport {OutlineCreateTag} from \"./component/tag/tag/OutlineCreateTag\";\nexport {SpotTag} from \"./component/tag/tag/SpotTag\";\nexport {SpotRenderTag} from \"./component/tag/tag/SpotRenderTag\";\nexport {TagDomain} from \"./component/tag/tag/TagDomain\";\nexport {TagComponent} from \"./component/tag/TagComponent\";\nexport {TagCreator} from \"./component/tag/TagCreator\";\nexport {TagDOMRenderer} from \"./component/tag/TagDOMRenderer\";\nexport {TagMode} from \"./component/tag/TagMode\";\nexport {TagOperation} from \"./component/tag/TagOperation\";\nexport {TagScene} from \"./component/tag/TagScene\";\nexport {TagSet} from \"./component/tag/TagSet\";\nexport {Geometry} from \"./component/tag/geometry/Geometry\";\nexport {VertexGeometry} from \"./component/tag/geometry/VertexGeometry\";\nexport {RectGeometry} from \"./component/tag/geometry/RectGeometry\";\nexport {PointGeometry} from \"./component/tag/geometry/PointGeometry\";\nexport {PolygonGeometry} from \"./component/tag/geometry/PolygonGeometry\";\nexport {GeometryTagError} from \"./component/tag/error/GeometryTagError\";\nexport {ZoomComponent} from \"./component/zoom/ZoomComponent\";\nexport * from \"./component/interfaces/interfaces\";\n",
     "export {EdgeDirection} from \"./graph/edge/EdgeDirection\";\nexport {EdgeCalculatorSettings} from \"./graph/edge/EdgeCalculatorSettings\";\nexport {EdgeCalculatorDirections} from \"./graph/edge/EdgeCalculatorDirections\";\nexport {EdgeCalculatorCoefficients} from \"./graph/edge/EdgeCalculatorCoefficients\";\nexport {EdgeCalculator} from \"./graph/edge/EdgeCalculator\";\nexport * from \"./graph/edge/interfaces/interfaces\";\n",
     "export {AbortMapillaryError} from \"./error/AbortMapillaryError\";\nexport {ArgumentMapillaryError} from \"./error/ArgumentMapillaryError\";\nexport {GraphMapillaryError} from \"./error/GraphMapillaryError\";\nexport {MapillaryError} from \"./error/MapillaryError\";\n",
     "export {Camera} from \"./geo/Camera\";\nexport {GeoCoords} from \"./geo/GeoCoords\";\nexport {ViewportCoords} from \"./geo/ViewportCoords\";\nexport {Spatial} from \"./geo/Spatial\";\nexport {Transform} from \"./geo/Transform\";\nexport * from \"./geo/interfaces/interfaces\";\n\nimport * as Geo from \"./geo/Geo\";\nexport {Geo};\n\nimport * as Lines from \"./geo/Lines\";\nexport {Lines};\n",
     "export {\n    FilterCreator,\n    FilterFunction,\n} from \"./graph/FilterCreator\";\nexport {\n    FilterExpression,\n    FilterOperation,\n    FilterOperator,\n    FilterValue,\n} from \"./graph/FilterExpression\";\nexport {Graph} from \"./graph/Graph\";\nexport {GraphCalculator} from \"./graph/GraphCalculator\";\nexport {GraphMode} from \"./graph/GraphMode\";\nexport {GraphService} from \"./graph/GraphService\";\nexport {ImageLoadingService} from \"./graph/ImageLoadingService\";\nexport {MeshReader} from \"./graph/MeshReader\";\nexport {Node} from \"./graph/Node\";\nexport {NodeCache} from \"./graph/NodeCache\";\nexport {Sequence} from \"./graph/Sequence\";\nexport * from \"./graph/interfaces/interfaces\";\n",
-    "/**\n * MapillaryJS is a WebGL JavaScript library for exploring street level imagery\n * @name Mapillary\n */\n\nexport * from \"./Support\";\n\nexport {EdgeDirection} from \"./Edge\";\nexport {AbortMapillaryError} from \"./Error\";\nexport {RenderMode} from \"./Render\";\nexport {TransitionMode} from \"./State\";\nexport {\n    Alignment,\n    ImageSize,\n    Viewer,\n} from \"./Viewer\";\nexport {SliderMode} from \"./Component\";\n\nimport * as TagComponent from \"./component/tag/Tag\";\nexport {TagComponent};\n\nimport * as MarkerComponent from \"./component/marker/Marker\";\nexport {MarkerComponent};\n\nimport * as PopupComponent from \"./component/popup/Popup\";\nexport {PopupComponent};\n",
+    "/**\n * MapillaryJS is a WebGL JavaScript library for exploring street level imagery\n * @name Mapillary\n */\n\nexport * from \"./Support\";\n\nexport {EdgeDirection} from \"./Edge\";\nexport {AbortMapillaryError} from \"./Error\";\nexport {RenderMode} from \"./Render\";\nexport {TransitionMode} from \"./State\";\nexport {\n    Alignment,\n    ImageSize,\n    Viewer,\n} from \"./Viewer\";\nexport {\n    SliderMode,\n    ComponentSize,\n} from \"./Component\";\n\nimport * as TagComponent from \"./component/tag/Tag\";\nexport {TagComponent};\n\nimport * as MarkerComponent from \"./component/marker/Marker\";\nexport {MarkerComponent};\n\nimport * as PopupComponent from \"./component/popup/Popup\";\nexport {PopupComponent};\n",
     "export {DOMRenderer} from \"./render/DOMRenderer\";\nexport {GLRenderer} from \"./render/GLRenderer\";\nexport {GLRenderStage} from \"./render/GLRenderStage\";\nexport {RenderCamera} from \"./render/RenderCamera\";\nexport {RenderMode} from \"./render/RenderMode\";\nexport {RenderService} from \"./render/RenderService\";\nexport * from \"./render/interfaces/interfaces\";\n",
     "export {FrameGenerator} from \"./state/FrameGenerator\";\nexport {RotationDelta} from \"./state/RotationDelta\";\nexport {State} from \"./state/State\";\nexport {StateBase} from \"./state/states/StateBase\";\nexport {StateContext} from \"./state/StateContext\";\nexport {StateService} from \"./state/StateService\";\nexport {TransitionMode} from \"./state/TransitionMode\";\nexport {EarthState} from \"./state/states/EarthState\";\nexport {InteractiveStateBase} from \"./state/states/InteractiveStateBase\";\nexport {InteractiveWaitingState} from \"./state/states/InteractiveWaitingState\";\nexport {TraversingState} from \"./state/states/TraversingState\";\nexport {WaitingState} from \"./state/states/WaitingState\";\nexport * from \"./state/interfaces/interfaces\";\n",
     "import * as support from \"./utils/Support\";\n\n/**\n * Test whether the current browser supports the full\n * functionality of MapillaryJS.\n *\n * @description The full functionality includes WebGL rendering.\n *\n * @return {boolean}\n *\n * @example `var supported = Mapillary.isSupported();`\n */\nexport function isSupported(): boolean {\n    return isFallbackSupported() &&\n        support.isWebGLSupportedCached();\n}\n\n/**\n * Test whether the current browser supports the fallback\n * functionality of MapillaryJS.\n *\n * @description The fallback functionality does not include WebGL\n * rendering, only 2D canvas rendering.\n *\n * @return {boolean}\n *\n * @example `var fallbackSupported = Mapillary.isFallbackSupported();`\n */\nexport function isFallbackSupported(): boolean {\n    return support.isBrowser() &&\n        support.isBlobSupported() &&\n        support.isArraySupported() &&\n        support.isFunctionSupported() &&\n        support.isJSONSupported() &&\n        support.isObjectSupported();\n}\n",
     "export {ImageTileLoader} from \"./tiles/ImageTileLoader\";\nexport {ImageTileStore} from \"./tiles/ImageTileStore\";\nexport {TextureProvider} from \"./tiles/TextureProvider\";\nexport {RegionOfInterestCalculator} from \"./tiles/RegionOfInterestCalculator\";\nexport * from \"./tiles/interfaces/interfaces\";\n",
     "export {DOM} from \"./utils/DOM\";\nexport {EventEmitter} from \"./utils/EventEmitter\";\nexport {Func} from \"./utils/Func\";\nexport {Settings} from \"./utils/Settings\";\nexport * from \"./utils/Support\";\nexport {Urls} from \"./utils/Urls\";\n",
     "export {Alignment} from \"./viewer/Alignment\";\nexport {CacheService} from \"./viewer/CacheService\";\nexport {ComponentController} from \"./viewer/ComponentController\";\nexport {Container} from \"./viewer/Container\";\nexport {Observer} from \"./viewer/Observer\";\nexport {ImageSize} from \"./viewer/ImageSize\";\nexport {KeyboardService} from \"./viewer/KeyboardService\";\nexport {LoadingService} from \"./viewer/LoadingService\";\nexport {MouseService} from \"./viewer/MouseService\";\nexport {Navigator} from \"./viewer/Navigator\";\nexport {PlayService} from \"./viewer/PlayService\";\nexport {Projection} from \"./viewer/Projection\";\nexport {SpriteService} from \"./viewer/SpriteService\";\nexport {TouchService} from \"./viewer/TouchService\";\nexport {Viewer} from \"./viewer/Viewer\";\nexport * from \"./viewer/interfaces/interfaces\";\n",
-    "import {catchError, map} from \"rxjs/operators\";\nimport * as falcor from \"falcor\";\n\nimport {Observable, Subscriber} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IFullNode,\n    ISequence,\n    ModelCreator,\n} from \"../API\";\n\ninterface IImageByKey<T> {\n    imageByKey: { [key: string]: T };\n}\n\ninterface IImageCloseTo<T> {\n    imageCloseTo: { [key: string]: T };\n}\n\ninterface IImagesByH<T> {\n    imagesByH: { [key: string]: { [index: string]: T } };\n}\n\ninterface ISequenceByKey<T> {\n    sequenceByKey: { [sequenceKey: string]: T };\n}\n\ntype APIPath =\n    \"imageByKey\" |\n    \"imageCloseTo\" |\n    \"imagesByH\" |\n    \"imageViewAdd\" |\n    \"sequenceByKey\" |\n    \"sequenceViewAdd\";\n\n/**\n * @class APIv3\n *\n * @classdesc Provides methods for access of API v3.\n */\nexport class APIv3 {\n    private _clientId: string;\n\n    private _model: falcor.Model;\n    private _modelCreator: ModelCreator;\n\n    private _pageCount: number;\n\n    private _pathImageByKey: APIPath;\n    private _pathImageCloseTo: APIPath;\n    private _pathImagesByH: APIPath;\n    private _pathImageViewAdd: APIPath;\n    private _pathSequenceByKey: APIPath;\n    private _pathSequenceViewAdd: APIPath;\n\n    private _propertiesCore: string[];\n    private _propertiesFill: string[];\n    private _propertiesKey: string[];\n    private _propertiesSequence: string[];\n    private _propertiesSpatial: string[];\n    private _propertiesUser: string[];\n\n    /**\n     * Create a new api v3 instance.\n     *\n     * @param {number} clientId - Client id for API requests.\n     * @param {number} [token] - Optional bearer token for API requests of\n     * protected resources.\n     * @param {ModelCreator} [creator] - Optional model creator instance.\n     */\n    constructor(clientId: string, token?: string, creator?: ModelCreator) {\n        this._clientId = clientId;\n\n        this._modelCreator = creator != null ? creator : new ModelCreator();\n        this._model = this._modelCreator.createModel(clientId, token);\n\n        this._pageCount = 999;\n\n        this._pathImageByKey = \"imageByKey\";\n        this._pathImageCloseTo = \"imageCloseTo\";\n        this._pathImagesByH = \"imagesByH\";\n        this._pathImageViewAdd = \"imageViewAdd\";\n        this._pathSequenceByKey = \"sequenceByKey\";\n        this._pathSequenceViewAdd = \"sequenceViewAdd\";\n\n        this._propertiesCore = [\n            \"cl\",\n            \"l\",\n            \"sequence_key\",\n        ];\n\n        this._propertiesFill = [\n            \"captured_at\",\n            \"captured_with_camera_uuid\",\n            \"user\",\n            \"organization_key\",\n            \"private\",\n            \"project\",\n        ];\n\n        this._propertiesKey = [\n            \"key\",\n        ];\n\n        this._propertiesSequence = [\n            \"keys\",\n        ];\n\n        this._propertiesSpatial = [\n            \"atomic_scale\",\n            \"ca\",\n            \"calt\",\n            \"cca\",\n            \"cfocal\",\n            \"ck1\",\n            \"ck2\",\n            \"gpano\",\n            \"height\",\n            \"merge_cc\",\n            \"merge_version\",\n            \"c_rotation\",\n            \"orientation\",\n            \"width\",\n        ];\n\n        this._propertiesUser = [\n            \"username\",\n        ];\n    }\n\n    public imageByKeyFill$(keys: string[]): Observable<{ [key: string]: IFillNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFillNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFillNode>>): { [key: string]: IFillNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageByKeyFull$(keys: string[]): Observable<{ [key: string]: IFullNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFullNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFullNode>>): { [key: string]: IFullNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageCloseTo$(lat: number, lon: number): Observable<IFullNode> {\n        let lonLat: string = `${lon}:${lat}`;\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageCloseTo<IFullNode>>>(this._model.get([\n                this._pathImageCloseTo,\n                [lonLat],\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageCloseTo<IFullNode>>): IFullNode => {\n                    return value != null ? value.json.imageCloseTo[lonLat] : null;\n                })),\n            this._pathImageCloseTo,\n            [lonLat]);\n    }\n\n    public imagesByH$(hs: string[]): Observable<{ [h: string]: { [index: string]: ICoreNode } }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImagesByH<ICoreNode>>>(this._model.get([\n                this._pathImagesByH,\n                hs,\n                { from: 0, to: this._pageCount },\n                this._propertiesKey\n                    .concat(this._propertiesCore)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImagesByH<ICoreNode>>): { [h: string]: { [index: string]: ICoreNode } } => {\n                    if (!value) {\n                        value = { json: { imagesByH: {} } };\n                        for (let h of hs) {\n                            value.json.imagesByH[h] = {};\n                            for (let i: number = 0; i <= this._pageCount; i++) {\n                                value.json.imagesByH[h][i] = null;\n                            }\n                        }\n                    }\n\n                    return value.json.imagesByH;\n                })),\n            this._pathImagesByH,\n            hs);\n    }\n\n    public imageViewAdd$(keys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathImageViewAdd],\n                    [keys])),\n            this._pathImageViewAdd,\n            keys);\n    }\n\n    public invalidateImageByKey(keys: string[]): void {\n        this._invalidateGet(this._pathImageByKey, keys);\n    }\n\n    public invalidateImagesByH(hs: string[]): void {\n        this._invalidateGet(this._pathImagesByH, hs);\n    }\n\n    public invalidateSequenceByKey(sKeys: string[]): void {\n        this._invalidateGet(this._pathSequenceByKey, sKeys);\n    }\n\n    public setToken(token?: string): void {\n        this._model.invalidate([]);\n        this._model = null;\n        this._model = this._modelCreator.createModel(this._clientId, token);\n    }\n\n    public sequenceByKey$(sequenceKeys: string[]): Observable<{ [sequenceKey: string]: ISequence }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<ISequenceByKey<ISequence>>>(this._model.get([\n                this._pathSequenceByKey,\n                sequenceKeys,\n                this._propertiesKey\n                    .concat(this._propertiesSequence)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<ISequenceByKey<ISequence>>): { [sequenceKey: string]: ISequence } => {\n                    if (!value) {\n                        value = { json: { sequenceByKey: {} } };\n                    }\n\n                    for (const sequenceKey of sequenceKeys) {\n                        if (!(sequenceKey in value.json.sequenceByKey)) {\n                            console.warn(`Sequence data missing (${sequenceKey})`);\n\n                            value.json.sequenceByKey[sequenceKey] = { key: sequenceKey, keys: [] };\n                        }\n                    }\n\n                    return value.json.sequenceByKey;\n                })),\n            this._pathSequenceByKey,\n            sequenceKeys);\n    }\n\n    public sequenceViewAdd$(sequenceKeys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathSequenceViewAdd],\n                    [sequenceKeys])),\n            this._pathSequenceViewAdd,\n            sequenceKeys);\n    }\n\n    public get clientId(): string {\n        return this._clientId;\n    }\n\n    private _catchInvalidateGet$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateGet(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _catchInvalidateCall$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateCall(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _invalidateGet(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path, paths]);\n    }\n\n    private _invalidateCall(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path], [paths]);\n    }\n\n    private _wrapModelResponse$<T>(modelResponse: falcor.ModelResponse<T>): Observable<T> {\n        return Observable\n            .create(\n                (subscriber: Subscriber<T>): void => {\n                    modelResponse\n                        .then(\n                            (value: T): void => {\n                                subscriber.next(value);\n                                subscriber.complete();\n                            },\n                            (error: Error): void => {\n                                subscriber.error(error);\n                            });\n                });\n    }\n\n    private _wrapCallModelResponse$<T>(modelResponse: falcor.ModelResponse<falcor.JSONEnvelope<T>>): Observable<T> {\n        return this._wrapModelResponse$(modelResponse).pipe(\n            map<falcor.JSONEnvelope<T>, T>(\n                (value: falcor.JSONEnvelope<T>): T => {\n                    return;\n                }));\n    }\n}\n\nexport default APIv3;\n",
+    "import {catchError, map} from \"rxjs/operators\";\nimport * as falcor from \"falcor\";\n\nimport {Observable, Subscriber} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IFullNode,\n    ISequence,\n    ModelCreator,\n} from \"../API\";\n\ninterface IImageByKey<T> {\n    imageByKey: { [key: string]: T };\n}\n\ninterface IImageCloseTo<T> {\n    imageCloseTo: { [key: string]: T };\n}\n\ninterface IImagesByH<T> {\n    imagesByH: { [key: string]: { [index: string]: T } };\n}\n\ninterface ISequenceByKey<T> {\n    sequenceByKey: { [sequenceKey: string]: T };\n}\n\ntype APIPath =\n    \"imageByKey\" |\n    \"imageCloseTo\" |\n    \"imagesByH\" |\n    \"imageViewAdd\" |\n    \"sequenceByKey\" |\n    \"sequenceViewAdd\";\n\n/**\n * @class APIv3\n *\n * @classdesc Provides methods for access of API v3.\n */\nexport class APIv3 {\n    private _clientId: string;\n\n    private _model: falcor.Model;\n    private _modelCreator: ModelCreator;\n\n    private _pageCount: number;\n\n    private _pathImageByKey: APIPath;\n    private _pathImageCloseTo: APIPath;\n    private _pathImagesByH: APIPath;\n    private _pathImageViewAdd: APIPath;\n    private _pathSequenceByKey: APIPath;\n    private _pathSequenceViewAdd: APIPath;\n\n    private _propertiesCore: string[];\n    private _propertiesFill: string[];\n    private _propertiesKey: string[];\n    private _propertiesSequence: string[];\n    private _propertiesSpatial: string[];\n    private _propertiesUser: string[];\n\n    /**\n     * Create a new api v3 instance.\n     *\n     * @param {number} clientId - Client id for API requests.\n     * @param {number} [token] - Optional bearer token for API requests of\n     * protected resources.\n     * @param {ModelCreator} [creator] - Optional model creator instance.\n     */\n    constructor(clientId: string, token?: string, creator?: ModelCreator) {\n        this._clientId = clientId;\n\n        this._modelCreator = creator != null ? creator : new ModelCreator();\n        this._model = this._modelCreator.createModel(clientId, token);\n\n        this._pageCount = 999;\n\n        this._pathImageByKey = \"imageByKey\";\n        this._pathImageCloseTo = \"imageCloseTo\";\n        this._pathImagesByH = \"imagesByH\";\n        this._pathImageViewAdd = \"imageViewAdd\";\n        this._pathSequenceByKey = \"sequenceByKey\";\n        this._pathSequenceViewAdd = \"sequenceViewAdd\";\n\n        this._propertiesCore = [\n            \"cl\",\n            \"l\",\n            \"sequence_key\",\n        ];\n\n        this._propertiesFill = [\n            \"captured_at\",\n            \"captured_with_camera_uuid\",\n            \"user\",\n            \"organization_key\",\n            \"private\",\n            \"project\",\n        ];\n\n        this._propertiesKey = [\n            \"key\",\n        ];\n\n        this._propertiesSequence = [\n            \"keys\",\n        ];\n\n        this._propertiesSpatial = [\n            \"atomic_scale\",\n            \"c_rotation\",\n            \"ca\",\n            \"calt\",\n            \"camera_projection_type\",\n            \"cca\",\n            \"cfocal\",\n            \"ck1\",\n            \"ck2\",\n            \"gpano\",\n            \"height\",\n            \"merge_cc\",\n            \"merge_version\",\n            \"orientation\",\n            \"width\",\n        ];\n\n        this._propertiesUser = [\n            \"username\",\n        ];\n    }\n\n    public imageByKeyFill$(keys: string[]): Observable<{ [key: string]: IFillNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFillNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFillNode>>): { [key: string]: IFillNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageByKeyFull$(keys: string[]): Observable<{ [key: string]: IFullNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFullNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFullNode>>): { [key: string]: IFullNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageCloseTo$(lat: number, lon: number): Observable<IFullNode> {\n        let lonLat: string = `${lon}:${lat}`;\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageCloseTo<IFullNode>>>(this._model.get([\n                this._pathImageCloseTo,\n                [lonLat],\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageCloseTo<IFullNode>>): IFullNode => {\n                    return value != null ? value.json.imageCloseTo[lonLat] : null;\n                })),\n            this._pathImageCloseTo,\n            [lonLat]);\n    }\n\n    public imagesByH$(hs: string[]): Observable<{ [h: string]: { [index: string]: ICoreNode } }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImagesByH<ICoreNode>>>(this._model.get([\n                this._pathImagesByH,\n                hs,\n                { from: 0, to: this._pageCount },\n                this._propertiesKey\n                    .concat(this._propertiesCore)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImagesByH<ICoreNode>>): { [h: string]: { [index: string]: ICoreNode } } => {\n                    if (!value) {\n                        value = { json: { imagesByH: {} } };\n                        for (let h of hs) {\n                            value.json.imagesByH[h] = {};\n                            for (let i: number = 0; i <= this._pageCount; i++) {\n                                value.json.imagesByH[h][i] = null;\n                            }\n                        }\n                    }\n\n                    return value.json.imagesByH;\n                })),\n            this._pathImagesByH,\n            hs);\n    }\n\n    public imageViewAdd$(keys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathImageViewAdd],\n                    [keys])),\n            this._pathImageViewAdd,\n            keys);\n    }\n\n    public invalidateImageByKey(keys: string[]): void {\n        this._invalidateGet(this._pathImageByKey, keys);\n    }\n\n    public invalidateImagesByH(hs: string[]): void {\n        this._invalidateGet(this._pathImagesByH, hs);\n    }\n\n    public invalidateSequenceByKey(sKeys: string[]): void {\n        this._invalidateGet(this._pathSequenceByKey, sKeys);\n    }\n\n    public setToken(token?: string): void {\n        this._model.invalidate([]);\n        this._model = null;\n        this._model = this._modelCreator.createModel(this._clientId, token);\n    }\n\n    public sequenceByKey$(sequenceKeys: string[]): Observable<{ [sequenceKey: string]: ISequence }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<ISequenceByKey<ISequence>>>(this._model.get([\n                this._pathSequenceByKey,\n                sequenceKeys,\n                this._propertiesKey\n                    .concat(this._propertiesSequence)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<ISequenceByKey<ISequence>>): { [sequenceKey: string]: ISequence } => {\n                    if (!value) {\n                        value = { json: { sequenceByKey: {} } };\n                    }\n\n                    for (const sequenceKey of sequenceKeys) {\n                        if (!(sequenceKey in value.json.sequenceByKey)) {\n                            console.warn(`Sequence data missing (${sequenceKey})`);\n\n                            value.json.sequenceByKey[sequenceKey] = { key: sequenceKey, keys: [] };\n                        }\n                    }\n\n                    return value.json.sequenceByKey;\n                })),\n            this._pathSequenceByKey,\n            sequenceKeys);\n    }\n\n    public sequenceViewAdd$(sequenceKeys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathSequenceViewAdd],\n                    [sequenceKeys])),\n            this._pathSequenceViewAdd,\n            sequenceKeys);\n    }\n\n    public get clientId(): string {\n        return this._clientId;\n    }\n\n    private _catchInvalidateGet$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateGet(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _catchInvalidateCall$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateCall(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _invalidateGet(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path, paths]);\n    }\n\n    private _invalidateCall(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path], [paths]);\n    }\n\n    private _wrapModelResponse$<T>(modelResponse: falcor.ModelResponse<T>): Observable<T> {\n        return Observable\n            .create(\n                (subscriber: Subscriber<T>): void => {\n                    modelResponse\n                        .then(\n                            (value: T): void => {\n                                subscriber.next(value);\n                                subscriber.complete();\n                            },\n                            (error: Error): void => {\n                                subscriber.error(error);\n                            });\n                });\n    }\n\n    private _wrapCallModelResponse$<T>(modelResponse: falcor.ModelResponse<falcor.JSONEnvelope<T>>): Observable<T> {\n        return this._wrapModelResponse$(modelResponse).pipe(\n            map<falcor.JSONEnvelope<T>, T>(\n                (value: falcor.JSONEnvelope<T>): T => {\n                    return;\n                }));\n    }\n}\n\nexport default APIv3;\n",
     "import * as falcor from \"falcor\";\nimport XmlHttpSource from \"falcor-http-datasource\";\n\nimport {Urls} from \"../Utils\";\n\ntype HttpDataSourceConfiguration = {\n    crossDomain: boolean;\n    withCredentials: boolean;\n    headers?: { [key: string]: string } ;\n};\n\n/**\n * @class ModelCreator\n *\n * @classdesc Creates API models.\n */\nexport class ModelCreator {\n    /**\n     * Creates a Falcor model.\n     *\n     * @description Max cache size will be set to 16 MB. Authorization\n     * header will be added if bearer token is supplied.\n     *\n     * @param {number} clientId - Client id for API requests.\n     * @param {number} [token] - Optional bearer token for API requests of\n     * protected resources.\n     * @returns {falcor.Model} Falcor model for HTTP requests.\n     */\n    public createModel(clientId: string, token?: string): falcor.Model {\n        const configuration: HttpDataSourceConfiguration = {\n            crossDomain: true,\n            withCredentials: false,\n        };\n\n        if (token != null) {\n            configuration.headers = { \"Authorization\": `Bearer ${token}` };\n        }\n\n        return new falcor.Model({\n            maxSize: 16 * 1024 * 1024,\n            source: new XmlHttpSource(Urls.falcorModel(clientId), configuration),\n        });\n    }\n}\n\nexport default ModelCreator;\n",
     "import {combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    ISize,\n} from \"../Render\";\nimport {Urls} from \"../Utils\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\n\nexport class AttributionComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"attribution\";\n    private _disposable: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    protected _activate(): void {\n        this._disposable = observableCombineLatest(\n                this._navigator.stateService.currentNode$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([node, size]: [Node, ISize]): IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._getAttributionNode(node.username, node.key, node.capturedAt, size.width),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._disposable.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getAttributionNode(username: string, key: string, capturedAt: number, width: number): vd.VNode {\n        const compact: boolean = width <= 640;\n\n        const mapillaryIcon: vd.VNode = vd.h(\"div.AttributionMapillaryLogo\", []);\n        const mapillaryLink: vd.VNode = vd.h(\n            \"a.AttributionIconContainer\",\n            { href: Urls.explore, target: \"_blank\" },\n            [mapillaryIcon]);\n\n        const imageBy: string = compact ? `${username}` : `image by ${username}`;\n        const imageByContent: vd.VNode = vd.h(\"div.AttributionUsername\", { textContent: imageBy }, []);\n\n        const date: string[] = new Date(capturedAt).toDateString().split(\" \");\n        const formatted: string = (date.length > 3 ?\n            compact ?\n                [date[3]] :\n                [date[1], date[2] + \",\", date[3]] :\n            date).join(\" \");\n\n        const dateContent: vd.VNode = vd.h(\"div.AttributionDate\", { textContent: formatted }, []);\n\n        const imageLink: vd.VNode =\n            vd.h(\n                \"a.AttributionImageContainer\",\n                { href: Urls.exporeImage(key), target: \"_blank\" },\n                [imageByContent, dateContent]);\n\n        const compactClass: string = compact ? \".AttributionCompact\" : \"\";\n\n        return vd.h(\"div.AttributionContainer\" + compactClass, {}, [mapillaryLink, imageLink]);\n    }\n    }\n\nComponentService.register(AttributionComponent);\nexport default AttributionComponent;\n",
     "import * as vd from \"virtual-dom\";\n\nimport {Container, Navigator} from \"../Viewer\";\n\nimport {ComponentService, Component, IComponentConfiguration} from \"../Component\";\n\nexport class BackgroundComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"background\";\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    protected _activate(): void {\n        this._container.domRenderer.render$\n            .next({name: this._name, vnode: this._getBackgroundNode(\"The viewer can't display the given image.\")});\n    }\n\n    protected _deactivate(): void {\n        return;\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getBackgroundNode(notice: string): vd.VNode {\n        // todo: add condition for when to display the DOM node\n        return vd.h(\"div.BackgroundWrapper\", {}, [\n            vd.h(\"p\", {textContent: notice}, []),\n        ]);\n    }\n}\n\nComponentService.register(BackgroundComponent);\nexport default BackgroundComponent;\n",
-    "import {distinctUntilChanged, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    Component,\n    ComponentService,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {\n    Spatial,\n    Transform,\n} from \"../Geo\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../Render\";\nimport {IFrame} from \"../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\n\nexport class BearingComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"bearing\";\n\n    private _spatial: Spatial;\n    private _svgNamespace: string;\n    private _distinctThreshold: number;\n\n    private _renderSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._spatial = new Spatial();\n        this._svgNamespace = \"http://www.w3.org/2000/svg\";\n        this._distinctThreshold = Math.PI / 360;\n    }\n\n    protected _activate(): void {\n        let cameraBearingFov$: Observable<[number, number]> = this._container.renderService.renderCamera$.pipe(\n            map(\n                (rc: RenderCamera): [number, number] => {\n                    let vFov: number = this._spatial.degToRad(rc.perspective.fov);\n                    let hFov: number = rc.perspective.aspect === Number.POSITIVE_INFINITY ?\n                        Math.PI :\n                        Math.atan(rc.perspective.aspect * Math.tan(0.5 * vFov)) * 2;\n\n                    return [this._spatial.azimuthalToBearing(rc.rotation.phi), hFov];\n                }),\n            distinctUntilChanged(\n                (a1: [number, number], a2: [number, number]): boolean => {\n                    return Math.abs(a2[0] - a1[0]) < this._distinctThreshold &&\n                        Math.abs(a2[1] - a1[1]) < this._distinctThreshold;\n                }));\n\n        this._renderSubscription = cameraBearingFov$.pipe(\n            map(\n                ([bearing, fov]: [number, number]): IVNodeHash => {\n                    const background: vd.VNode = vd.h(\"div.BearingIndicatorBackground\", {}, []);\n                    const backgroundCircle: vd.VNode = vd.h(\"div.BearingIndicatorBackgroundCircle\", {}, []);\n                    const north: vd.VNode = this._createNorth(bearing);\n                    const cameraSector: vd.VNode = this._createCircleSectorCompass(\n                            this._createCircleSector(Math.max(Math.PI / 20, fov), \"#FFF\"));\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.BearingIndicatorContainer\",\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [\n                                background,\n                                backgroundCircle,\n                                north,\n                                cameraSector,\n                            ]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _createCircleSectorCompass(cameraSector: vd.VNode): vd.VNode {\n        let group: vd.VNode =\n            vd.h(\n                \"g\",\n                {\n                    attributes: { transform: \"translate(1,1)\" },\n                    namespace: this._svgNamespace,\n                },\n                [cameraSector]);\n\n        let svg: vd.VNode =\n            vd.h(\n                \"svg\",\n                {\n                    attributes: { viewBox: \"0 0 2 2\" },\n                    namespace: this._svgNamespace,\n                    style: {\n                        height: \"30px\",\n                        left: \"4px\",\n                        position: \"absolute\",\n                        top: \"4px\",\n                        width: \"30px\",\n                    },\n                },\n                [group]);\n\n        return svg;\n    }\n\n    private _createCircleSector(fov: number, fill: string): vd.VNode {\n        if (fov > 2 * Math.PI - Math.PI / 90) {\n            return vd.h(\n            \"circle\",\n            {\n                attributes: { cx: \"0\", cy: \"0\", fill: fill, r: \"1\" },\n                namespace: this._svgNamespace,\n            },\n            []);\n        }\n\n        let arcStart: number = -Math.PI / 2 - fov / 2;\n        let arcEnd: number = arcStart + fov;\n\n        let startX: number = Math.cos(arcStart);\n        let startY: number = Math.sin(arcStart);\n\n        let endX: number = Math.cos(arcEnd);\n        let endY: number = Math.sin(arcEnd);\n\n        let largeArc: number = fov >= Math.PI ? 1 : 0;\n\n        let description: string = `M 0 0 ${startX} ${startY} A 1 1 0 ${largeArc} 1 ${endX} ${endY}`;\n\n        return vd.h(\n            \"path\",\n            {\n                attributes: { d: description, fill: fill },\n                namespace: this._svgNamespace,\n            },\n            []);\n    }\n\n    private _createNorth(bearing: number): vd.VNode {\n        const north: vd.VNode = vd.h(\"div.BearingNorth\", []);\n        const container: vd.VNode = vd.h(\n            \"div.BearingNorthContainer\",\n            { style: { transform: `rotateZ(${-bearing * 180 / Math.PI}deg)` } },\n            [north]);\n\n        return container;\n    }\n}\n\nComponentService.register(BearingComponent);\nexport default BearingComponent;\n",
+    "import {distinctUntilChanged, map, switchMap, takeWhile, scan, skip} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\nimport * as UnitBezier from \"@mapbox/unitbezier\";\n\nimport {\n    Observable,\n    Subscription,\n    combineLatest as observableCombineLatest,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    Component,\n    ComponentService,\n} from \"../Component\";\nimport {\n    Spatial, Transform, Geo,\n} from \"../Geo\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\nimport { IFrame } from \"../state/interfaces/IFrame\";\nimport ViewportCoords from \"../geo/ViewportCoords\";\nimport IBearingConfiguration from \"./interfaces/IBearingConfiguration\";\nimport ISize from \"../render/interfaces/ISize\";\nimport ComponentSize from \"./utils/ComponentSize\";\n\ntype NodeFov = [number, number];\n\ntype NodeBearingFov = [number, number, number];\n\ntype NodeFovState = {\n    alpha: number,\n    curr: NodeFov,\n    prev: NodeFov,\n};\n\ninterface INodeFovOperation {\n    (state: NodeFovState): NodeFovState;\n}\n\n/**\n * @class BearingComponent\n *\n * @classdesc Component for indicating bearing and field of view.\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * var bearingComponent = viewer.getComponent(\"bearing\");\n * bearingComponent.configure({ size: Mapillary.ComponentSize.Small });\n * ```\n */\nexport class BearingComponent extends Component<IBearingConfiguration> {\n    public static componentName: string = \"bearing\";\n\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _svgNamespace: string;\n    private _distinctThreshold: number;\n\n    private _animationSpeed: number;\n    private _unitBezier: UnitBezier;\n\n    private _renderSubscription: Subscription;\n    private _fovSubscription: Subscription;\n    private _fovAnimationSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._spatial = new Spatial();\n        this._viewportCoords = new ViewportCoords();\n\n        this._svgNamespace = \"http://www.w3.org/2000/svg\";\n        this._distinctThreshold = Math.PI / 360;\n\n        this._animationSpeed = 0.075;\n        this._unitBezier = new UnitBezier(0.74, 0.67, 0.38, 0.96);\n    }\n\n    protected _activate(): void {\n        const cameraBearingFov$: Observable<[number, number]> = this._container.renderService.renderCamera$.pipe(\n            map(\n                (rc: RenderCamera): [number, number] => {\n                    let vFov: number = this._spatial.degToRad(rc.perspective.fov);\n                    let hFov: number = rc.perspective.aspect === Number.POSITIVE_INFINITY ?\n                        Math.PI :\n                        Math.atan(rc.perspective.aspect * Math.tan(0.5 * vFov)) * 2;\n\n                    return [this._spatial.azimuthalToBearing(rc.rotation.phi), hFov];\n                }),\n            distinctUntilChanged(\n                (a1: [number, number], a2: [number, number]): boolean => {\n                    return Math.abs(a2[0] - a1[0]) < this._distinctThreshold &&\n                        Math.abs(a2[1] - a1[1]) < this._distinctThreshold;\n                }));\n\n        const nodeFov$: Observable<NodeFov> = observableCombineLatest(\n            this._navigator.stateService.currentState$.pipe(\n                distinctUntilChanged(\n                    undefined,\n                    (frame: IFrame): string => {\n                        return frame.state.currentNode.key;\n                    })),\n            this._navigator.panService.panNodes$).pipe(\n                map(\n                    ([frame, panNodes]: [IFrame, [Node, Transform, number][]]): NodeFov => {\n                        const node: Node = frame.state.currentNode;\n                        const transform: Transform = frame.state.currentTransform;\n\n                        if (node.pano) {\n                            let panoHFov: number = 2 * Math.PI * node.gpano.CroppedAreaImageWidthPixels / node.gpano.FullPanoWidthPixels;\n\n                            return [panoHFov / 2, panoHFov / 2];\n                        }\n\n                        const currentProjectedPoints: number[][] = this._computeProjectedPoints(transform);\n                        const hFov: number = this._spatial.degToRad(this._computeHorizontalFov(currentProjectedPoints));\n\n                        let hFovLeft: number = hFov / 2;\n                        let hFovRight: number = hFov / 2;\n\n                        for (const [n, , f] of panNodes) {\n                            const diff: number = this._spatial.wrap(n.ca - node.ca, -180, 180);\n                            if (diff < 0) {\n                                hFovLeft = this._spatial.degToRad(Math.abs(diff)) + f / 2;\n                            } else {\n                                hFovRight = this._spatial.degToRad(Math.abs(diff)) + f / 2;\n                            }\n                        }\n\n                        return [hFovLeft, hFovRight];\n                    }),\n                distinctUntilChanged(\n                    (\n                        [hFovLeft1, hFovRight1]: NodeFov,\n                        [hFovLeft2, hFovRight2]: NodeFov): boolean => {\n\n                        return Math.abs(hFovLeft2 - hFovLeft1) < this._distinctThreshold &&\n                            Math.abs(hFovRight2 - hFovRight1) < this._distinctThreshold;\n                    }));\n\n        const offset$: Observable<number> = observableCombineLatest(\n            this._navigator.stateService.currentState$.pipe(\n                distinctUntilChanged(\n                    undefined,\n                    (frame: IFrame): string => {\n                        return frame.state.currentNode.key;\n                    })),\n            this._container.renderService.bearing$).pipe(\n                map(\n                    ([frame, bearing]: [IFrame, number]): number => {\n                        const offset: number = this._spatial.degToRad(frame.state.currentNode.ca - bearing);\n\n                        return offset;\n                    }));\n\n        const nodeFovOperation$: Subject<INodeFovOperation> = new Subject<INodeFovOperation>();\n\n        const smoothNodeFov$: Observable<NodeFov> = nodeFovOperation$.pipe(\n            scan(\n                (state: NodeFovState, operation: INodeFovOperation): NodeFovState => {\n                    return operation(state);\n                },\n                { alpha: 0, curr: [0, 0, 0], prev: [0, 0, 0] }),\n            map(\n                (state: NodeFovState): NodeFov => {\n                    const alpha: number = this._unitBezier.solve(state.alpha);\n                    const curr: NodeFov = state.curr;\n                    const prev: NodeFov = state.prev;\n\n                    return [\n                        this._interpolate(prev[0], curr[0], alpha),\n                        this._interpolate(prev[1], curr[1], alpha),\n                    ];\n                }));\n\n        this._fovSubscription = nodeFov$.pipe(\n            map(\n                (nbf: NodeFov): INodeFovOperation => {\n                    return (state: NodeFovState): NodeFovState => {\n                        const a: number = this._unitBezier.solve(state.alpha);\n                        const c: NodeFov = state.curr;\n                        const p: NodeFov = state.prev;\n\n                        const prev: NodeFov = [\n                            this._interpolate(p[0], c[0], a),\n                            this._interpolate(p[1], c[1], a),\n                        ];\n\n                        const curr: NodeFov = <NodeFov>nbf.slice();\n\n                        return {\n                            alpha: 0,\n                            curr: curr,\n                            prev: prev,\n                        };\n                    };\n                }))\n            .subscribe(nodeFovOperation$);\n\n        this._fovAnimationSubscription = nodeFov$.pipe(\n            switchMap(\n                (): Observable<number> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        skip(1),\n                        scan<RenderCamera, number>(\n                            (alpha: number): number => {\n                                return alpha + this._animationSpeed;\n                            },\n                            0),\n                        takeWhile(\n                            (alpha: number): boolean => {\n                                return alpha <= 1 + this._animationSpeed;\n                            }),\n                        map(\n                            (alpha: number): number => {\n                                return Math.min(alpha, 1);\n                            }));\n                }),\n            map(\n                (alpha: number): INodeFovOperation => {\n                    return (nbfState: NodeFovState): NodeFovState => {\n                        return {\n                            alpha: alpha,\n                            curr: <NodeFov>nbfState.curr.slice(),\n                            prev: <NodeFov>nbfState.prev.slice(),\n                        };\n                    };\n                }))\n            .subscribe(nodeFovOperation$);\n\n        const nodeBearingFov$: Observable<NodeBearingFov> = observableCombineLatest(\n            offset$,\n            smoothNodeFov$).pipe(\n                map(\n                    ([offset, fov]: [number, NodeFov]): NodeBearingFov => {\n                        return [offset, fov[0], fov[1]];\n                    }));\n\n        this._renderSubscription = observableCombineLatest(\n            cameraBearingFov$,\n            nodeBearingFov$,\n            this._configuration$,\n            this._container.renderService.size$).pipe(\n            map(\n                ([[cb, cf], [no, nfl, nfr], configuration, size]:\n                    [[number, number], [number, number, number], IBearingConfiguration, ISize]): IVNodeHash => {\n\n                    const background: vd.VNode = this._createBackground(cb);\n                    const fovIndicator: vd.VNode = this._createFovIndicator(nfl, nfr, no);\n                    const north: vd.VNode = this._createNorth(cb);\n                    const cameraSector: vd.VNode = this._createCircleSectorCompass(\n                            this._createCircleSector(Math.max(Math.PI / 20, cf), \"#FFF\"));\n\n                    const compact: string = configuration.size === ComponentSize.Small ||\n                        configuration.size === ComponentSize.Automatic && size.width < 640 ?\n                        \".BearingCompact\" : \"\";\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.BearingIndicatorContainer\" + compact,\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [\n                                background,\n                                fovIndicator,\n                                north,\n                                cameraSector,\n                            ]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._fovSubscription.unsubscribe();\n        this._fovAnimationSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IBearingConfiguration {\n        return { size: ComponentSize.Automatic };\n    }\n\n    private _createFovIndicator(fovLeft: number, fovRigth: number, offset: number): vd.VNode {\n        const arc: vd.VNode = this._createFovArc(fovLeft, fovRigth);\n\n        const group: vd.VNode =\n            vd.h(\n                \"g\",\n                {\n                    attributes: { transform: \"translate(18,18)\" },\n                    namespace: this._svgNamespace,\n                },\n                [arc]);\n\n        const svg: vd.VNode =\n            vd.h(\n                \"svg\",\n                {\n                    attributes: { viewBox: \"0 0 36 36\" },\n                    namespace: this._svgNamespace,\n                    style: {\n                        height: \"36px\",\n                        left: \"2px\",\n                        position: \"absolute\",\n                        top: \"2px\",\n                        transform: `rotateZ(${this._spatial.radToDeg(offset)}deg)`,\n                        width: \"36px\",\n                    },\n                },\n                [group]);\n\n        return svg;\n    }\n\n    private _createFovArc(fovLeft: number, fovRigth: number): vd.VNode {\n        const radius: number = 16.75;\n        const strokeWidth: number = 2.5;\n        const fov: number = fovLeft + fovRigth;\n\n        if (fov > 2 * Math.PI - Math.PI / 90) {\n            return vd.h(\n                \"circle\",\n                {\n                    attributes: {\n                        cx: \"0\",\n                        cy: \"0\",\n                        \"fill-opacity\": \"0\",\n                        r: `${radius}`,\n                        stroke: \"#FFF\",\n                        \"stroke-width\":\n                        `${strokeWidth}`,\n                    },\n                    namespace: this._svgNamespace,\n                },\n                []);\n        }\n\n        let arcStart: number = -Math.PI / 2 - fovLeft;\n        let arcEnd: number = arcStart + fov;\n\n        let startX: number = radius * Math.cos(arcStart);\n        let startY: number = radius * Math.sin(arcStart);\n\n        let endX: number = radius * Math.cos(arcEnd);\n        let endY: number = radius * Math.sin(arcEnd);\n\n        let largeArc: number = fov >= Math.PI ? 1 : 0;\n\n        let description: string = `M ${startX} ${startY} A ${radius} ${radius} 0 ${largeArc} 1 ${endX} ${endY}`;\n\n        return vd.h(\n            \"path\",\n            {\n                attributes: {\n                    d: description,\n                    \"fill-opacity\": \"0\",\n                    stroke: \"#FFF\",\n                    \"stroke-width\": `${strokeWidth}`,\n                },\n                namespace: this._svgNamespace,\n            },\n            []);\n    }\n\n    private _createCircleSectorCompass(cameraSector: vd.VNode): vd.VNode {\n        let group: vd.VNode =\n            vd.h(\n                \"g\",\n                {\n                    attributes: { transform: \"translate(1,1)\" },\n                    namespace: this._svgNamespace,\n                },\n                [cameraSector]);\n\n        let svg: vd.VNode =\n            vd.h(\n                \"svg\",\n                {\n                    attributes: { viewBox: \"0 0 2 2\" },\n                    namespace: this._svgNamespace,\n                    style: {\n                        height: \"26px\",\n                        left: \"7px\",\n                        position: \"absolute\",\n                        top: \"7px\",\n                        width: \"26px\",\n                    },\n                },\n                [group]);\n\n        return svg;\n    }\n\n    private _createCircleSector(fov: number, fill: string): vd.VNode {\n        if (fov > 2 * Math.PI - Math.PI / 90) {\n            return vd.h(\n            \"circle\",\n            {\n                attributes: { cx: \"0\", cy: \"0\", fill: fill, r: \"1\" },\n                namespace: this._svgNamespace,\n            },\n            []);\n        }\n\n        let arcStart: number = -Math.PI / 2 - fov / 2;\n        let arcEnd: number = arcStart + fov;\n\n        let startX: number = Math.cos(arcStart);\n        let startY: number = Math.sin(arcStart);\n\n        let endX: number = Math.cos(arcEnd);\n        let endY: number = Math.sin(arcEnd);\n\n        let largeArc: number = fov >= Math.PI ? 1 : 0;\n\n        let description: string = `M 0 0 ${startX} ${startY} A 1 1 0 ${largeArc} 1 ${endX} ${endY}`;\n\n        return vd.h(\n            \"path\",\n            {\n                attributes: { d: description, fill: fill },\n                namespace: this._svgNamespace,\n            },\n            []);\n    }\n\n    private _createNorth(bearing: number): vd.VNode {\n        const north: vd.VNode = vd.h(\"div.BearingNorth\", []);\n        const container: vd.VNode = vd.h(\n            \"div.BearingNorthContainer\",\n            { style: { transform: `rotateZ(${this._spatial.radToDeg(-bearing)}deg)` } },\n            [north]);\n\n        return container;\n    }\n\n    private _createBackground(bearing: number): vd.VNode {\n        return vd.h(\n            \"div.BearingIndicatorBackground\",\n            { style: { transform: `rotateZ(${this._spatial.radToDeg(-bearing)}deg)` } },\n            [\n                vd.h(\"div.BearingIndicatorBackgroundCircle\", []),\n                vd.h(\n                    \"div.BearingIndicatorBackgroundArrowContainer\",\n                    [\n                        vd.h(\"div.BearingIndicatorBackgroundArrow\", []),\n                    ]),\n            ]);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const vertices: number[][] = [[1, 0]];\n        const directions: number[][] = [[0, 0.5]];\n        const pointsPerLine: number = 12;\n\n        return Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);\n    }\n\n    private _computeHorizontalFov(projectedPoints: number[][]): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._coordToFov(projectedPoint[0]);\n                });\n\n        const fov: number = Math.min(...fovs);\n\n        return fov;\n    }\n\n    private _coordToFov(x: number): number {\n        return this._spatial.radToDeg(2 * Math.atan(x));\n    }\n\n    private _interpolate(x1: number, x2: number, alpha: number): number {\n        return (1 - alpha) * x1 + alpha * x2;\n    }\n}\n\nComponentService.register(BearingComponent);\nexport default BearingComponent;\n",
     "import {\n    from as observableFrom,\n    merge as observableMerge,\n    empty as observableEmpty,\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    zip as observableZip,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    map,\n    first,\n    switchMap,\n    filter,\n    catchError,\n    mergeMap,\n    expand,\n    skip,\n    mergeAll,\n} from \"rxjs/operators\";\n\nimport {EdgeDirection, IEdge} from \"../Edge\";\nimport {IEdgeStatus, Node} from \"../Graph\";\nimport {ComponentService, Component, ICacheConfiguration, ICacheDepth} from \"../Component\";\nimport {Container, Navigator} from \"../Viewer\";\n\ntype EdgesDepth = [IEdge[], number];\n\nexport class CacheComponent extends Component<ICacheConfiguration> {\n    public static componentName: string = \"cache\";\n\n    private _sequenceSubscription: Subscription;\n    private _spatialSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    /**\n     * Set the cache depth.\n     *\n     * Configures the cache depth. The cache depth can be different for\n     * different edge direction types.\n     *\n     * @param {ICacheDepth} depth - Cache depth structure.\n     */\n    public setDepth(depth: ICacheDepth): void {\n        this.configure({ depth: depth });\n    }\n\n    protected _activate(): void {\n        this._sequenceSubscription = observableCombineLatest(\n                this._navigator.stateService.currentNode$.pipe(\n                    switchMap(\n                        (node: Node): Observable<IEdgeStatus> => {\n                            return node.sequenceEdges$;\n                        }),\n                    filter(\n                        (status: IEdgeStatus): boolean => {\n                            return status.cached;\n                        })),\n                this._configuration$).pipe(\n            switchMap(\n                (nc: [IEdgeStatus, ICacheConfiguration]): Observable<EdgesDepth> => {\n                    let status: IEdgeStatus = nc[0];\n                    let configuration: ICacheConfiguration = nc[1];\n\n                    let sequenceDepth: number = Math.max(0, Math.min(4, configuration.depth.sequence));\n\n                    let next$: Observable<EdgesDepth> = this._cache$(status.edges, EdgeDirection.Next, sequenceDepth);\n                    let prev$: Observable<EdgesDepth> = this._cache$(status.edges, EdgeDirection.Prev, sequenceDepth);\n\n                    return observableMerge<EdgesDepth>(\n                            next$,\n                            prev$).pipe(\n                        catchError(\n                            (error: Error, caught: Observable<EdgesDepth>): Observable<EdgesDepth> => {\n                                console.error(\"Failed to cache sequence edges.\", error);\n\n                                return observableEmpty();\n                            }));\n                 }))\n            .subscribe(() => { /*noop*/ });\n\n        this._spatialSubscription = observableCombineLatest(\n                this._navigator.stateService.currentNode$.pipe(\n                    switchMap(\n                        (node: Node): Observable<[Node, IEdgeStatus]> => {\n                            return observableCombineLatest(\n                                observableOf<Node>(node),\n                                node.spatialEdges$.pipe(\n                                    filter(\n                                        (status: IEdgeStatus): boolean => {\n                                            return status.cached;\n                                        })));\n                        })),\n                this._configuration$).pipe(\n            switchMap(\n                ([[node, edgeStatus], configuration]: [[Node, IEdgeStatus], ICacheConfiguration]): Observable<EdgesDepth> => {\n                    let edges: IEdge[] = edgeStatus.edges;\n                    let depth: ICacheDepth = configuration.depth;\n\n                    let panoDepth: number = Math.max(0, Math.min(2, depth.pano));\n                    let stepDepth: number = node.pano ? 0 : Math.max(0, Math.min(3, depth.step));\n                    let turnDepth: number = node.pano ? 0 : Math.max(0, Math.min(1, depth.turn));\n\n                    let pano$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.Pano, panoDepth);\n\n                    let forward$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepForward, stepDepth);\n                    let backward$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepBackward, stepDepth);\n                    let left$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepLeft, stepDepth);\n                    let right$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepRight, stepDepth);\n\n                    let turnLeft$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.TurnLeft, turnDepth);\n                    let turnRight$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.TurnRight, turnDepth);\n                    let turnU$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.TurnU, turnDepth);\n\n                    return observableMerge<EdgesDepth>(\n                            forward$,\n                            backward$,\n                            left$,\n                            right$,\n                            pano$,\n                            turnLeft$,\n                            turnRight$,\n                            turnU$).pipe(\n                        catchError(\n                            (error: Error, caught: Observable<EdgesDepth>): Observable<EdgesDepth> => {\n                                console.error(\"Failed to cache spatial edges.\", error);\n\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe(() => { /*noop*/ });\n    }\n\n    protected _deactivate(): void {\n        this._sequenceSubscription.unsubscribe();\n        this._spatialSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): ICacheConfiguration {\n        return { depth: { pano: 1, sequence: 2, step: 1, turn: 0 } };\n    }\n\n    private _cache$(edges: IEdge[], direction: EdgeDirection, depth: number): Observable<EdgesDepth> {\n        return observableZip(\n                observableOf<IEdge[]>(edges),\n                observableOf<number>(depth)).pipe(\n            expand(\n                (ed: EdgesDepth): Observable<EdgesDepth> => {\n                    let es: IEdge[] = ed[0];\n                    let d: number = ed[1];\n\n                    let edgesDepths$: Observable<EdgesDepth>[] = [];\n\n                    if (d > 0) {\n                        for (let edge of es) {\n                            if (edge.data.direction === direction) {\n                                edgesDepths$.push(\n                                    observableZip(\n                                            this._navigator.graphService.cacheNode$(edge.to).pipe(\n                                                mergeMap(\n                                                    (n: Node): Observable<IEdge[]> => {\n                                                        return this._nodeToEdges$(n, direction);\n                                                    })),\n                                            observableOf<number>(d - 1)));\n                            }\n                        }\n                    }\n\n                    return observableFrom<Observable<EdgesDepth>>(edgesDepths$).pipe(\n                        mergeAll());\n                }),\n            skip(1));\n    }\n\n    private _nodeToEdges$(node: Node, direction: EdgeDirection): Observable<IEdge[]> {\n       return ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n            node.sequenceEdges$ :\n            node.spatialEdges$).pipe(\n                first(\n                    (status: IEdgeStatus): boolean => {\n                        return status.cached;\n                    }),\n                map(\n                    (status: IEdgeStatus): IEdge[] => {\n                        return status.edges;\n                    }));\n    }\n}\n\nComponentService.register(CacheComponent);\nexport default CacheComponent;\n",
     "import {refCount, publishReplay, scan, startWith} from \"rxjs/operators\";\nimport {BehaviorSubject, Observable, Subject} from \"rxjs\";\n\nimport {IComponentConfiguration} from \"../Component\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\nimport {EventEmitter} from \"../Utils\";\n\nexport abstract class Component<TConfiguration extends IComponentConfiguration> extends EventEmitter {\n    public static componentName: string = \"not_worthy\";\n\n    protected _activated: boolean;\n    protected _container: Container;\n    protected _name: string;\n    protected _navigator: Navigator;\n\n    protected _activated$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n    protected _configuration$: Observable<TConfiguration>;\n    protected _configurationSubject$: Subject<TConfiguration> = new Subject<TConfiguration>();\n\n    constructor (name: string, container: Container, navigator: Navigator) {\n        super();\n\n        this._activated = false;\n        this._container = container;\n        this._name = name;\n        this._navigator = navigator;\n\n        this._configuration$ =\n            this._configurationSubject$.pipe(\n                startWith(this.defaultConfiguration),\n                scan(\n                    (conf: TConfiguration, newConf: TConfiguration): TConfiguration => {\n                        for (let key in newConf) {\n                            if (newConf.hasOwnProperty(key)) {\n                                conf[key] = <any>newConf[key];\n                            }\n                        }\n\n                        return conf;\n                    }),\n                publishReplay(1),\n                refCount());\n\n        this._configuration$.subscribe(() => { /*noop*/ });\n    }\n\n    public get activated(): boolean {\n        return this._activated;\n    }\n\n    /** @ignore */\n    public get activated$(): Observable<boolean> {\n        return this._activated$;\n    }\n\n    /**\n     * Get default configuration.\n     *\n     * @returns {TConfiguration} Default configuration for component.\n     */\n    public get defaultConfiguration(): TConfiguration {\n        return this._getDefaultConfiguration();\n    }\n\n    /** @ignore */\n    public get configuration$(): Observable<TConfiguration> {\n        return this._configuration$;\n    }\n\n    /**\n     * Get name.\n     *\n     * @description The name of the component. Used when interacting with the\n     * component through the Viewer's API.\n     */\n    public get name(): string {\n        return this._name;\n    }\n\n    public activate(conf?: TConfiguration): void {\n        if (this._activated) {\n            return;\n        }\n\n        if (conf !== undefined) {\n            this._configurationSubject$.next(conf);\n        }\n\n        this._activated = true;\n        this._activate();\n        this._activated$.next(true);\n    }\n\n    public configure(conf: TConfiguration): void {\n        this._configurationSubject$.next(conf);\n    }\n\n    public deactivate(): void {\n        if (!this._activated) {\n            return;\n        }\n\n        this._activated = false;\n        this._deactivate();\n        this._container.domRenderer.clear(this._name);\n        this._container.glRenderer.clear(this._name);\n        this._activated$.next(false);\n    }\n\n    /**\n     * Detect the viewer's new width and height and resize the component's\n     * rendered elements accordingly if applicable.\n     *\n     * @ignore\n     */\n    public resize(): void { return; }\n\n    protected abstract _activate(): void;\n\n    protected abstract _deactivate(): void;\n\n    protected abstract _getDefaultConfiguration(): TConfiguration;\n}\n\nexport default Component;\n",
     "import {ArgumentMapillaryError} from \"../Error\";\nimport {Container, Navigator} from \"../Viewer\";\nimport {CoverComponent, Component, IComponentConfiguration} from \"../Component\";\n\ninterface IActiveComponent {\n    active: boolean;\n    component: Component<IComponentConfiguration>;\n}\n\nexport class ComponentService {\n    public static registeredCoverComponent: typeof CoverComponent;\n    public static registeredComponents: {[key: string]: { new (...args: any[]): Component<IComponentConfiguration>; }} = {};\n\n    private _coverActivated: boolean;\n    private _coverComponent: CoverComponent;\n    private _components: {[key: string]: IActiveComponent} = {};\n\n    public static register<T extends Component<IComponentConfiguration>>(\n        component: { componentName: string, new (...args: any[]): T; }): void {\n        if (ComponentService.registeredComponents[component.componentName] === undefined) {\n            ComponentService.registeredComponents[component.componentName] = component;\n        }\n    }\n\n    public static registerCover(coverComponent: typeof CoverComponent): void {\n        ComponentService.registeredCoverComponent = coverComponent;\n    }\n\n    constructor (container: Container, navigator: Navigator) {\n        for (const componentName in ComponentService.registeredComponents) {\n            if (!ComponentService.registeredComponents.hasOwnProperty(componentName)) {\n                continue;\n            }\n\n            const component: new (...args: any[]) => Component<IComponentConfiguration> =\n                ComponentService.registeredComponents[componentName];\n\n            this._components[componentName] = {\n                active: false,\n                component: new component(componentName, container, navigator),\n            };\n        }\n\n        this._coverComponent = new ComponentService.registeredCoverComponent(\"cover\", container, navigator);\n        this._coverComponent.activate();\n        this._coverActivated = true;\n    }\n\n    public get coverActivated(): boolean {\n        return this._coverActivated;\n    }\n\n    public activateCover(): void {\n        if (this._coverActivated) {\n            return;\n        }\n\n        this._coverActivated = true;\n\n        for (const componentName in this._components) {\n            if (!this._components.hasOwnProperty(componentName)) {\n                continue;\n            }\n\n            const component: IActiveComponent = this._components[componentName];\n\n            if (component.active) {\n                component.component.deactivate();\n            }\n        }\n    }\n\n    public deactivateCover(): void {\n        if (!this._coverActivated) {\n            return;\n        }\n\n        this._coverActivated = false;\n\n        for (const componentName in this._components) {\n            if (!this._components.hasOwnProperty(componentName)) {\n                continue;\n            }\n\n            const component: IActiveComponent = this._components[componentName];\n\n            if (component.active) {\n                component.component.activate();\n            }\n        }\n    }\n\n    public activate(name: string): void {\n        this._checkName(name);\n        this._components[name].active = true;\n\n        if (!this._coverActivated) {\n            this.get(name).activate();\n        }\n    }\n\n    public configure<TConfiguration extends IComponentConfiguration>(name: string, conf: TConfiguration): void {\n        this._checkName(name);\n        this.get(name).configure(conf);\n    }\n\n    public deactivate(name: string): void {\n        this._checkName(name);\n        this._components[name].active = false;\n\n        if (!this._coverActivated) {\n            this.get(name).deactivate();\n        }\n    }\n\n    public get<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return <TComponent>this._components[name].component;\n    }\n\n    public getCover(): CoverComponent {\n        return this._coverComponent;\n    }\n\n    private _checkName(name: string): void {\n        if (!(name in this._components)) {\n            throw new ArgumentMapillaryError(`Component does not exist: ${name}`);\n        }\n    }\n}\n\nexport default ComponentService;\n",
-    "import {of as observableOf, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {map, distinctUntilChanged, switchMap, first, filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    CoverState,\n    ICoverConfiguration,\n    ComponentService,\n    Component,\n} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    ISize,\n} from \"../Render\";\nimport {Urls} from \"../Utils\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../Viewer\";\n\nexport class CoverComponent extends Component<ICoverConfiguration> {\n    public static componentName: string = \"cover\";\n\n    private _renderSubscription: Subscription;\n    private _keySubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    public _activate(): void {\n        this._configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (configuration: ICoverConfiguration): CoverState => {\n                    return configuration.state;\n                }),\n            switchMap(\n                (configuration: ICoverConfiguration): Observable<[CoverState, Node]> => {\n                    return observableCombineLatest(\n                            observableOf(configuration.state),\n                            this._navigator.stateService.currentNode$);\n                }),\n            switchMap(\n                ([state, node]: [CoverState, Node]): Observable<[string, string]> => {\n                    const keySrc$: Observable<[string, string]> = observableCombineLatest(\n                            observableOf(node.key),\n                            node.image$.pipe(\n                                filter(\n                                    (image: HTMLImageElement): boolean => {\n                                        return !!image;\n                                    }),\n                                map(\n                                    (image: HTMLImageElement): string => {\n                                        return image.src;\n                                    })));\n\n                    return state === CoverState.Visible ? keySrc$.pipe(first()) : keySrc$;\n                }),\n            distinctUntilChanged(\n                ([k1, s1]: [string, string], [k2, s2]: [string, string]): boolean => {\n                    return k1 === k2 && s1 === s2;\n                }),\n            map(\n                ([key, src]: [string, string]): ICoverConfiguration => {\n                    return { key: key, src: src };\n                }))\n            .subscribe(this._configurationSubject$);\n\n        this._renderSubscription = observableCombineLatest(\n                this._configuration$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([configuration, size]: [ICoverConfiguration, ISize]): IVNodeHash => {\n                    if (!configuration.key) {\n                        return { name: this._name, vnode: vd.h(\"div\", []) };\n                    }\n\n                    const compactClass: string = size.width <= 640 || size.height <= 480 ? \".CoverCompact\" : \"\";\n\n                    if (configuration.state === CoverState.Hidden) {\n                        const doneContainer: vd.VNode = vd.h(\n                            \"div.CoverContainer.CoverDone\" + compactClass,\n                            [this._getCoverBackgroundVNode(configuration)]);\n\n                        return { name: this._name, vnode: doneContainer };\n                    }\n\n                    const container: vd.VNode = vd.h(\n                        \"div.CoverContainer\" + compactClass,\n                        [this._getCoverButtonVNode(configuration)]);\n\n                    return { name: this._name, vnode: container };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    public _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._keySubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): ICoverConfiguration {\n        return { state: CoverState.Visible };\n    }\n\n    private _getCoverButtonVNode(configuration: ICoverConfiguration): vd.VNode {\n        const cover: string = configuration.state === CoverState.Loading ? \"div.Cover.CoverLoading\" : \"div.Cover\";\n        const coverButton: vd.VNode = vd.h(\n            \"div.CoverButton\",\n            { onclick: (): void => { this.configure({ state: CoverState.Loading }); } },\n            [vd.h(\"div.CoverButtonIcon\", [])]);\n\n        const coverLogo: vd.VNode = vd.h(\"a.CoverLogo\", {href: Urls.explore, target: \"_blank\"}, []);\n\n        return vd.h(cover, [this._getCoverBackgroundVNode(configuration), coverButton, coverLogo]);\n    }\n\n    private _getCoverBackgroundVNode(conf: ICoverConfiguration): vd.VNode {\n        let url: string = conf.src != null ?\n            conf.src : Urls.thumbnail(conf.key, ImageSize.Size640);\n\n        let properties: vd.createProperties = { style: { backgroundImage: `url(${url})` } };\n\n        let children: vd.VNode[] = [];\n        if (conf.state === CoverState.Loading) {\n            children.push(vd.h(\"div.Spinner\", {}, []));\n        }\n\n        return vd.h(\"div.CoverBackground\", properties, children);\n    }\n}\n\nComponentService.registerCover(CoverComponent);\nexport default CoverComponent;\n",
+    "import {of as observableOf, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {map, distinctUntilChanged, switchMap, first, filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    CoverState,\n    ICoverConfiguration,\n    ComponentService,\n    Component,\n} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    ISize,\n} from \"../Render\";\nimport {Urls} from \"../Utils\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../Viewer\";\n\nexport class CoverComponent extends Component<ICoverConfiguration> {\n    public static componentName: string = \"cover\";\n\n    private _renderSubscription: Subscription;\n    private _keySubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    public _activate(): void {\n        this._configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (configuration: ICoverConfiguration): CoverState => {\n                    return configuration.state;\n                }),\n            switchMap(\n                (configuration: ICoverConfiguration): Observable<[CoverState, Node]> => {\n                    return observableCombineLatest(\n                            observableOf(configuration.state),\n                            this._navigator.stateService.currentNode$);\n                }),\n            switchMap(\n                ([state, node]: [CoverState, Node]): Observable<[string, string]> => {\n                    const keySrc$: Observable<[string, string]> = observableCombineLatest(\n                            observableOf(node.key),\n                            node.image$.pipe(\n                                filter(\n                                    (image: HTMLImageElement): boolean => {\n                                        return !!image;\n                                    }),\n                                map(\n                                    (image: HTMLImageElement): string => {\n                                        return image.src;\n                                    })));\n\n                    return state === CoverState.Visible ? keySrc$.pipe(first()) : keySrc$;\n                }),\n            distinctUntilChanged(\n                ([k1, s1]: [string, string], [k2, s2]: [string, string]): boolean => {\n                    return k1 === k2 && s1 === s2;\n                }),\n            map(\n                ([key, src]: [string, string]): ICoverConfiguration => {\n                    return { key: key, src: src };\n                }))\n            .subscribe(this._configurationSubject$);\n\n        this._renderSubscription = observableCombineLatest(\n                this._configuration$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([configuration, size]: [ICoverConfiguration, ISize]): IVNodeHash => {\n                    if (!configuration.key) {\n                        return { name: this._name, vnode: vd.h(\"div\", []) };\n                    }\n\n                    const compactClass: string = size.width <= 640 || size.height <= 480 ? \".CoverCompact\" : \"\";\n\n                    if (configuration.state === CoverState.Hidden) {\n                        const doneContainer: vd.VNode = vd.h(\n                            \"div.CoverContainer.CoverDone\" + compactClass,\n                            [this._getCoverBackgroundVNode(configuration)]);\n\n                        return { name: this._name, vnode: doneContainer };\n                    }\n\n                    const container: vd.VNode = vd.h(\n                        \"div.CoverContainer\" + compactClass,\n                        [this._getCoverButtonVNode(configuration)]);\n\n                    return { name: this._name, vnode: container };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    public _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._keySubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): ICoverConfiguration {\n        return { state: CoverState.Visible };\n    }\n\n    private _getCoverButtonVNode(configuration: ICoverConfiguration): vd.VNode {\n        const cover: string = configuration.state === CoverState.Loading ? \"div.Cover.CoverLoading\" : \"div.Cover\";\n        const coverButton: vd.VNode = vd.h(\n            \"div.CoverButton\",\n            [vd.h(\"div.CoverButtonIcon\", [])]);\n\n        const coverLogo: vd.VNode = vd.h(\"a.CoverLogo\", {href: Urls.explore, target: \"_blank\"}, []);\n        const coverIndicator: vd.VNode = vd.h(\n            \"div.CoverIndicator\",\n            { onclick: (): void => { this.configure({ state: CoverState.Loading }); } },\n            []);\n\n        return vd.h(\n            cover,\n            [\n                this._getCoverBackgroundVNode(configuration),\n                coverIndicator,\n                coverButton,\n                coverLogo,\n            ]);\n    }\n\n    private _getCoverBackgroundVNode(conf: ICoverConfiguration): vd.VNode {\n        let url: string = conf.src != null ?\n            conf.src : Urls.thumbnail(conf.key, ImageSize.Size640);\n\n        let properties: vd.createProperties = { style: { backgroundImage: `url(${url})` } };\n\n        let children: vd.VNode[] = [];\n        if (conf.state === CoverState.Loading) {\n            children.push(vd.h(\"div.Spinner\", {}, []));\n        }\n\n        return vd.h(\"div.CoverBackground\", properties, children);\n    }\n}\n\nComponentService.registerCover(CoverComponent);\nexport default CoverComponent;\n",
     "import {combineLatest as observableCombineLatest, Observable, BehaviorSubject, Subscription} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {Component, ComponentService, IComponentConfiguration} from \"../Component\";\nimport {ILoadStatus} from \"../Graph\";\nimport {IVNodeHash} from \"../Render\";\nimport {IFrame} from \"../State\";\n\nexport class DebugComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"debug\";\n\n    private _disposable: Subscription;\n\n    private _open$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n    public _activate(): void {\n        this._disposable = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                this._open$,\n                this._navigator.imageLoadingService.loadstatus$).pipe(\n            map(\n                ([frame, open, loadStatus]: [IFrame, boolean, {[key: string]: ILoadStatus}]): IVNodeHash => {\n                    return {name: this._name, vnode: this._getDebugVNode(open, this._getDebugInfo(frame, loadStatus))};\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    public _deactivate(): void {\n        this._disposable.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getDebugInfo(frame: IFrame, loadStatus: {[key: string]: ILoadStatus}): vd.VNode[] {\n        let ret: vd.VNode[] = [];\n\n        ret.push(vd.h(\"h2\", \"Node\"));\n\n        if (frame.state.currentNode) {\n            ret.push(vd.h(\"p\", `currentNode: ${frame.state.currentNode.key}`));\n        }\n\n        if (frame.state.previousNode) {\n            ret.push(vd.h(\"p\", `previousNode: ${frame.state.previousNode.key}`));\n        }\n\n        ret.push(vd.h(\"h2\", \"Loading\"));\n\n        let total: number = 0;\n        let loaded: number = 0;\n        let loading: number = 0;\n\n        for (const key in loadStatus) {\n            if (!loadStatus.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const status: ILoadStatus = loadStatus[key];\n\n            total += status.loaded;\n\n            if (status.loaded !== status.total) {\n                loading++;\n            } else {\n                loaded++;\n            }\n        }\n\n        ret.push(vd.h(\"p\", `Loaded Images: ${loaded}`));\n        ret.push(vd.h(\"p\", `Loading Images: ${loading}`));\n        ret.push(vd.h(\"p\", `Total bytes loaded: ${total}`));\n\n        ret.push(vd.h(\"h2\", \"Camera\"));\n\n        ret.push(vd.h(\"p\", `camera.position.x: ${frame.state.camera.position.x}`));\n        ret.push(vd.h(\"p\", `camera.position.y: ${frame.state.camera.position.y}`));\n        ret.push(vd.h(\"p\", `camera.position.z: ${frame.state.camera.position.z}`));\n\n        ret.push(vd.h(\"p\", `camera.lookat.x: ${frame.state.camera.lookat.x}`));\n        ret.push(vd.h(\"p\", `camera.lookat.y: ${frame.state.camera.lookat.y}`));\n        ret.push(vd.h(\"p\", `camera.lookat.z: ${frame.state.camera.lookat.z}`));\n\n        ret.push(vd.h(\"p\", `camera.up.x: ${frame.state.camera.up.x}`));\n        ret.push(vd.h(\"p\", `camera.up.y: ${frame.state.camera.up.y}`));\n        ret.push(vd.h(\"p\", `camera.up.z: ${frame.state.camera.up.z}`));\n\n        return ret;\n    }\n\n    private _getDebugVNode(open: boolean, info: vd.VNode[]): vd.VNode {\n        if (open) {\n            return vd.h(\"div.Debug\", {}, [\n                vd.h(\"h2\", {}, [\"Debug\"]),\n                this._getDebugVNodeButton(open),\n                vd.h(\"pre\", {}, info),\n            ]);\n        } else {\n            return this._getDebugVNodeButton(open);\n        }\n    }\n\n    private _getDebugVNodeButton(open: boolean): any {\n        let buttonText: string = open ? \"Disable Debug\" : \"D\";\n        let buttonCssClass: string = open ? \"\" : \".DebugButtonFixed\";\n\n        if (open) {\n            return vd.h(`button.DebugButton${buttonCssClass}`,\n                        {onclick: this._closeDebugElement.bind(this)},\n                        [buttonText]);\n        } else {\n            return vd.h(`button.DebugButton${buttonCssClass}`,\n                        {onclick: this._openDebugElement.bind(this)},\n                        [buttonText]);\n        }\n    }\n\n    private _closeDebugElement(open: boolean): void {\n        this._open$.next(false);\n    }\n\n    private _openDebugElement(): void {\n        this._open$.next(true);\n    }\n}\n\nComponentService.register(DebugComponent);\nexport default DebugComponent;\n",
     "import {combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {distinctUntilChanged, filter, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {ComponentService, Component, IComponentConfiguration} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {ISize} from \"../Render\";\nimport {DOM} from \"../Utils\";\nimport {Container, Navigator} from \"../Viewer\";\n\nexport class ImageComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"image\";\n\n    private _canvasId: string;\n    private _dom: DOM;\n    private drawSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator, dom?: DOM) {\n        super(name, container, navigator);\n\n        this._canvasId = `${container.id}-${this._name}`;\n        this._dom = !!dom ? dom : new DOM();\n    }\n\n    protected _activate(): void {\n        const canvasSize$: Observable<[HTMLCanvasElement, ISize]> = this._container.domRenderer.element$.pipe(\n            map(\n                (element: HTMLElement): HTMLCanvasElement => {\n                    return <HTMLCanvasElement>this._dom.document.getElementById(this._canvasId);\n                }),\n            filter(\n                (canvas: HTMLCanvasElement): boolean => {\n                    return !!canvas;\n                }),\n            map(\n                (canvas: HTMLCanvasElement): [HTMLCanvasElement, ISize] => {\n                    const adaptableDomRenderer: HTMLElement = canvas.parentElement;\n                    const width: number = adaptableDomRenderer.offsetWidth;\n                    const height: number = adaptableDomRenderer.offsetHeight;\n\n                    return [canvas, { height: height, width: width }];\n                }),\n            distinctUntilChanged(\n                (s1: ISize, s2: ISize): boolean => {\n                    return s1.height === s2.height && s1.width === s2.width;\n                },\n                ([canvas, size]: [HTMLCanvasElement, ISize]): ISize => {\n                    return size;\n                }));\n\n        this.drawSubscription = observableCombineLatest(\n                canvasSize$,\n                this._navigator.stateService.currentNode$)\n            .subscribe(\n                ([[canvas, size], node]: [[HTMLCanvasElement, ISize], Node]): void => {\n                    canvas.width = size.width;\n                    canvas.height = size.height;\n                    canvas\n                        .getContext(\"2d\")\n                        .drawImage(node.image, 0, 0, size.width, size.height);\n                });\n\n        this._container.domRenderer.renderAdaptive$.next({name: this._name, vnode: vd.h(`canvas#${this._canvasId}`, [])});\n    }\n\n    protected _deactivate(): void {\n        this.drawSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n}\n\nComponentService.register(ImageComponent);\nexport default ImageComponent;\n",
     "import {of as observableOf, Observable, Subscription} from \"rxjs\";\n\nimport {map, switchMap} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {Container, Navigator} from \"../Viewer\";\nimport {ComponentService, Component, IComponentConfiguration} from \"../Component\";\n\nimport {IVNodeHash} from \"../Render\";\nimport {ILoadStatus} from \"../Graph\";\n\nexport class LoadingComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"loading\";\n\n    private _loadingSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    protected _activate(): void {\n        this._loadingSubscription = this._navigator.loadingService.loading$.pipe(\n            switchMap(\n                (loading: boolean): Observable<{ [key: string]: ILoadStatus }> => {\n                    return loading ?\n                        this._navigator.imageLoadingService.loadstatus$ :\n                        observableOf({});\n                }),\n            map(\n                (loadStatus: { [key: string]: ILoadStatus }): IVNodeHash => {\n                    let total: number = 0;\n                    let loaded: number = 0;\n\n                    for (const key in loadStatus) {\n                        if (!loadStatus.hasOwnProperty(key)) {\n                            continue;\n                        }\n\n                        const status: ILoadStatus = loadStatus[key];\n\n                        if (status.loaded !== status.total) {\n                            loaded += status.loaded;\n                            total += status.total;\n                        }\n                    }\n\n                    let percentage: number = 100;\n                    if (total !== 0) {\n                        percentage = (loaded / total) * 100;\n                    }\n\n                    return {name: this._name, vnode: this._getBarVNode(percentage)};\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._loadingSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getBarVNode(percentage: number): vd.VNode {\n        let loadingBarStyle: any = {};\n        let loadingContainerStyle: any = {};\n\n        if (percentage !== 100) {\n            loadingBarStyle.width = percentage.toFixed(0) + \"%\";\n            loadingBarStyle.opacity = \"1\";\n\n        } else {\n            loadingBarStyle.width = \"100%\";\n            loadingBarStyle.opacity = \"0\";\n        }\n\n        return vd.h(\"div.Loading\", { style: loadingContainerStyle }, [ vd.h(\"div.LoadingBar\", {style: loadingBarStyle}, [])]);\n    }\n}\n\nComponentService.register(LoadingComponent);\nexport default LoadingComponent;\n",
     "import * as vd from \"virtual-dom\";\n\nimport {\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    share,\n    startWith,\n    withLatestFrom,\n    map,\n    filter,\n    distinctUntilChanged,\n    tap,\n    catchError,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    DirectionDOMRenderer,\n    IDirectionConfiguration,\n} from \"../../Component\";\nimport {IEdgeStatus, Node, Sequence} from \"../../Graph\";\nimport {\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {Container, Navigator} from \"../../Viewer\";\n\n/**\n * @class DirectionComponent\n * @classdesc Component showing navigation arrows for steps and turns.\n */\nexport class DirectionComponent extends Component<IDirectionConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"direction\";\n\n    /**\n     * Event fired when the hovered key changes.\n     *\n     * @description Emits the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a\n     * direction arrow null is emitted.\n     *\n     * @event DirectionComponent#hoveredkeychanged\n     * @type {string} The hovered key, null if no key is hovered.\n     */\n    public static hoveredkeychanged: string = \"hoveredkeychanged\";\n\n    private _renderer: DirectionDOMRenderer;\n\n    private _hoveredKeySubject$: Subject<string>;\n    private _hoveredKey$: Observable<string>;\n\n    private _configurationSubscription: Subscription;\n    private _emitHoveredKeySubscription: Subscription;\n    private _hoveredKeySubscription: Subscription;\n    private _nodeSubscription: Subscription;\n    private _renderCameraSubscription: Subscription;\n    private _resizeSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator, directionDOMRenderer?: DirectionDOMRenderer) {\n        super(name, container, navigator);\n\n        this._renderer = !!directionDOMRenderer ?\n            directionDOMRenderer :\n            new DirectionDOMRenderer(\n                this.defaultConfiguration,\n                { height: container.element.offsetHeight, width: container.element.offsetWidth });\n\n        this._hoveredKeySubject$ = new Subject<string>();\n\n        this._hoveredKey$ = this._hoveredKeySubject$.pipe(share());\n    }\n\n    /**\n     * Get hovered key observable.\n     *\n     * @description An observable emitting the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a direction arrow null\n     * is emitted.\n     *\n     * @returns {Observable<string>}\n     */\n    public get hoveredKey$(): Observable<string> {\n        return this._hoveredKey$;\n    }\n\n    /**\n     * Set highlight key.\n     *\n     * @description The arrow pointing towards the node corresponding to the\n     * highlight key will be highlighted.\n     *\n     * @param {string} highlightKey Key of node to be highlighted if existing\n     * among arrows.\n     */\n    public setHighlightKey(highlightKey: string): void {\n        this.configure({ highlightKey: highlightKey });\n    }\n\n    /**\n     * Set min width of container element.\n     *\n     * @description  Set min width of the non transformed container element holding\n     * the navigation arrows. If the min width is larger than the max width the\n     * min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMinWidth(minWidth: number): void {\n        this.configure({ minWidth: minWidth });\n    }\n\n    /**\n     * Set max width of container element.\n     *\n     * @description Set max width of the non transformed container element holding\n     * the navigation arrows. If the min width is larger than the max width the\n     * min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMaxWidth(maxWidth: number): void {\n        this.configure({ maxWidth: maxWidth });\n    }\n\n    protected _activate(): void {\n        this._configurationSubscription = this._configuration$\n            .subscribe(\n                (configuration: IDirectionConfiguration): void => {\n                    this._renderer.setConfiguration(configuration);\n                });\n\n        this._resizeSubscription = this._container.renderService.size$\n            .subscribe(\n                (size: ISize): void => {\n                    this._renderer.resize(size);\n                });\n\n        this._nodeSubscription = this._navigator.stateService.currentNode$.pipe(\n            tap(\n                (node: Node): void => {\n                    this._container.domRenderer.render$.next({name: this._name, vnode: vd.h(\"div\", {}, [])});\n                    this._renderer.setNode(node);\n                }),\n            withLatestFrom(this._configuration$),\n            switchMap(\n                ([node, configuration]: [Node, IDirectionConfiguration]): Observable<[IEdgeStatus, Sequence]> => {\n                    return observableCombineLatest(\n                            node.spatialEdges$,\n                            configuration.distinguishSequence ?\n                                this._navigator.graphService\n                                    .cacheSequence$(node.sequenceKey).pipe(\n                                    catchError(\n                                        (error: Error, caught: Observable<Sequence>): Observable<Sequence> => {\n                                            console.error(`Failed to cache sequence (${node.sequenceKey})`, error);\n\n                                            return observableOf<Sequence>(null);\n                                        })) :\n                                observableOf<Sequence>(null));\n                }))\n            .subscribe(\n                ([edgeStatus, sequence]: [IEdgeStatus, Sequence]): void => {\n                    this._renderer.setEdges(edgeStatus, sequence);\n                });\n\n        this._renderCameraSubscription = this._container.renderService.renderCameraFrame$.pipe(\n            tap(\n                (renderCamera: RenderCamera): void => {\n                    this._renderer.setRenderCamera(renderCamera);\n                }),\n            map(\n                (): DirectionDOMRenderer => {\n                    return this._renderer;\n                }),\n            filter(\n                (renderer: DirectionDOMRenderer): boolean => {\n                    return renderer.needsRender;\n                }),\n            map(\n                (renderer: DirectionDOMRenderer): IVNodeHash => {\n                    return { name: this._name, vnode: renderer.render(this._navigator) };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._hoveredKeySubscription = observableCombineLatest(\n                this._container.domRenderer.element$,\n                this._container.renderService.renderCamera$,\n                this._container.mouseService.mouseMove$.pipe(startWith(null)),\n                this._container.mouseService.mouseUp$.pipe(startWith(null))).pipe(\n            map(\n                ([element]: [Element, RenderCamera, MouseEvent, MouseEvent]): string => {\n                    let elements: HTMLCollectionOf<Element> =\n                        <HTMLCollectionOf<Element>>element.getElementsByClassName(\"DirectionsPerspective\");\n\n                    for (let i: number = 0; i < elements.length; i++) {\n                        let hovered: Element = elements.item(i).querySelector(\":hover\");\n\n                        if (hovered != null && hovered.hasAttribute(\"data-key\")) {\n                            return hovered.getAttribute(\"data-key\");\n                        }\n                    }\n\n                    return null;\n                }),\n            distinctUntilChanged())\n            .subscribe(this._hoveredKeySubject$);\n\n        this._emitHoveredKeySubscription = this._hoveredKey$\n            .subscribe(\n                (key: string): void => {\n                    this.fire(DirectionComponent.hoveredkeychanged, key);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._configurationSubscription.unsubscribe();\n        this._emitHoveredKeySubscription.unsubscribe();\n        this._hoveredKeySubscription.unsubscribe();\n        this._nodeSubscription.unsubscribe();\n        this._renderCameraSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IDirectionConfiguration {\n        return {\n            distinguishSequence: false,\n            maxWidth: 460,\n            minWidth: 260,\n        };\n    }\n}\n\nComponentService.register(DirectionComponent);\nexport default DirectionComponent;\n",
     "import {IDirectionConfiguration} from \"../../Component\";\nimport {Spatial} from \"../../Geo\";\nimport {ISize} from \"../../Render\";\n\n/**\n * @class DirectionDOMCalculator\n * @classdesc Helper class for calculating DOM CSS properties.\n */\nexport class DirectionDOMCalculator {\n    private _spatial: Spatial;\n\n    private _elementWidth: number;\n    private _elementHeight: number;\n\n    private _minWidth: number;\n    private _maxWidth: number;\n\n    private _minThresholdWidth: number;\n    private _maxThresholdWidth: number;\n    private _minThresholdHeight: number;\n    private _maxThresholdHeight: number;\n\n    private _containerWidth: number;\n    private _containerWidthCss: string;\n    private _containerMarginCss: string;\n    private _containerLeftCss: string;\n    private _containerHeight: number;\n    private _containerHeightCss: string;\n    private _containerBottomCss: string;\n\n    private _stepCircleSize: number;\n    private _stepCircleSizeCss: string;\n    private _stepCircleMarginCss: string;\n\n    private _turnCircleSize: number;\n    private _turnCircleSizeCss: string;\n\n    private _outerRadius: number;\n    private _innerRadius: number;\n\n    private _shadowOffset: number;\n\n    constructor(configuration: IDirectionConfiguration, size: ISize) {\n        this._spatial = new Spatial();\n\n        this._minThresholdWidth = 320;\n        this._maxThresholdWidth = 1480;\n        this._minThresholdHeight = 240;\n        this._maxThresholdHeight = 820;\n\n        this._configure(configuration);\n        this._resize(size);\n        this._reset();\n    }\n\n    public get minWidth(): number {\n        return this._minWidth;\n    }\n\n    public get maxWidth(): number {\n        return this._maxWidth;\n    }\n\n    public get containerWidth(): number {\n        return this._containerWidth;\n    }\n\n    public get containerWidthCss(): string {\n        return this._containerWidthCss;\n    }\n\n    public get containerMarginCss(): string {\n        return this._containerMarginCss;\n    }\n\n    public get containerLeftCss(): string {\n        return this._containerLeftCss;\n    }\n\n    public get containerHeight(): number {\n        return this._containerHeight;\n    }\n\n    public get containerHeightCss(): string {\n        return this._containerHeightCss;\n    }\n\n    public get containerBottomCss(): string {\n        return this._containerBottomCss;\n    }\n\n    public get stepCircleSize(): number {\n        return this._stepCircleSize;\n    }\n\n    public get stepCircleSizeCss(): string {\n        return this._stepCircleSizeCss;\n    }\n\n    public get stepCircleMarginCss(): string {\n        return this._stepCircleMarginCss;\n    }\n\n    public get turnCircleSize(): number {\n        return this._turnCircleSize;\n    }\n\n    public get turnCircleSizeCss(): string {\n        return this._turnCircleSizeCss;\n    }\n\n    public get outerRadius(): number {\n        return this._outerRadius;\n    }\n\n    public get innerRadius(): number {\n        return this._innerRadius;\n    }\n\n    public get shadowOffset(): number {\n        return this._shadowOffset;\n    }\n\n    /**\n     * Configures the min and max width values.\n     *\n     * @param {IDirectionConfiguration} configuration Configuration\n     * with min and max width values.\n     */\n    public configure(configuration: IDirectionConfiguration): void {\n        this._configure(configuration);\n        this._reset();\n    }\n\n    /**\n     * Resizes all properties according to the width and height\n     * of the size object.\n     *\n     * @param {ISize} size The size of the container element.\n     */\n    public resize(size: ISize): void {\n        this._resize(size);\n        this._reset();\n    }\n\n    /**\n     * Calculates the coordinates on the unit circle for an angle.\n     *\n     * @param {number} angle Angle in radians.\n     * @returns {Array<number>} The x and y coordinates on the unit circle.\n     */\n    public angleToCoordinates(angle: number): number[] {\n        return [Math.cos(angle), Math.sin(angle)];\n    }\n\n    /**\n     * Calculates the coordinates on the unit circle for the\n     * relative angle between the first and second angle.\n     *\n     * @param {number} first Angle in radians.\n     * @param {number} second Angle in radians.\n     * @returns {Array<number>} The x and y coordinates on the unit circle\n     * for the relative angle between the first and second angle.\n     */\n    public relativeAngleToCoordiantes(first: number, second: number): number[] {\n        let relativeAngle: number = this._spatial.wrapAngle(first - second);\n\n        return this.angleToCoordinates(relativeAngle);\n    }\n\n    private _configure(configuration: IDirectionConfiguration): void {\n        this._minWidth = configuration.minWidth;\n        this._maxWidth = this._getMaxWidth(configuration.minWidth, configuration.maxWidth);\n    }\n\n    private _resize(size: ISize): void {\n        this._elementWidth = size.width;\n        this._elementHeight = size.height;\n    }\n\n    private _reset(): void {\n        this._containerWidth = this._getContainerWidth(this._elementWidth, this._elementHeight);\n        this._containerHeight = this._getContainerHeight(this.containerWidth);\n        this._stepCircleSize = this._getStepCircleDiameter(this._containerHeight);\n        this._turnCircleSize = this._getTurnCircleDiameter(this.containerHeight);\n        this._outerRadius = this._getOuterRadius(this._containerHeight);\n        this._innerRadius = this._getInnerRadius(this._containerHeight);\n\n        this._shadowOffset = 3;\n\n        this._containerWidthCss = this._numberToCssPixels(this._containerWidth);\n        this._containerMarginCss = this._numberToCssPixels(-0.5 * this._containerWidth);\n        this._containerLeftCss = this._numberToCssPixels(Math.floor(0.5 * this._elementWidth));\n        this._containerHeightCss = this._numberToCssPixels(this._containerHeight);\n        this._containerBottomCss = this._numberToCssPixels(Math.floor(-0.08 * this._containerHeight));\n        this._stepCircleSizeCss = this._numberToCssPixels(this._stepCircleSize);\n        this._stepCircleMarginCss = this._numberToCssPixels(-0.5 * this._stepCircleSize);\n        this._turnCircleSizeCss = this._numberToCssPixels(this._turnCircleSize);\n    }\n\n    private _getContainerWidth(elementWidth: number, elementHeight: number): number {\n        let relativeWidth: number =\n            (elementWidth - this._minThresholdWidth) / (this._maxThresholdWidth - this._minThresholdWidth);\n        let relativeHeight: number =\n            (elementHeight - this._minThresholdHeight) / (this._maxThresholdHeight - this._minThresholdHeight);\n\n        let coeff: number = Math.max(0, Math.min(1, Math.min(relativeWidth, relativeHeight)));\n\n        coeff = 0.04 * Math.round(25 * coeff);\n\n        return this._minWidth + coeff * (this._maxWidth - this._minWidth);\n    }\n\n    private _getContainerHeight(containerWidth: number): number {\n        return 0.77 * containerWidth;\n    }\n\n    private _getStepCircleDiameter(containerHeight: number): number {\n        return 0.34 * containerHeight;\n    }\n\n    private _getTurnCircleDiameter(containerHeight: number): number {\n        return 0.3 * containerHeight;\n    }\n\n    private _getOuterRadius(containerHeight: number): number {\n        return 0.31 * containerHeight;\n    }\n\n    private _getInnerRadius(containerHeight: number): number {\n        return 0.125 * containerHeight;\n    }\n\n    private _numberToCssPixels(value: number): string {\n        return value + \"px\";\n    }\n\n    private _getMaxWidth(value: number, minWidth: number): number {\n        return value > minWidth ? value : minWidth;\n    }\n}\n\nexport default DirectionDOMCalculator;\n",
     "import * as vd from \"virtual-dom\";\n\nimport {\n    DirectionDOMCalculator,\n    IDirectionConfiguration,\n} from \"../../Component\";\nimport {\n    EdgeDirection,\n    IEdge,\n} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {Spatial} from \"../../Geo\";\nimport {\n    IEdgeStatus,\n    Node,\n    Sequence,\n} from \"../../Graph\";\nimport {\n    ISize,\n    RenderCamera,\n} from \"../../Render\";\nimport {IRotation} from \"../../State\";\nimport {Navigator} from \"../../Viewer\";\n\n/**\n * @class DirectionDOMRenderer\n * @classdesc DOM renderer for direction arrows.\n */\nexport class DirectionDOMRenderer {\n    private _spatial: Spatial;\n    private _calculator: DirectionDOMCalculator;\n\n    private _node: Node;\n\n    private _rotation: IRotation;\n    private _epsilon: number;\n\n    private _highlightKey: string;\n    private _distinguishSequence: boolean;\n\n    private _needsRender: boolean;\n\n    private _stepEdges: IEdge[];\n    private _turnEdges: IEdge[];\n    private _panoEdges: IEdge[];\n    private _sequenceEdgeKeys: string[];\n\n    private _stepDirections: EdgeDirection[];\n    private _turnDirections: EdgeDirection[];\n    private _turnNames: {[dir: number]: string};\n\n    private _isEdge: boolean = false;\n\n    constructor(configuration: IDirectionConfiguration, size: ISize) {\n        this._spatial = new Spatial();\n        this._calculator = new DirectionDOMCalculator(configuration, size);\n\n        this._node = null;\n\n        this._rotation = { phi: 0, theta: 0 };\n        this._epsilon = 0.5 * Math.PI / 180;\n\n        this._highlightKey = null;\n        this._distinguishSequence = false;\n\n        this._needsRender = false;\n\n        this._stepEdges = [];\n        this._turnEdges = [];\n        this._panoEdges = [];\n        this._sequenceEdgeKeys = [];\n\n        this._stepDirections = [\n            EdgeDirection.StepForward,\n            EdgeDirection.StepBackward,\n            EdgeDirection.StepLeft,\n            EdgeDirection.StepRight,\n        ];\n\n        this._turnDirections = [\n            EdgeDirection.TurnLeft,\n            EdgeDirection.TurnRight,\n            EdgeDirection.TurnU,\n        ];\n\n        this._turnNames = {};\n        this._turnNames[EdgeDirection.TurnLeft] = \"TurnLeft\";\n        this._turnNames[EdgeDirection.TurnRight] = \"TurnRight\";\n        this._turnNames[EdgeDirection.TurnU] = \"TurnAround\";\n\n        // detects IE 8-11, then Edge 20+.\n        let isIE: boolean = !!(<any>document).documentMode;\n        this._isEdge = !isIE && !!(<any>window).StyleMedia;\n    }\n\n    /**\n     * Get needs render.\n     *\n     * @returns {boolean} Value indicating whether render should be called.\n     */\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    /**\n     * Renders virtual DOM elements.\n     *\n     * @description Calling render resets the needs render property.\n     */\n    public render(navigator: Navigator): vd.VNode {\n        this._needsRender = false;\n\n        let rotation: IRotation = this._rotation;\n\n        let steps: vd.VNode[] = [];\n        let turns: vd.VNode[] = [];\n\n        if (this._node.pano) {\n            steps = steps.concat(this._createPanoArrows(navigator, rotation));\n        } else {\n            steps = steps.concat(this._createPerspectiveToPanoArrows(navigator, rotation));\n            steps = steps.concat(this._createStepArrows(navigator, rotation));\n            turns = turns.concat(this._createTurnArrows(navigator));\n        }\n\n        return this._getContainer(steps, turns, rotation);\n    }\n\n    public setEdges(edgeStatus: IEdgeStatus, sequence: Sequence): void {\n        this._setEdges(edgeStatus, sequence);\n\n        this._setNeedsRender();\n    }\n\n    /**\n     * Set node for which to show edges.\n     *\n     * @param {Node} node\n     */\n    public setNode(node: Node): void {\n        this._node = node;\n        this._clearEdges();\n\n        this._setNeedsRender();\n    }\n\n    /**\n     * Set the render camera to use for calculating rotations.\n     *\n     * @param {RenderCamera} renderCamera\n     */\n    public setRenderCamera(renderCamera: RenderCamera): void {\n        let rotation: IRotation = renderCamera.rotation;\n\n        if (Math.abs(rotation.phi - this._rotation.phi) < this._epsilon) {\n            return;\n        }\n\n        this._rotation = rotation;\n\n        this._setNeedsRender();\n    }\n\n    /**\n     * Set configuration values.\n     *\n     * @param {IDirectionConfiguration} configuration\n     */\n    public setConfiguration(configuration: IDirectionConfiguration): void {\n        let needsRender: boolean = false;\n        if (this._highlightKey !== configuration.highlightKey ||\n            this._distinguishSequence !== configuration.distinguishSequence) {\n            this._highlightKey = configuration.highlightKey;\n            this._distinguishSequence = configuration.distinguishSequence;\n\n            needsRender = true;\n        }\n\n        if (this._calculator.minWidth !== configuration.minWidth ||\n            this._calculator.maxWidth !== configuration.maxWidth) {\n            this._calculator.configure(configuration);\n            needsRender = true;\n        }\n\n        if (needsRender) {\n            this._setNeedsRender();\n        }\n    }\n\n    /**\n     * Detect the element's width and height and resize\n     * elements accordingly.\n     *\n     * @param {ISize} size Size of vßiewer container element.\n     */\n    public resize(size: ISize): void {\n        this._calculator.resize(size);\n\n        this._setNeedsRender();\n    }\n\n    private _setNeedsRender(): void {\n        if (this._node != null) {\n            this._needsRender = true;\n        }\n    }\n\n    private _clearEdges(): void {\n        this._stepEdges = [];\n        this._turnEdges = [];\n        this._panoEdges = [];\n        this._sequenceEdgeKeys = [];\n    }\n\n    private _setEdges(edgeStatus: IEdgeStatus, sequence: Sequence): void {\n        this._stepEdges = [];\n        this._turnEdges = [];\n        this._panoEdges = [];\n        this._sequenceEdgeKeys = [];\n\n        for (let edge of edgeStatus.edges) {\n            let direction: EdgeDirection = edge.data.direction;\n\n            if (this._stepDirections.indexOf(direction) > -1) {\n                this._stepEdges.push(edge);\n                continue;\n            }\n\n            if (this._turnDirections.indexOf(direction) > -1) {\n                this._turnEdges.push(edge);\n                continue;\n            }\n\n            if (edge.data.direction === EdgeDirection.Pano) {\n                this._panoEdges.push(edge);\n            }\n        }\n\n        if (this._distinguishSequence && sequence != null) {\n            let edges: IEdge[] = this._panoEdges\n                .concat(this._stepEdges)\n                .concat(this._turnEdges);\n\n            for (let edge of edges) {\n                let edgeKey: string = edge.to;\n\n                for (let sequenceKey of sequence.keys) {\n                    if (sequenceKey === edgeKey) {\n                        this._sequenceEdgeKeys.push(edgeKey);\n                        break;\n                    }\n                }\n            }\n        }\n    }\n\n    private _createPanoArrows(navigator: Navigator, rotation: IRotation): vd.VNode[] {\n        let arrows: vd.VNode[] = [];\n\n        for (let panoEdge of this._panoEdges) {\n            arrows.push(\n                this._createVNodeByKey(\n                    navigator,\n                    panoEdge.to,\n                    panoEdge.data.worldMotionAzimuth,\n                    rotation,\n                    this._calculator.outerRadius,\n                    \"DirectionsArrowPano\"));\n        }\n\n        for (let stepEdge of this._stepEdges) {\n            arrows.push(\n                this._createPanoToPerspectiveArrow(\n                    navigator,\n                    stepEdge.to,\n                    stepEdge.data.worldMotionAzimuth,\n                    rotation,\n                    stepEdge.data.direction));\n        }\n\n        return arrows;\n    }\n\n    private _createPanoToPerspectiveArrow(\n        navigator: Navigator,\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        direction: EdgeDirection): vd.VNode {\n\n        let threshold: number = Math.PI / 8;\n\n        let relativePhi: number = rotation.phi;\n\n        switch (direction) {\n            case EdgeDirection.StepBackward:\n                relativePhi = rotation.phi - Math.PI;\n                break;\n            case EdgeDirection.StepLeft:\n                relativePhi = rotation.phi + Math.PI / 2;\n                break;\n            case EdgeDirection.StepRight:\n                relativePhi = rotation.phi - Math.PI / 2;\n                break;\n            default:\n                break;\n        }\n\n        if (Math.abs(this._spatial.wrapAngle(azimuth - relativePhi)) < threshold) {\n            return this._createVNodeByKey(\n                navigator,\n                key,\n                azimuth,\n                rotation,\n                this._calculator.outerRadius,\n                \"DirectionsArrowStep\");\n        }\n\n        return this._createVNodeDisabled(key, azimuth, rotation);\n    }\n\n    private _createPerspectiveToPanoArrows(navigator: Navigator, rotation: IRotation): vd.VNode[] {\n        let arrows: vd.VNode[] = [];\n\n        for (let panoEdge of this._panoEdges) {\n            arrows.push(\n                this._createVNodeByKey(\n                    navigator,\n                    panoEdge.to,\n                    panoEdge.data.worldMotionAzimuth,\n                    rotation,\n                    this._calculator.innerRadius,\n                    \"DirectionsArrowPano\",\n                    true));\n        }\n\n        return arrows;\n    }\n\n    private _createStepArrows(navigator: Navigator, rotation: IRotation): vd.VNode[] {\n        let arrows: vd.VNode[] = [];\n\n        for (let stepEdge of this._stepEdges) {\n            arrows.push(\n                this._createVNodeByDirection(\n                    navigator,\n                    stepEdge.to,\n                    stepEdge.data.worldMotionAzimuth,\n                    rotation,\n                    stepEdge.data.direction));\n        }\n\n        return arrows;\n    }\n\n    private _createTurnArrows(navigator: Navigator): vd.VNode[] {\n        let turns: vd.VNode[] = [];\n\n        for (let turnEdge of this._turnEdges) {\n            let direction: EdgeDirection = turnEdge.data.direction;\n            let name: string = this._turnNames[direction];\n\n            turns.push(\n                this._createVNodeByTurn(\n                    navigator,\n                    turnEdge.to,\n                    name,\n                    direction));\n        }\n\n        return turns;\n    }\n\n    private _createVNodeByKey(\n        navigator: Navigator,\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        offset: number,\n        className: string,\n        shiftVertically?: boolean): vd.VNode {\n\n        let onClick: (e: Event) => void =\n            (e: Event): void => {\n                navigator.moveToKey$(key)\n                    .subscribe(\n                        undefined,\n                        (error: Error): void => {\n                            if (!(error instanceof AbortMapillaryError)) {\n                                console.error(error);\n                            }\n                        });\n            };\n\n        return this._createVNode(\n            key,\n            azimuth,\n            rotation,\n            offset,\n            className,\n            \"DirectionsCircle\",\n            onClick,\n            shiftVertically);\n    }\n\n    private _createVNodeByDirection(\n        navigator: Navigator,\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        direction: EdgeDirection): vd.VNode {\n\n        let onClick: (e: Event) => void =\n            (e: Event): void => {\n                navigator.moveDir$(direction)\n                    .subscribe(\n                        undefined,\n                        (error: Error): void => {\n                            if (!(error instanceof AbortMapillaryError)) {\n                                console.error(error);\n                            }\n                        });\n            };\n\n        return this._createVNode(\n            key,\n            azimuth,\n            rotation,\n            this._calculator.outerRadius,\n            \"DirectionsArrowStep\",\n            \"DirectionsCircle\",\n            onClick);\n    }\n\n    private _createVNodeByTurn(\n        navigator: Navigator,\n        key: string,\n        className: string,\n        direction: EdgeDirection): vd.VNode {\n\n        let onClick: (e: Event) => void =\n            (e: Event): void => {\n                navigator.moveDir$(direction)\n                    .subscribe(\n                        undefined,\n                        (error: Error): void => {\n                            if (!(error instanceof AbortMapillaryError)) {\n                                console.error(error);\n                            }\n                        });\n            };\n\n        let style: any = {\n            height: this._calculator.turnCircleSizeCss,\n            transform: \"rotate(0)\", // apply transform to preserve 3D\n            width: this._calculator.turnCircleSizeCss,\n        };\n\n        switch (direction) {\n            case EdgeDirection.TurnLeft:\n                style.left = \"5px\";\n                style.top = \"5px\";\n                break;\n            case EdgeDirection.TurnRight:\n                style.right = \"5px\";\n                style.top = \"5px\";\n                break;\n            case EdgeDirection.TurnU:\n                style.left = \"5px\";\n                style.bottom = \"5px\";\n                break;\n            default:\n                break;\n        }\n\n        let circleProperties: vd.createProperties = {\n            attributes: {\n                \"data-key\": key,\n            },\n            onclick: onClick,\n            style: style,\n        };\n\n        let circleClassName: string = \"TurnCircle\";\n\n        if (this._sequenceEdgeKeys.indexOf(key) > -1) {\n            circleClassName += \"Sequence\";\n        }\n\n        if (this._highlightKey === key) {\n            circleClassName += \"Highlight\";\n        }\n\n        let turn: vd.VNode = vd.h(`div.${className}`, {}, []);\n\n        return vd.h(\"div.\" + circleClassName, circleProperties, [turn]);\n    }\n\n    private _createVNodeDisabled(key: string, azimuth: number, rotation: IRotation): vd.VNode {\n        return this._createVNode(\n            key,\n            azimuth,\n            rotation,\n            this._calculator.outerRadius,\n            \"DirectionsArrowDisabled\",\n            \"DirectionsCircleDisabled\");\n    }\n\n    private _createVNode(\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        radius: number,\n        className: string,\n        circleClassName: string,\n        onClick?: (e: Event) => void,\n        shiftVertically?: boolean): vd.VNode {\n\n        let translation: number[] = this._calculator.angleToCoordinates(azimuth - rotation.phi);\n\n        // rotate 90 degrees clockwise and flip over X-axis\n        let translationX: number = Math.round(-radius * translation[1] + 0.5 * this._calculator.containerWidth);\n        let translationY: number = Math.round(-radius * translation[0] + 0.5 * this._calculator.containerHeight);\n\n        let shadowTranslation: number[] = this._calculator.relativeAngleToCoordiantes(azimuth, rotation.phi);\n        let shadowOffset: number = this._calculator.shadowOffset;\n        let shadowTranslationX: number = -shadowOffset * shadowTranslation[1];\n        let shadowTranslationY: number = shadowOffset * shadowTranslation[0];\n\n        let filter: string = `drop-shadow(${shadowTranslationX}px ${shadowTranslationY}px 1px rgba(0,0,0,0.8))`;\n\n        let properties: vd.createProperties = {\n            style: {\n                \"-webkit-filter\": filter,\n                filter: filter,\n            },\n        };\n\n        let chevron: vd.VNode = vd.h(\"div.\" + className, properties, []);\n\n        let azimuthDeg: number = -this._spatial.radToDeg(azimuth - rotation.phi);\n        let circleTransform: string = shiftVertically ?\n            `translate(${translationX}px, ${translationY}px) rotate(${azimuthDeg}deg) translateZ(-0.01px)` :\n            `translate(${translationX}px, ${translationY}px) rotate(${azimuthDeg}deg)`;\n\n        let circleProperties: vd.createProperties = {\n            attributes: { \"data-key\": key },\n            onclick: onClick,\n            style: {\n                height: this._calculator.stepCircleSizeCss,\n                marginLeft: this._calculator.stepCircleMarginCss,\n                marginTop: this._calculator.stepCircleMarginCss,\n                transform: circleTransform,\n                width: this._calculator.stepCircleSizeCss,\n            },\n        };\n\n        if (this._sequenceEdgeKeys.indexOf(key) > -1) {\n            circleClassName += \"Sequence\";\n        }\n\n        if (this._highlightKey === key) {\n            circleClassName += \"Highlight\";\n        }\n\n        return vd.h(\"div.\" + circleClassName, circleProperties, [chevron]);\n    }\n\n    private _getContainer(\n        steps: vd.VNode[],\n        turns: vd.VNode[],\n        rotation: IRotation): vd.VNode {\n\n        // edge does not handle hover on perspective transforms.\n        let transform: string = this._isEdge ?\n            \"rotateX(60deg)\" :\n            `perspective(${this._calculator.containerWidthCss}) rotateX(60deg)`;\n\n        let properties: vd.createProperties = {\n            oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); },\n            style: {\n                bottom: this._calculator.containerBottomCss,\n                height: this._calculator.containerHeightCss,\n                left: this._calculator.containerLeftCss,\n                marginLeft: this._calculator.containerMarginCss,\n                transform: transform,\n                width: this._calculator.containerWidthCss,\n            },\n        };\n\n        return vd.h(\"div.DirectionsPerspective\", properties, turns.concat(steps));\n    }\n}\n\nexport default DirectionDOMRenderer;\n",
-    "import {\n    empty as observableEmpty,\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    pairwise,\n    debounceTime,\n    refCount,\n    publishReplay,\n    withLatestFrom,\n    scan,\n    filter,\n    first,\n    catchError,\n    takeUntil,\n    startWith,\n    skipWhile,\n    map,\n    publish,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n    ImagePlaneGLRenderer,\n} from \"../../Component\";\nimport {\n    Transform,\n} from \"../../Geo\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n    ImageSize,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    RenderCamera,\n} from \"../../Render\";\nimport {Node as GraphNode} from \"../../Graph\";\nimport {\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\n\ninterface IImagePlaneGLRendererOperation {\n    (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer;\n}\n\ntype PositionLookat = [THREE.Vector3, THREE.Vector3, number, number, number];\n\nexport class ImagePlaneComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"imagePlane\";\n\n    private _rendererOperation$: Subject<IImagePlaneGLRendererOperation>;\n    private _renderer$: Observable<ImagePlaneGLRenderer>;\n    private _rendererCreator$: Subject<void>;\n    private _rendererDisposer$: Subject<void>;\n\n    private _abortTextureProviderSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _rendererSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _stateSubscription: Subscription;\n    private _textureProviderSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n\n    constructor (name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n\n        this._rendererOperation$ = new Subject<IImagePlaneGLRendererOperation>();\n        this._rendererCreator$ = new Subject<void>();\n        this._rendererDisposer$ = new Subject<void>();\n\n        this._renderer$ = this._rendererOperation$.pipe(\n            scan(\n                (renderer: ImagePlaneGLRenderer, operation: IImagePlaneGLRendererOperation): ImagePlaneGLRenderer => {\n                    return operation(renderer);\n                },\n                null),\n            filter(\n                (renderer: ImagePlaneGLRenderer): boolean => {\n                    return renderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (renderer: ImagePlaneGLRenderer): number => {\n                    return renderer.frameId;\n                }));\n\n        this._rendererCreator$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        if (renderer != null) {\n                            throw new Error(\"Multiple image plane states can not be created at the same time\");\n                        }\n\n                        return new ImagePlaneGLRenderer();\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._rendererDisposer$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n    }\n\n    protected _activate(): void {\n        this._rendererSubscription = this._renderer$.pipe(\n            map(\n                (renderer: ImagePlaneGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: renderer.frameId,\n                            needsRender: renderer.needsRender,\n                            render: renderer.render.bind(renderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    renderer.clearNeedsRender();\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._rendererCreator$.next(null);\n\n        this._stateSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateFrame(frame);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        let textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    let state: ICurrentState = frame.state;\n                    let viewportSize: number = Math.max(size.width, size.height);\n\n                    let currentNode: GraphNode = state.currentNode;\n                    let currentTransform: Transform = state.currentTransform;\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, GraphNode]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): GraphNode => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: GraphNode): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [GraphNode, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [GraphNode, boolean]): GraphNode => {\n                    return args[0];\n                }),\n            filter(\n                (node: GraphNode): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: GraphNode): Observable<[HTMLImageElement, GraphNode]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, GraphNode]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: GraphNode): [HTMLImageElement, GraphNode] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, GraphNode]>):\n                                Observable<[HTMLImageElement, GraphNode]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, GraphNode], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, GraphNode]): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n    }\n\n    protected _deactivate(): void {\n        this._rendererDisposer$.next(null);\n\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._rendererSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._textureProviderSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return { };\n    }\n}\n\nComponentService.register(ImagePlaneComponent);\nexport default ImagePlaneComponent;\n",
-    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    MeshFactory,\n    MeshScene,\n    IShaderMaterial,\n} from \"../../Component\";\nimport {Node} from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {TextureProvider} from \"../../Tiles\";\n\nexport class ImagePlaneGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n\n    private _alpha: number;\n    private _alphaOld: number;\n    private _fadeOutSpeed: number;\n\n    private _currentKey: string;\n    private _previousKey: string;\n    private _providerDisposers: { [key: string]: () => void };\n\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n\n        this._alpha = 0;\n        this._alphaOld = 0;\n        this._fadeOutSpeed = 0.05;\n\n        this._currentKey = null;\n        this._previousKey = null;\n        this._providerDisposers = {};\n\n        this._frameId = 0;\n        this._needsRender = false;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public indicateNeedsRender(): void {\n        this._needsRender = true;\n    }\n\n    public updateFrame(frame: IFrame): void {\n        this._updateFrameId(frame.id);\n        this._needsRender = this._updateAlpha(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateAlphaOld(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateImagePlanes(frame.state) || this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        if (key !== this._currentKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(\n                (texture: THREE.Texture): void => {\n                    this._updateTexture(texture);\n                });\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in this._providerDisposers) {\n            let disposeProvider: () => void = this._providerDisposers[key];\n            disposeProvider();\n\n            delete this._providerDisposers[key];\n        }\n\n        this._providerDisposers[key] = dispose;\n    }\n\n    public _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node?: Node): void {\n        if (this._currentKey !== node.key) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n        let planeAlpha: number = this._scene.imagePlanesOld.length ? 1 : this._alpha;\n\n        for (let plane of this._scene.imagePlanes) {\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = planeAlpha;\n        }\n\n        for (let plane of this._scene.imagePlanesOld) {\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alphaOld;\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n        renderer.render(this._scene.sceneOld, perspectiveCamera);\n\n        for (let plane of this._scene.imagePlanes) {\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alpha;\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n    }\n\n    public clearNeedsRender(): void {\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateAlpha(alpha: number): boolean {\n        if (alpha === this._alpha) {\n            return false;\n        }\n\n        this._alpha = alpha;\n\n        return true;\n    }\n\n    private _updateAlphaOld(alpha: number): boolean {\n        if (alpha < 1 || this._alphaOld === 0) {\n            return false;\n        }\n\n        this._alphaOld = Math.max(0, this._alphaOld - this._fadeOutSpeed);\n\n        return true;\n    }\n\n    private _updateImagePlanes(state: ICurrentState): boolean {\n        if (state.currentNode == null || state.currentNode.key === this._currentKey) {\n            return false;\n        }\n\n        let previousKey: string = state.previousNode != null ? state.previousNode.key : null;\n        let currentKey: string = state.currentNode.key;\n\n        if (this._previousKey !== previousKey &&\n            this._previousKey !== currentKey &&\n            this._previousKey in this._providerDisposers) {\n\n            let disposeProvider: () => void = this._providerDisposers[this._previousKey];\n            disposeProvider();\n\n            delete this._providerDisposers[this._previousKey];\n        }\n\n        if (previousKey != null) {\n            if (previousKey !== this._currentKey && previousKey !== this._previousKey) {\n                let previousMesh: THREE.Mesh =\n                    this._factory.createMesh(state.previousNode, state.previousTransform);\n\n                this._scene.updateImagePlanes([previousMesh]);\n            }\n\n            this._previousKey = previousKey;\n        }\n\n        this._currentKey = currentKey;\n        let currentMesh: THREE.Mesh =\n            this._factory.createMesh(state.currentNode, state.currentTransform);\n\n        this._scene.updateImagePlanes([currentMesh]);\n\n        this._alphaOld = 1;\n\n        return true;\n    }\n}\n\nexport default ImagePlaneGLRenderer;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    empty as observableEmpty,\n    of as observableOf,\n    from as observableFrom,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    pairwise,\n    debounceTime,\n    refCount,\n    publishReplay,\n    withLatestFrom,\n    scan,\n    filter,\n    first,\n    catchError,\n    takeUntil,\n    startWith,\n    skipWhile,\n    map,\n    publish,\n    distinctUntilChanged,\n    mergeMap,\n    share,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n    ImagePlaneGLRenderer,\n} from \"../../Component\";\nimport {\n    GeoCoords,\n    Transform,\n    Geo,\n} from \"../../Geo\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n    ImageSize,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    Node as GraphNode,\n} from \"../../Graph\";\nimport {\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\nimport ViewportCoords from \"../../geo/ViewportCoords\";\nimport Spatial from \"../../geo/Spatial\";\n\ninterface IImagePlaneGLRendererOperation {\n    (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer;\n}\n\ntype PositionLookat = [THREE.Vector3, THREE.Vector3, number, number, number];\n\nexport class ImagePlaneComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"imagePlane\";\n\n    private _rendererOperation$: Subject<IImagePlaneGLRendererOperation>;\n    private _renderer$: Observable<ImagePlaneGLRenderer>;\n    private _rendererCreator$: Subject<void>;\n    private _rendererDisposer$: Subject<void>;\n\n    private _abortTextureProviderSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _rendererSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _stateSubscription: Subscription;\n    private _textureProviderSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _clearPeripheryPlaneSubscription: Subscription;\n    private _addPeripheryPlaneSubscription: Subscription;\n    private _updatePeripheryPlaneTextureSubscription: Subscription;\n    private _moveToPeripheryNodeSubscription: Subscription;\n\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n\n    constructor (name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n\n        this._rendererOperation$ = new Subject<IImagePlaneGLRendererOperation>();\n        this._rendererCreator$ = new Subject<void>();\n        this._rendererDisposer$ = new Subject<void>();\n\n        this._renderer$ = this._rendererOperation$.pipe(\n            scan(\n                (renderer: ImagePlaneGLRenderer, operation: IImagePlaneGLRendererOperation): ImagePlaneGLRenderer => {\n                    return operation(renderer);\n                },\n                null),\n            filter(\n                (renderer: ImagePlaneGLRenderer): boolean => {\n                    return renderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (renderer: ImagePlaneGLRenderer): number => {\n                    return renderer.frameId;\n                }));\n\n        this._rendererCreator$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        if (renderer != null) {\n                            throw new Error(\"Multiple image plane states can not be created at the same time\");\n                        }\n\n                        return new ImagePlaneGLRenderer();\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._rendererDisposer$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n    }\n\n    protected _activate(): void {\n        this._rendererSubscription = this._renderer$.pipe(\n            map(\n                (renderer: ImagePlaneGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: renderer.frameId,\n                            needsRender: renderer.needsRender,\n                            render: renderer.render.bind(renderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    renderer.clearNeedsRender();\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._rendererCreator$.next(null);\n\n        this._stateSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateFrame(frame);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        let textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    let state: ICurrentState = frame.state;\n                    let viewportSize: number = Math.max(size.width, size.height);\n\n                    let currentNode: GraphNode = state.currentNode;\n                    let currentTransform: Transform = state.currentTransform;\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                const basic: number[] = new ViewportCoords().viewportToBasic(0, 0, transform, camera.perspective);\n\n                                if (basic[0] < 0 || basic[1] < 0 || basic[0] > 1 || basic[1] > 1) {\n                                    return undefined;\n                                }\n\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }),\n                        filter(\n                            (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                                return !!args;\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, GraphNode]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): GraphNode => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: GraphNode): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [GraphNode, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [GraphNode, boolean]): GraphNode => {\n                    return args[0];\n                }),\n            filter(\n                (node: GraphNode): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: GraphNode): Observable<[HTMLImageElement, GraphNode]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, GraphNode]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: GraphNode): [HTMLImageElement, GraphNode] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, GraphNode]>):\n                                Observable<[HTMLImageElement, GraphNode]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, GraphNode], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, GraphNode]): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._clearPeripheryPlaneSubscription = this._navigator.panService.panNodes$.pipe(\n            filter(\n                (panNodes: []): boolean => {\n                    return panNodes.length === 0;\n                }),\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.clearPeripheryPlanes();\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        const cachedPanNodes$: Observable<[GraphNode, Transform]> = this._navigator.panService.panNodes$.pipe(\n            switchMap(\n                (nts: [GraphNode, Transform, number][]): Observable<[GraphNode, Transform]> => {\n                    return observableFrom(nts).pipe(\n                        mergeMap(\n                            ([n, t]: [GraphNode, Transform, number]): Observable<[GraphNode, Transform]> => {\n                                return observableCombineLatest(\n                                    this._navigator.graphService.cacheNode$(n.key).pipe(\n                                        catchError(\n                                            (error: Error): Observable<GraphNode> => {\n                                                console.error(`Failed to cache periphery node (${n.key})`, error);\n\n                                                return observableEmpty();\n                                            })),\n                                    observableOf(t));\n                            }));\n                }),\n            share());\n\n        this._addPeripheryPlaneSubscription = cachedPanNodes$.pipe(\n            map(\n                ([n, t]: [GraphNode, Transform]): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.addPeripheryPlane(n, t);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._updatePeripheryPlaneTextureSubscription = cachedPanNodes$.pipe(\n            mergeMap(\n                ([n]: [GraphNode, Transform]): Observable<GraphNode> => {\n                    return ImageSize.Size2048 > Math.max(n.image.width, n.image.height) ?\n                        n.cacheImage$(ImageSize.Size2048).pipe(\n                            catchError(\n                                (): Observable<GraphNode> => {\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }),\n            map(\n                (n: GraphNode): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateTextureImage(n.image, n);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        const inTransition$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.alpha < 1;\n                }),\n            distinctUntilChanged());\n\n        const panTrigger$: Observable<boolean> = observableCombineLatest(\n            this._container.mouseService.active$,\n            this._container.touchService.active$,\n            this._navigator.stateService.inMotion$,\n            inTransition$).pipe(\n                map(\n                    ([mouseActive, touchActive, inMotion, inTransition]: [boolean, boolean, boolean, boolean]): boolean => {\n                        return !(mouseActive || touchActive || inMotion || inTransition);\n                    }),\n                filter(\n                    (trigger: boolean): boolean => {\n                        return trigger;\n                    }));\n\n        this._moveToPeripheryNodeSubscription = this._navigator.panService.panNodes$.pipe(\n            switchMap(\n                (nts: [GraphNode, Transform, number][]):\n                    Observable<[RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]> => {\n\n                    return panTrigger$.pipe(\n                        withLatestFrom(\n                            this._container.renderService.renderCamera$,\n                            this._navigator.stateService.currentNode$,\n                            this._navigator.stateService.currentTransform$),\n                        mergeMap(\n                            ([, renderCamera, currentNode, currentTransform]: [boolean, RenderCamera, GraphNode, Transform]):\n                            Observable<[RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]> => {\n                                return observableOf(\n                                    [\n                                        renderCamera,\n                                        currentNode,\n                                        currentTransform,\n                                        nts,\n                                    ] as [RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]);\n                            }));\n                }),\n            switchMap(\n                ([camera, cn, ct, nts]: [RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]): Observable<GraphNode> => {\n                    const direction: THREE.Vector3 = camera.camera.lookat.clone().sub(camera.camera.position);\n\n                    const cd: THREE.Vector3 = new Spatial().viewingDirection(cn.rotation);\n                    const ca: number = cd.angleTo(direction);\n                    const closest: [number, string] = [ca, undefined];\n                    const basic: number[] = new ViewportCoords().viewportToBasic(0, 0, ct, camera.perspective);\n\n                    if (basic[0] >= 0 && basic[0] <= 1 && basic[1] >= 0 && basic[1] <= 1) {\n                        closest[0] = Number.NEGATIVE_INFINITY;\n                    }\n\n                    for (const [n] of nts) {\n                        const d: THREE.Vector3 = new Spatial().viewingDirection(n.rotation);\n                        const a: number = d.angleTo(direction);\n\n                        if (a < closest[0]) {\n                            closest[0] = a;\n                            closest[1] = n.key;\n                        }\n                    }\n\n                    if (!closest[1]) {\n                        return observableEmpty();\n                    }\n\n                    return this._navigator.moveToKey$(closest[1]).pipe(\n                        catchError(\n                            (): Observable<GraphNode> => {\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe();\n    }\n\n    protected _deactivate(): void {\n        this._rendererDisposer$.next(null);\n\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._rendererSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._textureProviderSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n\n        this._clearPeripheryPlaneSubscription.unsubscribe();\n        this._addPeripheryPlaneSubscription.unsubscribe();\n        this._updatePeripheryPlaneTextureSubscription.unsubscribe();\n        this._moveToPeripheryNodeSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return { };\n    }\n}\n\nComponentService.register(ImagePlaneComponent);\nexport default ImagePlaneComponent;\n",
+    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    MeshFactory,\n    MeshScene,\n    IShaderMaterial,\n} from \"../../Component\";\nimport {Node} from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {TextureProvider} from \"../../Tiles\";\nimport { Transform } from \"../../geo/Transform\";\n\nexport class ImagePlaneGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n\n    private _alpha: number;\n    private _alphaOld: number;\n    private _fadeOutSpeed: number;\n\n    private _currentKey: string;\n    private _previousKey: string;\n    private _providerDisposers: { [key: string]: () => void };\n\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n\n        this._alpha = 0;\n        this._alphaOld = 0;\n        this._fadeOutSpeed = 0.05;\n\n        this._currentKey = null;\n        this._previousKey = null;\n        this._providerDisposers = {};\n\n        this._frameId = 0;\n        this._needsRender = false;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public indicateNeedsRender(): void {\n        this._needsRender = true;\n    }\n\n    public addPeripheryPlane(node: Node, transform: Transform): void {\n        const mesh: THREE.Mesh = this._factory.createMesh(node, transform);\n        const planes: { [key: string]: THREE.Mesh } = {};\n        planes[node.key] = mesh;\n        this._scene.addPeripheryPlanes(planes);\n\n        this._needsRender = true;\n    }\n\n    public clearPeripheryPlanes(): void {\n        this._scene.setPeripheryPlanes({});\n\n        this._needsRender = true;\n    }\n\n    public updateFrame(frame: IFrame): void {\n        this._updateFrameId(frame.id);\n        this._needsRender = this._updateAlpha(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateAlphaOld(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateImagePlanes(frame.state) || this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        if (key !== this._currentKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(\n                (texture: THREE.Texture): void => {\n                    this._updateTexture(texture);\n                });\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in this._providerDisposers) {\n            let disposeProvider: () => void = this._providerDisposers[key];\n            disposeProvider();\n\n            delete this._providerDisposers[key];\n        }\n\n        this._providerDisposers[key] = dispose;\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node: Node): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } =\n            this._extend({}, this._scene.planes, this._scene.planesOld, this._scene.planesPeriphery);\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            if (key !== node.key) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n        const planesOld: { [key: string]: THREE.Mesh } = this._scene.planesOld;\n        const planesPeriphery: { [key: string]: THREE.Mesh } = this._scene.planesPeriphery;\n\n        const planeAlpha: number = Object.keys(planesOld).length ? 1 : this._alpha;\n        const peripheryAlpha: number = Object.keys(planesOld).length ? 1 : Math.floor(this._alpha);\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = planeAlpha;\n        }\n\n        for (const key in planesOld) {\n            if (!planesOld.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planesOld[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alphaOld;\n        }\n\n        for (const key in planesPeriphery) {\n            if (!planesPeriphery.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planesPeriphery[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = peripheryAlpha;\n        }\n\n        renderer.render(this._scene.scenePeriphery, perspectiveCamera);\n        renderer.render(this._scene.scene, perspectiveCamera);\n        renderer.render(this._scene.sceneOld, perspectiveCamera);\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alpha;\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n    }\n\n    public clearNeedsRender(): void {\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateAlpha(alpha: number): boolean {\n        if (alpha === this._alpha) {\n            return false;\n        }\n\n        this._alpha = alpha;\n\n        return true;\n    }\n\n    private _updateAlphaOld(alpha: number): boolean {\n        if (alpha < 1 || this._alphaOld === 0) {\n            return false;\n        }\n\n        this._alphaOld = Math.max(0, this._alphaOld - this._fadeOutSpeed);\n\n        return true;\n    }\n\n    private _updateImagePlanes(state: ICurrentState): boolean {\n        if (state.currentNode == null || state.currentNode.key === this._currentKey) {\n            return false;\n        }\n\n        let previousKey: string = state.previousNode != null ? state.previousNode.key : null;\n        let currentKey: string = state.currentNode.key;\n\n        if (this._previousKey !== previousKey &&\n            this._previousKey !== currentKey &&\n            this._previousKey in this._providerDisposers) {\n\n            let disposeProvider: () => void = this._providerDisposers[this._previousKey];\n            disposeProvider();\n\n            delete this._providerDisposers[this._previousKey];\n        }\n\n        if (previousKey != null) {\n            if (previousKey !== this._currentKey && previousKey !== this._previousKey) {\n                let previousMesh: THREE.Mesh =\n                    this._factory.createMesh(state.previousNode, state.previousTransform);\n\n                const previousPlanes: { [key: string]: THREE.Mesh } = {};\n                previousPlanes[previousKey] = previousMesh;\n                this._scene.updateImagePlanes(previousPlanes);\n            }\n\n            this._previousKey = previousKey;\n        }\n\n        this._currentKey = currentKey;\n        let currentMesh: THREE.Mesh =\n            this._factory.createMesh(state.currentNode, state.currentTransform);\n\n        const planes: { [key: string]: THREE.Mesh } = {};\n        planes[currentKey] = currentMesh;\n        this._scene.updateImagePlanes(planes);\n\n        this._alphaOld = 1;\n\n        return true;\n    }\n\n    private _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    private _extend<T>(dest: T, ...sources: T[]): T {\n        for (const src of sources) {\n            for (const k in src) {\n                if (!src.hasOwnProperty(k)) {\n                    continue;\n                }\n\n                dest[k] = src[k];\n            }\n        }\n        return dest;\n    }\n}\n\nexport default ImagePlaneGLRenderer;\n",
     "import {IComponentConfiguration} from \"../../Component\";\n\nexport enum CoverState {\n    Hidden,\n    Loading,\n    Visible,\n}\n\nexport interface ICoverConfiguration extends IComponentConfiguration {\n    key?: string;\n    src?: string;\n    state?: CoverState;\n}\n\nexport default ICoverConfiguration;\n",
     "import {IComponentConfiguration} from \"../../Component\";\n\n/**\n * Enumeration for slider mode.\n *\n * @enum {number}\n * @readonly\n *\n * @description Modes for specifying how transitions\n * between nodes are performed in slider mode. Only\n * applicable when the slider component determines\n * that transitions with motion is possilble. When it\n * is not, the stationary mode will be applied.\n */\nexport enum SliderMode {\n    /**\n     * Transitions with motion.\n     *\n     * @description The slider component moves the\n     * camera between the node origins.\n     *\n     * In this mode it is not possible to zoom or pan.\n     *\n     * The slider component falls back to stationary\n     * mode when it determines that the pair of nodes\n     * does not have a strong enough relation.\n     */\n    Motion,\n\n    /**\n     * Stationary transitions.\n     *\n     * @description The camera is stationary.\n     *\n     * In this mode it is possible to zoom and pan.\n     */\n    Stationary,\n}\n\n/**\n * Interface for configuration of slider keys.\n *\n * @interface\n */\nexport interface ISliderKeys {\n    /**\n     * Key for the image plane in the background.\n     */\n    background: string;\n\n    /**\n     * Key for the image plane in the foreground.\n     */\n    foreground: string;\n}\n\n/**\n * Interface for configuration of slider component.\n *\n * @interface\n * ```\n * var viewer = new Mapillary.Viewer('<element-id>', '<client-id>', '<image-key>',\n *     {\n *         component: {\n *             slider: {\n *                 initialPosition: 0.5,\n *                 keys: {\n *                     background: '<background-key>',\n *                     foreground: '<foreground-key>',\n *                 },\n *                 sliderVisible: true,\n *             },\n *         },\n *     })\n * ```\n */\nexport interface ISliderConfiguration extends IComponentConfiguration {\n    /**\n     * Initial position of the slider on the interval [0, 1].\n     *\n     * @default 1\n     */\n    initialPosition?: number;\n\n    /**\n     * Slider keys.\n     */\n    keys?: ISliderKeys;\n\n    /**\n     * Value indicating whether the slider should be visible.\n     *\n     * @default true\n     */\n    sliderVisible?: boolean;\n\n    /**\n     * Mode used for image pair transitions.\n     */\n    mode?: SliderMode;\n}\n\nexport default ISliderConfiguration;\n",
-    "export {ICacheConfiguration, ICacheDepth} from \"./ICacheConfiguration\";\nexport {CoverState, ICoverConfiguration} from \"./ICoverConfiguration\";\nexport {IDirectionConfiguration} from \"./IDirectionConfiguration\";\nexport {IKeyboardConfiguration} from \"./IKeyboardConfiguration\";\nexport {IMarkerConfiguration} from \"./IMarkerConfiguration\";\nexport {IMouseConfiguration} from \"./IMouseConfiguration\";\nexport {INavigationConfiguration} from \"./INavigationConfiguration\";\nexport {IRouteConfiguration, IRoutePath, IRouteInfoKey} from \"./IRouteConfiguration\";\nexport {ISliderConfiguration, ISliderKeys, SliderMode} from \"./ISliderConfiguration\";\nexport {IComponentConfiguration} from \"./IComponentConfiguration\";\nexport {ISequenceConfiguration} from \"./ISequenceConfiguration\";\nexport {ISpatialDataConfiguration} from \"./ISpatialDataConfiguration\";\nexport {ITagConfiguration} from \"./ITagConfiguration\";\nexport {IShader} from \"./IShader\";\nexport * from \"../imageplane/interfaces/interfaces\";\nexport * from \"../marker/interfaces/interfaces\";\nexport * from \"../spatialdata/interfaces/interfaces\";\nexport * from \"../tag/interfaces/interfaces\";\n",
+    "export {IBearingConfiguration} from \"./IBearingConfiguration\";\nexport {ICacheConfiguration, ICacheDepth} from \"./ICacheConfiguration\";\nexport {CoverState, ICoverConfiguration} from \"./ICoverConfiguration\";\nexport {IDirectionConfiguration} from \"./IDirectionConfiguration\";\nexport {IKeyboardConfiguration} from \"./IKeyboardConfiguration\";\nexport {IMarkerConfiguration} from \"./IMarkerConfiguration\";\nexport {IMouseConfiguration} from \"./IMouseConfiguration\";\nexport {INavigationConfiguration} from \"./INavigationConfiguration\";\nexport {IRouteConfiguration, IRoutePath, IRouteInfoKey} from \"./IRouteConfiguration\";\nexport {ISliderConfiguration, ISliderKeys, SliderMode} from \"./ISliderConfiguration\";\nexport {IComponentConfiguration} from \"./IComponentConfiguration\";\nexport {ISequenceConfiguration} from \"./ISequenceConfiguration\";\nexport {ISpatialDataConfiguration} from \"./ISpatialDataConfiguration\";\nexport {ITagConfiguration} from \"./ITagConfiguration\";\nexport {IZoomConfiguration} from \"./IZoomConfiguration\";\nexport {IShader} from \"./IShader\";\nexport * from \"../imageplane/interfaces/interfaces\";\nexport * from \"../marker/interfaces/interfaces\";\nexport * from \"../spatialdata/interfaces/interfaces\";\nexport * from \"../tag/interfaces/interfaces\";\n",
     "import {switchMap, withLatestFrom} from \"rxjs/operators\";\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    IKeyboardConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\n\n/**\n * The `KeyPlayHandler` allows the user to control the play behavior\n * using the following key commands:\n *\n * `Spacebar`: Start or stop playing.\n * `SHIFT` + `D`: Switch direction.\n * `<`: Decrease speed.\n * `>`: Increase speed.\n *\n * @example\n * ```\n * var keyboardComponent = viewer.getComponent(\"keyboard\");\n *\n * keyboardComponent.keyPlay.disable();\n * keyboardComponent.keyPlay.enable();\n *\n * var isEnabled = keyboardComponent.keyPlay.isEnabled;\n * ```\n */\nexport class KeyPlayHandler extends HandlerBase<IKeyboardConfiguration> {\n    private _keyDownSubscription: Subscription;\n\n    protected _enable(): void {\n        this._keyDownSubscription = this._container.keyboardService.keyDown$.pipe(\n            withLatestFrom(\n                this._navigator.playService.playing$,\n                this._navigator.playService.direction$,\n                this._navigator.playService.speed$,\n                this._navigator.stateService.currentNode$.pipe(\n                    switchMap(\n                        (node: Node): Observable<IEdgeStatus> => {\n                            return node.sequenceEdges$;\n                        }))))\n            .subscribe(\n                (\n                    [event, playing, direction, speed, status]:\n                    [KeyboardEvent, boolean, EdgeDirection, number, IEdgeStatus]): void => {\n\n                    if (event.altKey || event.ctrlKey || event.metaKey) {\n                        return;\n                    }\n\n                    switch (event.key) {\n                        case \"D\":\n                            if (!event.shiftKey) {\n                                return;\n                            }\n\n                            const newDirection: EdgeDirection = playing ?\n                                null : direction === EdgeDirection.Next ?\n                                EdgeDirection.Prev : direction === EdgeDirection.Prev ?\n                                EdgeDirection.Next : null;\n\n                            if (newDirection != null) {\n                                this._navigator.playService.setDirection(newDirection);\n                            }\n\n                            break;\n                        case \" \":\n                            if (event.shiftKey) {\n                                return;\n                            }\n\n                            if (playing) {\n                                this._navigator.playService.stop();\n                            } else {\n                                for (let edge of status.edges) {\n                                    if (edge.data.direction === direction) {\n                                        this._navigator.playService.play();\n                                    }\n                                }\n                            }\n\n                            break;\n                        case \"<\":\n                            this._navigator.playService.setSpeed(speed - 0.05);\n                            break;\n                        case \">\":\n                            this._navigator.playService.setSpeed(speed + 0.05);\n                            break;\n                        default:\n                            return;\n                    }\n\n                    event.preventDefault();\n                });\n    }\n\n    protected _disable(): void {\n        this._keyDownSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IKeyboardConfiguration {\n        return { keyZoom: enable };\n    }\n}\n\nexport default KeyPlayHandler;\n",
     "import {withLatestFrom, switchMap} from \"rxjs/operators\";\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    IKeyboardConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\n\n/**\n * The `KeySequenceNavigationHandler` allows the user to navigate through a sequence using the\n * following key commands:\n *\n * `ALT` + `Up Arrow`: Navigate to next image in the sequence.\n * `ALT` + `Down Arrow`: Navigate to previous image in sequence.\n *\n * @example\n * ```\n * var keyboardComponent = viewer.getComponent(\"keyboard\");\n *\n * keyboardComponent.keySequenceNavigation.disable();\n * keyboardComponent.keySequenceNavigation.enable();\n *\n * var isEnabled = keyboardComponent.keySequenceNavigation.isEnabled;\n * ```\n */\nexport class KeySequenceNavigationHandler extends HandlerBase<IKeyboardConfiguration> {\n    private _keyDownSubscription: Subscription;\n\n    protected _enable(): void {\n        const sequenceEdges$: Observable<IEdgeStatus> = this._navigator.stateService.currentNode$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.sequenceEdges$;\n                }));\n\n        this._keyDownSubscription = this._container.keyboardService.keyDown$.pipe(\n            withLatestFrom(sequenceEdges$))\n            .subscribe(\n                ([event, edgeStatus]: [KeyboardEvent, IEdgeStatus]): void => {\n                    let direction: EdgeDirection = null;\n                    switch (event.keyCode) {\n                        case 38: // up\n                            direction = EdgeDirection.Next;\n                            break;\n                        case 40: // down\n                            direction = EdgeDirection.Prev;\n                            break;\n                        default:\n                            return;\n                    }\n\n                    event.preventDefault();\n\n                    if (!event.altKey || event.shiftKey || !edgeStatus.cached) {\n                        return;\n                    }\n\n                    for (const edge of edgeStatus.edges) {\n                        if (edge.data.direction === direction) {\n                            this._navigator.moveToKey$(edge.to)\n                                .subscribe(\n                                    undefined,\n                                    (error: Error): void => {\n                                        if (!(error instanceof AbortMapillaryError)) {\n                                            console.error(error);\n                                        }\n                                    });\n\n                            return;\n                        }\n                    }\n                });\n    }\n\n    protected _disable(): void {\n        this._keyDownSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IKeyboardConfiguration {\n        return { keySequenceNavigation: enable };\n    }\n}\n\nexport default KeySequenceNavigationHandler;\n",
     "import {withLatestFrom, switchMap} from \"rxjs/operators\";\nimport * as THREE from \"three\";\n\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    Component,\n    IKeyboardConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {\n    EdgeDirection,\n    IEdge,\n} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {\n    Camera,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\nimport {\n    IFrame,\n    IRotation,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `KeySpatialNavigationHandler` allows the user to navigate through a sequence using the\n * following key commands:\n *\n * `Up Arrow`: Step forward.\n * `Down Arrow`: Step backward.\n * `Left Arrow`: Step to the left.\n * `Rigth Arrow`: Step to the right.\n * `SHIFT` + `Down Arrow`: Turn around.\n * `SHIFT` + `Left Arrow`: Turn to the left.\n * `SHIFT` + `Rigth Arrow`: Turn to the right.\n *\n * @example\n * ```\n * var keyboardComponent = viewer.getComponent(\"keyboard\");\n *\n * keyboardComponent.keySpatialNavigation.disable();\n * keyboardComponent.keySpatialNavigation.enable();\n *\n * var isEnabled = keyboardComponent.keySpatialNavigation.isEnabled;\n * ```\n */\nexport class KeySpatialNavigationHandler extends HandlerBase<IKeyboardConfiguration> {\n    private _spatial: Spatial;\n\n    private _keyDownSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IKeyboardConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n    }\n\n    protected _enable(): void {\n        const spatialEdges$: Observable<IEdgeStatus> = this._navigator.stateService.currentNode$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.spatialEdges$;\n                }));\n\n        this._keyDownSubscription = this._container.keyboardService.keyDown$.pipe(\n            withLatestFrom(\n                spatialEdges$,\n                this._navigator.stateService.currentState$))\n            .subscribe(([event, edgeStatus, frame]: [KeyboardEvent, IEdgeStatus, IFrame]): void => {\n                let pano: boolean = frame.state.currentNode.pano;\n                let direction: EdgeDirection = null;\n                switch (event.keyCode) {\n                    case 37: // left\n                        direction = event.shiftKey && !pano ? EdgeDirection.TurnLeft : EdgeDirection.StepLeft;\n                        break;\n                    case 38: // up\n                        direction = event.shiftKey && !pano ? EdgeDirection.Pano : EdgeDirection.StepForward;\n                        break;\n                    case 39: // right\n                        direction = event.shiftKey && !pano ? EdgeDirection.TurnRight : EdgeDirection.StepRight;\n                        break;\n                    case 40: // down\n                        direction = event.shiftKey && !pano ? EdgeDirection.TurnU : EdgeDirection.StepBackward;\n                        break;\n                    default:\n                        return;\n                }\n\n                event.preventDefault();\n\n                if (event.altKey || !edgeStatus.cached ||\n                    (event.shiftKey && pano)) {\n                    return;\n                }\n\n                if (!pano) {\n                    this._moveDir(direction, edgeStatus);\n                } else {\n                    const shifts: { [dir: number]: number } = {};\n\n                    shifts[EdgeDirection.StepBackward] = Math.PI;\n                    shifts[EdgeDirection.StepForward] = 0;\n                    shifts[EdgeDirection.StepLeft] = Math.PI / 2;\n                    shifts[EdgeDirection.StepRight] = -Math.PI / 2;\n\n                    const phi: number = this._rotationFromCamera(frame.state.camera).phi;\n                    const navigationAngle: number = this._spatial.wrapAngle(phi + shifts[direction]);\n                    const threshold: number = Math.PI / 4;\n                    const edges: IEdge[] = edgeStatus.edges.filter(\n                        (e: IEdge): boolean => {\n                            return e.data.direction === EdgeDirection.Pano || e.data.direction === direction;\n                        });\n\n                    let smallestAngle: number = Number.MAX_VALUE;\n                    let toKey: string = null;\n                    for (const edge of edges) {\n                        const angle: number = Math.abs(this._spatial.wrapAngle(edge.data.worldMotionAzimuth - navigationAngle));\n\n                        if (angle < Math.min(smallestAngle, threshold)) {\n                            smallestAngle = angle;\n                            toKey = edge.to;\n                        }\n                    }\n\n                    if (toKey == null) {\n                        return;\n                    }\n\n                    this._moveToKey(toKey);\n                }\n            });\n    }\n\n    protected _disable(): void {\n        this._keyDownSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IKeyboardConfiguration {\n        return { keySpatialNavigation: enable };\n    }\n\n    private _moveDir(direction: EdgeDirection, edgeStatus: IEdgeStatus): void {\n        for (const edge of edgeStatus.edges) {\n            if (edge.data.direction === direction) {\n                this._moveToKey(edge.to);\n                return;\n            }\n        }\n    }\n\n    private _moveToKey(key: string): void {\n        this._navigator.moveToKey$(key)\n            .subscribe(\n                undefined,\n                (error: Error): void => {\n                    if (!(error instanceof AbortMapillaryError)) {\n                        console.error(error);\n                    }\n                });\n    }\n\n    private _rotationFromCamera(camera: Camera): IRotation {\n        let direction: THREE.Vector3 = camera.lookat.clone().sub(camera.position);\n\n        let upProjection: number = direction.clone().dot(camera.up);\n        let planeProjection: THREE.Vector3 = direction.clone().sub(camera.up.clone().multiplyScalar(upProjection));\n\n        let phi: number = Math.atan2(planeProjection.y, planeProjection.x);\n        let theta: number = Math.PI / 2 - this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n\n        return { phi: phi, theta: theta };\n    }\n}\n\nexport default KeySpatialNavigationHandler;\n",
     "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../../../API\";\nimport {\n    ICircleMarkerOptions,\n    Marker,\n} from \"../../../Component\";\n\n/**\n * @class CircleMarker\n *\n * @classdesc Non-interactive marker with a flat circle shape. The circle\n * marker can not be configured to be interactive.\n *\n * Circle marker properties can not be updated after creation.\n *\n * To create and add one `CircleMarker` with default configuration\n * and one with configuration use\n *\n * @example\n * ```\n * var defaultMarker = new Mapillary.MarkerComponent.CircleMarker(\n *     \"id-1\",\n *     { lat: 0, lon: 0, });\n *\n * var configuredMarker = new Mapillary.MarkerComponent.CircleMarker(\n *     \"id-2\",\n *     { lat: 0, lon: 0, },\n *     {\n *         color: \"#0Ff\",\n *         opacity: 0.3,\n *         radius: 0.7,\n *     });\n *\n * markerComponent.add([defaultMarker, configuredMarker]);\n * ```\n */\nexport class CircleMarker extends Marker {\n    private _color: number | string;\n    private _opacity: number;\n    private _radius: number;\n\n    constructor(id: string, latLon: ILatLon, options?: ICircleMarkerOptions) {\n        super(id, latLon);\n\n        options = !!options ? options : {};\n        this._color = options.color != null ? options.color : 0xffffff;\n        this._opacity = options.opacity != null ? options.opacity : 0.4;\n        this._radius = options.radius != null ? options.radius : 1;\n    }\n\n    protected _createGeometry(position: number[]): void {\n        const circle: THREE.Mesh = new THREE.Mesh(\n            new THREE.CircleGeometry(this._radius, 16),\n            new THREE.MeshBasicMaterial({\n                color: this._color,\n                opacity: this._opacity,\n                transparent: true,\n            }));\n\n        circle.up.fromArray([0, 0, 1]);\n        circle.renderOrder = -1;\n\n        const group: THREE.Object3D = new THREE.Object3D();\n        group.add(circle);\n        group.position.fromArray(position);\n\n        this._geometry = group;\n    }\n\n    protected _disposeGeometry(): void {\n        for (let mesh of <THREE.Mesh[]>this._geometry.children) {\n            mesh.geometry.dispose();\n            (<THREE.Material>mesh.material).dispose();\n        }\n    }\n\n    protected _getInteractiveObjects(): THREE.Object3D[] {\n        return [];\n    }\n}\n\nexport default CircleMarker;\n",
     "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../../../API\";\n\n/**\n * @class Marker\n *\n * @classdesc Represents an abstract marker class that should be extended\n * by marker implementations used in the marker component.\n */\nexport abstract class Marker {\n    protected _id: string;\n    protected _geometry: THREE.Object3D;\n    protected _latLon: ILatLon;\n\n    constructor(id: string, latLon: ILatLon) {\n        this._id = id;\n        this._latLon = latLon;\n    }\n\n    /**\n     * Get id.\n     * @returns {string} The id of the marker.\n     */\n    public get id(): string {\n        return this._id;\n    }\n\n    /**\n     * Get geometry.\n     *\n     * @ignore\n     */\n    public get geometry(): THREE.Object3D {\n        return this._geometry;\n    }\n\n    /**\n     * Get lat lon.\n     * @returns {ILatLon} The geographic coordinates of the marker.\n     */\n    public get latLon(): ILatLon {\n        return this._latLon;\n    }\n\n    /** @ignore */\n    public createGeometry(position: number[]): void {\n        if (!!this._geometry) {\n            return;\n        }\n\n        this._createGeometry(position);\n\n        // update matrix world if raycasting occurs before first render\n        this._geometry.updateMatrixWorld(true);\n    }\n\n    /** @ignore */\n    public disposeGeometry(): void {\n        if (!this._geometry) {\n            return;\n        }\n\n        this._disposeGeometry();\n\n        this._geometry = undefined;\n    }\n\n    /** @ignore */\n    public getInteractiveObjects(): THREE.Object3D[] {\n        if (!this._geometry) {\n            return [];\n        }\n\n        return this._getInteractiveObjects();\n    }\n\n    /** @ignore */\n    public lerpAltitude(alt: number, alpha: number): void {\n        if (!this._geometry) {\n            return;\n        }\n\n        this._geometry.position.z = (1 - alpha) * this._geometry.position.z + alpha * alt;\n    }\n\n    /** @ignore */\n    public updatePosition(position: number[], latLon?: ILatLon): void {\n        if (!!latLon) {\n            this._latLon.lat = latLon.lat;\n            this._latLon.lon = latLon.lon;\n        }\n\n        if (!this._geometry) {\n            return;\n        }\n\n        this._geometry.position.fromArray(position);\n        this._geometry.updateMatrixWorld(true);\n    }\n\n    protected abstract _createGeometry(position: number[]): void;\n\n    protected abstract _disposeGeometry(): void;\n\n    protected abstract _getInteractiveObjects(): THREE.Object3D[];\n}\n\nexport default Marker;\n",
     "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../../../API\";\nimport {\n    ISimpleMarkerOptions,\n    Marker,\n} from \"../../../Component\";\n\n/**\n * @class SimpleMarker\n *\n * @classdesc Interactive marker with ice cream shape. The sphere\n * inside the ice cream can be configured to be interactive.\n *\n * Simple marker properties can not be updated after creation.\n *\n * To create and add one `SimpleMarker` with default configuration\n * (non-interactive) and one interactive with configuration use\n *\n * @example\n * ```\n * var defaultMarker = new Mapillary.MarkerComponent.SimpleMarker(\n *     \"id-1\",\n *     { lat: 0, lon: 0, });\n *\n * var interactiveMarker = new Mapillary.MarkerComponent.SimpleMarker(\n *     \"id-2\",\n *     { lat: 0, lon: 0, },\n *     {\n *         ballColor: \"#00f\",\n *         ballOpacity: 0.5,\n *         color: \"#00f\",\n *         interactive: true,\n *         opacity: 0.3,\n *         radius: 0.7,\n *     });\n *\n * markerComponent.add([defaultMarker, interactiveMarker]);\n * ```\n */\nexport class SimpleMarker extends Marker {\n    private _ballColor: number | string;\n    private _ballOpacity: number;\n    private _circleToRayAngle: number;\n    private _color: number | string;\n    private _interactive: boolean;\n    private _opacity: number;\n    private _radius: number;\n\n    constructor(id: string, latLon: ILatLon, options?: ISimpleMarkerOptions) {\n        super(id, latLon);\n\n        options = !!options ? options : {};\n        this._ballColor = options.ballColor != null ? options.ballColor : 0xff0000;\n        this._ballOpacity = options.ballOpacity != null ? options.ballOpacity : 0.8;\n        this._circleToRayAngle = 2;\n        this._color = options.color != null ? options.color : 0xff0000;\n        this._interactive = !!options.interactive;\n        this._opacity = options.opacity != null ? options.opacity : 0.4;\n        this._radius = options.radius != null ? options.radius : 1;\n    }\n\n    protected _createGeometry(position: number[]): void {\n        const radius: number = this._radius;\n        const cone: THREE.Mesh = new THREE.Mesh(\n            this._markerGeometry(radius, 8, 8),\n            new THREE.MeshBasicMaterial({\n                color: this._color,\n                opacity: this._opacity,\n                transparent: true,\n            }));\n\n        cone.renderOrder = 1;\n\n        const ball: THREE.Mesh = new THREE.Mesh(\n            new THREE.SphereGeometry(radius / 2, 8, 8),\n            new THREE.MeshBasicMaterial({\n                color: this._ballColor,\n                opacity: this._ballOpacity,\n                transparent: true,\n            }));\n\n        ball.position.z = this._markerHeight(radius);\n\n        const group: THREE.Object3D = new THREE.Object3D();\n        group.add(ball);\n        group.add(cone);\n        group.position.fromArray(position);\n\n        this._geometry = group;\n    }\n\n    protected _disposeGeometry(): void {\n        for (let mesh of <THREE.Mesh[]>this._geometry.children) {\n            mesh.geometry.dispose();\n            (<THREE.Material>mesh.material).dispose();\n        }\n    }\n\n    protected _getInteractiveObjects(): THREE.Object3D[] {\n        return this._interactive ? [this._geometry.children[0]] : [];\n    }\n\n    private _markerHeight(radius: number): number {\n        let t: number = Math.tan(Math.PI - this._circleToRayAngle);\n        return radius * Math.sqrt(1 + t * t);\n    }\n\n    private _markerGeometry(radius: number, widthSegments: number, heightSegments: number): THREE.Geometry {\n        let geometry: THREE.Geometry = new THREE.Geometry();\n\n        widthSegments = Math.max(3, Math.floor(widthSegments) || 8);\n        heightSegments = Math.max(2, Math.floor(heightSegments) || 6);\n        let height: number = this._markerHeight(radius);\n\n        let vertices: any[] = [];\n\n        for (let y: number = 0; y <= heightSegments; ++y) {\n\n            let verticesRow: any[] = [];\n\n            for (let x: number = 0; x <= widthSegments; ++x) {\n                let u: number = x / widthSegments * Math.PI * 2;\n                let v: number = y / heightSegments * Math.PI;\n\n                let r: number;\n                if (v < this._circleToRayAngle) {\n                    r = radius;\n                } else {\n                    let t: number = Math.tan(v - this._circleToRayAngle);\n                    r = radius * Math.sqrt(1 + t * t);\n                }\n\n                let vertex: THREE.Vector3 = new THREE.Vector3();\n                vertex.x = r * Math.cos(u) * Math.sin(v);\n                vertex.y = r * Math.sin(u) * Math.sin(v);\n                vertex.z = r * Math.cos(v) + height;\n\n                geometry.vertices.push(vertex);\n                verticesRow.push(geometry.vertices.length - 1);\n            }\n            vertices.push(verticesRow);\n        }\n\n        for (let y: number = 0; y < heightSegments; ++y) {\n            for (let x: number = 0; x < widthSegments; ++x) {\n                let v1: number = vertices[y][x + 1];\n                let v2: number = vertices[y][x];\n                let v3: number = vertices[y + 1][x];\n                let v4: number = vertices[y + 1][x + 1];\n\n                let n1: THREE.Vector3 = geometry.vertices[v1].clone().normalize();\n                let n2: THREE.Vector3 = geometry.vertices[v2].clone().normalize();\n                let n3: THREE.Vector3 = geometry.vertices[v3].clone().normalize();\n                let n4: THREE.Vector3 = geometry.vertices[v4].clone().normalize();\n\n                geometry.faces.push(new THREE.Face3(v1, v2, v4, [n1, n2, n4]));\n                geometry.faces.push(new THREE.Face3(v2, v3, v4, [n2.clone(), n3, n4.clone()]));\n            }\n        }\n\n        geometry.computeFaceNormals();\n        geometry.boundingSphere = new THREE.Sphere(new THREE.Vector3(), radius + height);\n\n        return geometry;\n    }\n}\n\nexport default SimpleMarker;\n",
-    "import * as THREE from \"three\";\n\nimport {empty as observableEmpty, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {first, map, distinctUntilChanged, switchMap} from \"rxjs/operators\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `BounceHandler` ensures that the viewer bounces back to the image\n * when drag panning outside of the image edge.\n */\nexport class BounceHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _bounceSubscription: Subscription;\n\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        const inTransition$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.alpha < 1;\n                }));\n\n        this._bounceSubscription = observableCombineLatest(\n                inTransition$,\n                this._navigator.stateService.inTranslation$,\n                this._container.mouseService.active$,\n                this._container.touchService.active$).pipe(\n            map(\n                (noForce: boolean[]): boolean => {\n                    return noForce[0] || noForce[1] || noForce[2] || noForce[3];\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (noForce: boolean): Observable<[RenderCamera, Transform]> => {\n                    return noForce ?\n                        observableEmpty() :\n                        observableCombineLatest(\n                            this._container.renderService.renderCamera$,\n                            this._navigator.stateService.currentTransform$.pipe(first()));\n                }))\n            .subscribe(\n                ([render, transform]: [RenderCamera, Transform]): void => {\n                    if (!transform.hasValidScale && render.camera.focal < 0.1) {\n                        return;\n                    }\n\n                    if (render.perspective.aspect === 0 || render.perspective.aspect === Number.POSITIVE_INFINITY) {\n                        return;\n                    }\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    if (Math.max(...distances) < 0.01) {\n                        return;\n                    }\n\n                    const horizontalDistance: number = distances[1] - distances[3];\n                    const verticalDistance: number = distances[0] - distances[2];\n\n                    const currentDirection: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, 0, render.perspective)\n                        .sub(render.perspective.position);\n\n                    const directionPhi: THREE.Vector3 = this._viewportCoords\n                            .unprojectFromViewport(horizontalDistance, 0, render.perspective)\n                            .sub(render.perspective.position);\n\n                    const directionTheta: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, verticalDistance, render.perspective)\n                        .sub(render.perspective.position);\n\n                    let phi: number = (horizontalDistance > 0 ? 1 : -1) * directionPhi.angleTo(currentDirection);\n                    let theta: number = (verticalDistance > 0 ? 1 : -1) * directionTheta.angleTo(currentDirection);\n\n                    const threshold: number = Math.PI / 60;\n                    const coeff: number = 1e-1;\n\n                    phi = this._spatial.clamp(coeff * phi, -threshold, threshold);\n                    theta = this._spatial.clamp(coeff * theta, -threshold, threshold);\n\n                    this._navigator.stateService.rotateUnbounded({ phi: phi, theta: theta });\n                });\n    }\n\n    protected _disable(): void {\n        this._bounceSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(): IMouseConfiguration {\n        return { };\n    }\n}\n\nexport default BounceHandler;\n",
+    "import * as THREE from \"three\";\n\nimport {empty as observableEmpty, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {first, map, distinctUntilChanged, switchMap, withLatestFrom, startWith} from \"rxjs/operators\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport Node from \"../../graph/Node\";\n\n/**\n * The `BounceHandler` ensures that the viewer bounces back to the image\n * when drag panning outside of the image edge.\n */\nexport class BounceHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _bounceSubscription: Subscription;\n\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        const inTransition$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.alpha < 1;\n                }),\n            distinctUntilChanged());\n\n        this._bounceSubscription = observableCombineLatest(\n                inTransition$,\n                this._navigator.stateService.inTranslation$,\n                this._container.mouseService.active$,\n                this._container.touchService.active$).pipe(\n            map(\n                (noForce: boolean[]): boolean => {\n                    return noForce[0] || noForce[1] || noForce[2] || noForce[3];\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (noForce: boolean): Observable<[RenderCamera, Transform]> => {\n                    return noForce ?\n                        observableEmpty() :\n                        observableCombineLatest(\n                            this._container.renderService.renderCamera$,\n                            this._navigator.stateService.currentTransform$.pipe(first()));\n                }),\n            withLatestFrom(this._navigator.panService.panNodes$))\n            .subscribe(\n                ([[render, transform], nts]: [[RenderCamera, Transform], [Node, Transform, number][]]): void => {\n                    if (!transform.hasValidScale && render.camera.focal < 0.1) {\n                        return;\n                    }\n\n                    if (render.perspective.aspect === 0 || render.perspective.aspect === Number.POSITIVE_INFINITY) {\n                        return;\n                    }\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    const basic: number[] = this._viewportCoords.viewportToBasic(0, 0, transform, render.perspective);\n\n                    if ((basic[0] < 0 || basic[0] > 1) && nts.length > 0) {\n                        distances[0] = distances[2] = 0;\n                    }\n\n                    for (const [, t] of nts) {\n                        const d: number[] = ImageBoundary.viewportDistances(t, render.perspective, this._viewportCoords);\n\n                        for (let i: number = 1; i < distances.length; i += 2) {\n                            if (d[i] < distances[i]) {\n                                distances[i] = d[i];\n                            }\n                        }\n                    }\n\n                    if (Math.max(...distances) < 0.01) {\n                        return;\n                    }\n\n                    const horizontalDistance: number = distances[1] - distances[3];\n                    const verticalDistance: number = distances[0] - distances[2];\n\n                    const currentDirection: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, 0, render.perspective)\n                        .sub(render.perspective.position);\n\n                    const directionPhi: THREE.Vector3 = this._viewportCoords\n                            .unprojectFromViewport(horizontalDistance, 0, render.perspective)\n                            .sub(render.perspective.position);\n\n                    const directionTheta: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, verticalDistance, render.perspective)\n                        .sub(render.perspective.position);\n\n                    let phi: number = (horizontalDistance > 0 ? 1 : -1) * directionPhi.angleTo(currentDirection);\n                    let theta: number = (verticalDistance > 0 ? 1 : -1) * directionTheta.angleTo(currentDirection);\n\n                    const threshold: number = Math.PI / 60;\n                    const coeff: number = 1e-1;\n\n                    phi = this._spatial.clamp(coeff * phi, -threshold, threshold);\n                    theta = this._spatial.clamp(coeff * theta, -threshold, threshold);\n\n                    this._navigator.stateService.rotateUnbounded({ phi: phi, theta: theta });\n                });\n    }\n\n    protected _disable(): void {\n        this._bounceSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(): IMouseConfiguration {\n        return { };\n    }\n}\n\nexport default BounceHandler;\n",
     "import {merge as observableMerge, Subscription} from \"rxjs\";\n\nimport {map, withLatestFrom} from \"rxjs/operators\";\n\nimport {\n    Component,\n    IMouseConfiguration,\n    HandlerBase,\n    ClientTouch,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {RenderCamera} from \"../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `DoubleClickZoomHandler` allows the user to zoom the viewer image at a point by double clicking.\n *\n * @example\n * ```\n * var mouseComponent = viewer.getComponent(\"mouse\");\n *\n * mouseComponent.doubleClickZoom.disable();\n * mouseComponent.doubleClickZoom.enable();\n *\n * var isEnabled = mouseComponent.doubleClickZoom.isEnabled;\n * ```\n */\nexport class DoubleClickZoomHandler extends HandlerBase<IMouseConfiguration> {\n    private _viewportCoords: ViewportCoords;\n\n    private _zoomSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords) {\n        super(component, container, navigator);\n\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        this._zoomSubscription = observableMerge(\n                this._container.mouseService\n                    .filtered$(this._component.name, this._container.mouseService.dblClick$),\n                this._container.touchService.doubleTap$.pipe(\n                    map(\n                        (e: TouchEvent): ClientTouch => {\n                            let touch: Touch = e.touches[0];\n                            return { clientX: touch.clientX, clientY: touch.clientY, shiftKey: e.shiftKey };\n                        }))).pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$))\n            .subscribe(\n                ([event, render, transform]: [MouseEvent | ClientTouch, RenderCamera, Transform]): void => {\n                    const element: HTMLElement = this._container.element;\n\n                    const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n\n                    const unprojected: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY,\n                            element,\n                            render.perspective);\n\n                    const reference: number[] = transform.projectBasic(unprojected.toArray());\n                    const delta: number = !!(<{ shiftKey: boolean }>event).shiftKey ? -1 : 1;\n\n                    this._navigator.stateService.zoomIn(delta, reference);\n                });\n    }\n\n    protected _disable(): void {\n        this._zoomSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IMouseConfiguration {\n        return { doubleClickZoom: enable };\n    }\n}\n\nexport default DoubleClickZoomHandler;\n",
-    "import {\n    empty as observableEmpty,\n    merge as observableMerge,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    sample,\n    scan,\n    map,\n    share,\n    switchMap,\n    withLatestFrom,\n    pairwise,\n    filter,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n    MouseTouchPair,\n    MouseOperator,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    IRotation,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `DragPanHandler` allows the user to pan the viewer image by clicking and dragging the cursor.\n *\n * @example\n * ```\n * var mouseComponent = viewer.getComponent(\"mouse\");\n *\n * mouseComponent.dragPan.disable();\n * mouseComponent.dragPan.enable();\n *\n * var isEnabled = mouseComponent.dragPan.isEnabled;\n * ```\n */\nexport class DragPanHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _activeMouseSubscription: Subscription;\n    private _activeTouchSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _rotateSubscription: Subscription;\n    private _rotateWithoutInertiaSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        let draggingStarted$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragStart$).pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }),\n                share());\n\n        let draggingStopped$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragEnd$).pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }),\n                share());\n\n        this._activeMouseSubscription = observableMerge(\n                draggingStarted$,\n                draggingStopped$)\n            .subscribe(this._container.mouseService.activate$);\n\n        const documentMouseMove$: Observable<MouseEvent> = observableMerge(\n                draggingStarted$,\n                draggingStopped$).pipe(\n            switchMap(\n                (dragging: boolean): Observable<MouseEvent> => {\n                    return dragging ?\n                        this._container.mouseService.documentMouseMove$ :\n                        observableEmpty();\n                }));\n\n        this._preventDefaultSubscription = observableMerge(\n                documentMouseMove$,\n                this._container.touchService.touchMove$)\n            .subscribe(\n                (event: MouseEvent | TouchEvent): void => {\n                    event.preventDefault(); // prevent selection of content outside the viewer\n                });\n\n        let touchMovingStarted$: Observable<boolean> =\n            this._container.touchService.singleTouchDragStart$.pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }));\n\n        let touchMovingStopped$: Observable<boolean> =\n            this._container.touchService.singleTouchDragEnd$.pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }));\n\n        this._activeTouchSubscription = observableMerge(\n                touchMovingStarted$,\n                touchMovingStopped$)\n            .subscribe(this._container.touchService.activate$);\n\n        const rotation$: Observable<IRotation> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano || frame.state.nodesAhead < 1;\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (enable: boolean): Observable<MouseTouchPair> => {\n                    if (!enable) {\n                        return observableEmpty();\n                    }\n\n                    const mouseDrag$: Observable<[MouseEvent, MouseEvent]> =\n                        MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService);\n\n                    const singleTouchDrag$: Observable<[Touch, Touch]> = observableMerge(\n                            this._container.touchService.singleTouchDragStart$,\n                            this._container.touchService.singleTouchDrag$,\n                            this._container.touchService.singleTouchDragEnd$.pipe(\n                                map((): TouchEvent => { return null; }))).pipe(\n                        map(\n                            (event: TouchEvent): Touch => {\n                                return event != null && event.touches.length > 0 ?\n                                    event.touches[0] : null;\n                            }),\n                        pairwise(),\n                        filter(\n                            (pair: [Touch, Touch]): boolean => {\n                                return pair[0] != null && pair[1] != null;\n                            }));\n\n                    return observableMerge(\n                            mouseDrag$,\n                            singleTouchDrag$);\n                }),\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([events, render, transform]: [MouseTouchPair, RenderCamera, Transform]): IRotation => {\n                    let previousEvent: MouseEvent | Touch = events[0];\n                    let event: MouseEvent | Touch = events[1];\n\n                    let movementX: number = event.clientX - previousEvent.clientX;\n                    let movementY: number = event.clientY - previousEvent.clientY;\n\n                    let element: HTMLElement = this._container.element;\n\n                    let [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n\n                    let currentDirection: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionX: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX - movementX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionY: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY - movementY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let phi: number = (movementX > 0 ? 1 : -1) * directionX.angleTo(currentDirection);\n                    let theta: number = (movementY > 0 ? -1 : 1) * directionY.angleTo(currentDirection);\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    if (distances[0] > 0 && theta < 0) {\n                        theta /= Math.max(1, 2e2 * distances[0]);\n                    }\n\n                    if (distances[2] > 0 && theta > 0) {\n                        theta /= Math.max(1, 2e2 * distances[2]);\n                    }\n\n                    if (distances[1] > 0 && phi < 0) {\n                        phi /= Math.max(1, 2e2 * distances[1]);\n                    }\n\n                    if (distances[3] > 0 && phi > 0) {\n                        phi /= Math.max(1, 2e2 * distances[3]);\n                    }\n\n                    return { phi: phi, theta: theta };\n                }),\n            share());\n\n        this._rotateWithoutInertiaSubscription = rotation$\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotateWithoutInertia(rotation);\n                });\n\n        this._rotateSubscription = rotation$.pipe(\n            scan(\n                (rotationBuffer: [number, IRotation][], rotation: IRotation): [number, IRotation][] => {\n                    this._drainBuffer(rotationBuffer);\n\n                    rotationBuffer.push([Date.now(), rotation]);\n\n                    return rotationBuffer;\n                },\n                []),\n            sample(\n                observableMerge(\n                        this._container.mouseService.filtered$(\n                            this._component.name,\n                            this._container.mouseService.mouseDragEnd$),\n                        this._container.touchService.singleTouchDragEnd$)),\n            map(\n                (rotationBuffer: [number, IRotation][]): IRotation => {\n                    const drainedBuffer: [number, IRotation][] = this._drainBuffer(rotationBuffer.slice());\n                    const rotation: IRotation = { phi: 0, theta: 0 };\n\n                    for (const bufferedRotation of drainedBuffer) {\n                        rotation.phi += bufferedRotation[1].phi;\n                        rotation.theta += bufferedRotation[1].theta;\n                    }\n\n                    const count: number = drainedBuffer.length;\n                    if (count > 0) {\n                        rotation.phi /= count;\n                        rotation.theta /= count;\n                    }\n\n                    const threshold: number = Math.PI / 18;\n\n                    rotation.phi = this._spatial.clamp(rotation.phi, -threshold, threshold);\n                    rotation.theta = this._spatial.clamp(rotation.theta, -threshold, threshold);\n\n                    return rotation;\n                }))\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotate(rotation);\n                });\n    }\n\n    protected _disable(): void {\n        this._activeMouseSubscription.unsubscribe();\n        this._activeTouchSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._rotateSubscription.unsubscribe();\n        this._rotateWithoutInertiaSubscription.unsubscribe();\n\n        this._activeMouseSubscription = null;\n        this._activeTouchSubscription = null;\n        this._preventDefaultSubscription = null;\n        this._rotateSubscription = null;\n    }\n\n    protected _getConfiguration(enable: boolean): IMouseConfiguration {\n        return { dragPan: enable };\n    }\n\n    private _drainBuffer<T>(buffer: [number, T][]): [number, T][] {\n        const cutoff: number = 50;\n        const now: number = Date.now();\n\n        while (buffer.length > 0 && now - buffer[0][0] > cutoff) {\n            buffer.shift();\n        }\n\n        return buffer;\n    }\n}\n\nexport default DragPanHandler;\n",
+    "import {\n    empty as observableEmpty,\n    merge as observableMerge,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    sample,\n    scan,\n    map,\n    share,\n    switchMap,\n    withLatestFrom,\n    pairwise,\n    filter,\n    distinctUntilChanged,\n    startWith,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n    MouseTouchPair,\n    MouseOperator,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    IRotation,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport Node from \"../../graph/Node\";\n\n/**\n * The `DragPanHandler` allows the user to pan the viewer image by clicking and dragging the cursor.\n *\n * @example\n * ```\n * var mouseComponent = viewer.getComponent(\"mouse\");\n *\n * mouseComponent.dragPan.disable();\n * mouseComponent.dragPan.enable();\n *\n * var isEnabled = mouseComponent.dragPan.isEnabled;\n * ```\n */\nexport class DragPanHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _activeMouseSubscription: Subscription;\n    private _activeTouchSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _rotateSubscription: Subscription;\n    private _rotateWithoutInertiaSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        let draggingStarted$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragStart$).pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }),\n                share());\n\n        let draggingStopped$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragEnd$).pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }),\n                share());\n\n        this._activeMouseSubscription = observableMerge(\n                draggingStarted$,\n                draggingStopped$)\n            .subscribe(this._container.mouseService.activate$);\n\n        const documentMouseMove$: Observable<MouseEvent> = observableMerge(\n                draggingStarted$,\n                draggingStopped$).pipe(\n            switchMap(\n                (dragging: boolean): Observable<MouseEvent> => {\n                    return dragging ?\n                        this._container.mouseService.documentMouseMove$ :\n                        observableEmpty();\n                }));\n\n        this._preventDefaultSubscription = observableMerge(\n                documentMouseMove$,\n                this._container.touchService.touchMove$)\n            .subscribe(\n                (event: MouseEvent | TouchEvent): void => {\n                    event.preventDefault(); // prevent selection of content outside the viewer\n                });\n\n        let touchMovingStarted$: Observable<boolean> =\n            this._container.touchService.singleTouchDragStart$.pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }));\n\n        let touchMovingStopped$: Observable<boolean> =\n            this._container.touchService.singleTouchDragEnd$.pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }));\n\n        this._activeTouchSubscription = observableMerge(\n                touchMovingStarted$,\n                touchMovingStopped$)\n            .subscribe(this._container.touchService.activate$);\n\n        const rotation$: Observable<IRotation> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano || frame.state.nodesAhead < 1;\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (enable: boolean): Observable<MouseTouchPair> => {\n                    if (!enable) {\n                        return observableEmpty();\n                    }\n\n                    const mouseDrag$: Observable<[MouseEvent, MouseEvent]> =\n                        MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService);\n\n                    const singleTouchDrag$: Observable<[Touch, Touch]> = observableMerge(\n                            this._container.touchService.singleTouchDragStart$,\n                            this._container.touchService.singleTouchDrag$,\n                            this._container.touchService.singleTouchDragEnd$.pipe(\n                                map((): TouchEvent => { return null; }))).pipe(\n                        map(\n                            (event: TouchEvent): Touch => {\n                                return event != null && event.touches.length > 0 ?\n                                    event.touches[0] : null;\n                            }),\n                        pairwise(),\n                        filter(\n                            (pair: [Touch, Touch]): boolean => {\n                                return pair[0] != null && pair[1] != null;\n                            }));\n\n                    return observableMerge(\n                            mouseDrag$,\n                            singleTouchDrag$);\n                }),\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$,\n                this._navigator.panService.panNodes$),\n            map(\n                ([events, render, transform, nts]: [MouseTouchPair, RenderCamera, Transform, [Node, Transform, number][]]): IRotation => {\n                    let previousEvent: MouseEvent | Touch = events[0];\n                    let event: MouseEvent | Touch = events[1];\n\n                    let movementX: number = event.clientX - previousEvent.clientX;\n                    let movementY: number = event.clientY - previousEvent.clientY;\n\n                    let element: HTMLElement = this._container.element;\n\n                    let [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n\n                    let currentDirection: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionX: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX - movementX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionY: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY - movementY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let phi: number = (movementX > 0 ? 1 : -1) * directionX.angleTo(currentDirection);\n                    let theta: number = (movementY > 0 ? -1 : 1) * directionY.angleTo(currentDirection);\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    for (const [, t] of nts) {\n                        const d: number[] = ImageBoundary.viewportDistances(t, render.perspective, this._viewportCoords);\n\n                        for (let i: number = 0; i < distances.length; i++) {\n                            if (d[i] < distances[i]) {\n                                distances[i] = d[i];\n                            }\n                        }\n                    }\n\n                    if (distances[0] > 0 && theta < 0) {\n                        theta /= Math.max(1, 2e2 * distances[0]);\n                    }\n\n                    if (distances[2] > 0 && theta > 0) {\n                        theta /= Math.max(1, 2e2 * distances[2]);\n                    }\n\n                    if (distances[1] > 0 && phi < 0) {\n                        phi /= Math.max(1, 2e2 * distances[1]);\n                    }\n\n                    if (distances[3] > 0 && phi > 0) {\n                        phi /= Math.max(1, 2e2 * distances[3]);\n                    }\n\n                    return { phi: phi, theta: theta };\n                }),\n            share());\n\n        this._rotateWithoutInertiaSubscription = rotation$\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotateWithoutInertia(rotation);\n                });\n\n        this._rotateSubscription = rotation$.pipe(\n            scan(\n                (rotationBuffer: [number, IRotation][], rotation: IRotation): [number, IRotation][] => {\n                    this._drainBuffer(rotationBuffer);\n\n                    rotationBuffer.push([Date.now(), rotation]);\n\n                    return rotationBuffer;\n                },\n                []),\n            sample(\n                observableMerge(\n                        this._container.mouseService.filtered$(\n                            this._component.name,\n                            this._container.mouseService.mouseDragEnd$),\n                        this._container.touchService.singleTouchDragEnd$)),\n            map(\n                (rotationBuffer: [number, IRotation][]): IRotation => {\n                    const drainedBuffer: [number, IRotation][] = this._drainBuffer(rotationBuffer.slice());\n                    const rotation: IRotation = { phi: 0, theta: 0 };\n\n                    for (const bufferedRotation of drainedBuffer) {\n                        rotation.phi += bufferedRotation[1].phi;\n                        rotation.theta += bufferedRotation[1].theta;\n                    }\n\n                    const count: number = drainedBuffer.length;\n                    if (count > 0) {\n                        rotation.phi /= count;\n                        rotation.theta /= count;\n                    }\n\n                    const threshold: number = Math.PI / 18;\n\n                    rotation.phi = this._spatial.clamp(rotation.phi, -threshold, threshold);\n                    rotation.theta = this._spatial.clamp(rotation.theta, -threshold, threshold);\n\n                    return rotation;\n                }))\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotate(rotation);\n                });\n    }\n\n    protected _disable(): void {\n        this._activeMouseSubscription.unsubscribe();\n        this._activeTouchSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._rotateSubscription.unsubscribe();\n        this._rotateWithoutInertiaSubscription.unsubscribe();\n\n        this._activeMouseSubscription = null;\n        this._activeTouchSubscription = null;\n        this._preventDefaultSubscription = null;\n        this._rotateSubscription = null;\n    }\n\n    protected _getConfiguration(enable: boolean): IMouseConfiguration {\n        return { dragPan: enable };\n    }\n\n    private _drainBuffer<T>(buffer: [number, T][]): [number, T][] {\n        const cutoff: number = 50;\n        const now: number = Date.now();\n\n        while (buffer.length > 0 && now - buffer[0][0] > cutoff) {\n            buffer.shift();\n        }\n\n        return buffer;\n    }\n}\n\nexport default DragPanHandler;\n",
     "import * as THREE from \"three\";\n\nimport {\n    combineLatest as observableCombinLatest,\n    empty as observableEmpty,\n    merge as observableMerge,\n    of as observableOf,\n    Subscription,\n    Observable,\n} from \"rxjs\";\n\nimport {\n    map,\n    filter,\n    withLatestFrom,\n    share,\n    switchMap,\n    startWith,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport {\n    Component,\n    IMouseConfiguration,\n    HandlerBase,\n    MouseOperator,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IRotation,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport class EarthControlHandler extends HandlerBase<IMouseConfiguration> {\n    private _viewportCoords: ViewportCoords;\n    private _spatial: Spatial;\n\n    private _dollySubscription: Subscription;\n    private _orbitSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _truckSubscription: Subscription;\n\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        const earth$: Observable<boolean> = this._navigator.stateService.state$.pipe(\n            map(\n                (state: State): boolean => {\n                    return state === State.Earth;\n                }),\n            share());\n\n        this._preventDefaultSubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<MouseEvent> => {\n                    return earth ?\n                        this._container.mouseService.mouseWheel$ :\n                        observableEmpty();\n                }))\n            .subscribe(\n                (event: WheelEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._truckSubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<[MouseEvent, MouseEvent]> => {\n                    if (!earth) {\n                        return observableEmpty();\n                    }\n\n                    return MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService).pipe(\n                        filter(\n                            ([e1, e2]: [MouseEvent, MouseEvent]): boolean => {\n                                return !(e1.ctrlKey && e2.ctrlKey);\n                            }));\n                }),\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([[previous, current], render, transform]: [[MouseEvent, MouseEvent], RenderCamera, Transform]): number[] => {\n                    const planeNormal: number[] = [0, 0, 1];\n                    const planePoint: number[] = transform.unprojectBasic([0.5, 0.5], 0);\n                    planePoint[2] -= 2;\n\n                    const currentIntersection: THREE.Vector3 = this._planeIntersection(\n                        current,\n                        planeNormal,\n                        planePoint,\n                        render.perspective,\n                        this._container.element);\n\n                    const previousIntersection: THREE.Vector3 = this._planeIntersection(\n                        previous,\n                        planeNormal,\n                        planePoint,\n                        render.perspective,\n                        this._container.element);\n\n                    if (!currentIntersection || !previousIntersection) {\n                        return null;\n                    }\n\n                    const direction: number[] = new THREE.Vector3()\n                        .subVectors(currentIntersection, previousIntersection)\n                        .multiplyScalar(-1)\n                        .toArray();\n\n                    return direction;\n                }),\n            filter(\n                (direction: number[]): boolean => {\n                    return !!direction;\n                }))\n            .subscribe(\n                (direction: number[]): void => {\n                    this._navigator.stateService.truck(direction);\n                });\n\n        this._orbitSubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<[MouseEvent, MouseEvent]> => {\n                    if (!earth) {\n                        return observableEmpty();\n                    }\n\n                    return MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService).pipe(\n                        filter(\n                            ([e1, e2]: [MouseEvent, MouseEvent]): boolean => {\n                                return e1.ctrlKey && e2.ctrlKey;\n                            }));\n                }),\n            map(\n                ([previous, current]: [MouseEvent, MouseEvent]): IRotation => {\n                    const [currentX, currentY]: number[] = this._eventToViewport(current, this._container.element);\n                    const [previousX, previousY]: number[] = this._eventToViewport(previous, this._container.element);\n\n                    const phi: number = (previousX - currentX) * Math.PI;\n                    const theta: number = (currentY - previousY) * Math.PI / 2;\n\n                    return { phi: phi, theta: theta };\n                }))\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.orbit(rotation);\n                });\n\n        this._dollySubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<WheelEvent> => {\n                    if (!earth) {\n                        return observableEmpty();\n                    }\n\n                    return this._container.mouseService\n                        .filteredWheel$(this._component.name, this._container.mouseService.mouseWheel$);\n                }),\n            map(\n                (event: WheelEvent): number => {\n                    let delta: number = event.deltaY;\n\n                    if (event.deltaMode === 1) {\n                        delta = 40 * delta;\n                    } else if (event.deltaMode === 2) {\n                        delta = 800 * delta;\n                    }\n\n                    const canvasSize: number[] = this._viewportCoords.containerToCanvas(this._container.element);\n\n                    return -delta / canvasSize[1];\n                }))\n            .subscribe(\n                (delta: number): void => {\n                    this._navigator.stateService.dolly(delta);\n                });\n    }\n\n    protected _disable(): void {\n        this._dollySubscription.unsubscribe();\n        this._orbitSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._truckSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(): IMouseConfiguration {\n        return { };\n    }\n\n    private _eventToViewport(event: MouseEvent, element: HTMLElement): number[] {\n        const previousCanvas: number[] = this._viewportCoords.canvasPosition(event, element);\n\n        return this._viewportCoords.canvasToViewport(previousCanvas[0], previousCanvas[1], element);\n    }\n\n    private _planeIntersection(\n        event: MouseEvent,\n        planeNormal: number[],\n        planePoint: number[],\n        camera: THREE.Camera,\n        element: HTMLElement): THREE.Vector3 {\n\n        const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n        const direction: THREE.Vector3 =\n            this._viewportCoords\n                .unprojectFromCanvas(\n                    canvasX,\n                    canvasY,\n                    element,\n                    camera)\n                .sub(camera.position)\n                .normalize();\n\n        if (Math.abs(this._spatial.angleToPlane(direction.toArray(), planeNormal)) < Math.PI / 90) {\n            return null;\n        }\n\n        const l0: THREE.Vector3 = camera.position.clone();\n        const n: THREE.Vector3 = new THREE.Vector3().fromArray(planeNormal);\n        const p0: THREE.Vector3 = new THREE.Vector3().fromArray(planePoint);\n\n        const d: number = new THREE.Vector3().subVectors(p0, l0).dot(n) / direction.clone().dot(n);\n\n        const intersection: THREE.Vector3 = new THREE.Vector3().addVectors(l0, direction.multiplyScalar(d));\n\n        if (this._viewportCoords.worldToCamera(intersection.toArray(), camera)[2] > 0) {\n            return null;\n        }\n\n        return intersection;\n    }\n}\n\nexport default EarthControlHandler;\n",
     "import * as THREE from \"three\";\n\nimport {\n    Lines,\n    Transform,\n    ViewportCoords,\n} from \"../../../src/Geo\";\n\nfunction basicBoundaryPoints(pointsPerSide: number): number[][] {\n    let points: number[][] = [];\n    let os: number[][] = [[0, 0], [1, 0], [1, 1], [0, 1]];\n    let ds: number[][] = [[1, 0], [0, 1], [-1, 0], [0, -1]];\n\n    for (let side: number = 0; side < 4; ++side) {\n        let o: number[] = os[side];\n        let d: number[] = ds[side];\n\n        for (let i: number = 0; i < pointsPerSide; ++i) {\n            points.push([o[0] + d[0] * i / pointsPerSide,\n                            o[1] + d[1] * i / pointsPerSide]);\n        }\n    }\n\n    return points;\n}\n\nfunction insideViewport(x: number, y: number): boolean {\n    return x >= -1 && x <= 1 && y >= -1 && y <= 1;\n}\n\nfunction insideBasic(x: number, y: number): boolean {\n    return x >= 0 && x <= 1 && y >= 0 && y <= 1;\n}\n\nexport function viewportDistances(transform: Transform, perspective: THREE.PerspectiveCamera, viewportCoords: ViewportCoords): number[] {\n    const boundaryPointsBasic: number[][] = basicBoundaryPoints(100);\n    const boundaryPointsViewport: number[][] = boundaryPointsBasic\n        .map(\n            (basic: number[]) => {\n                return viewportCoords.basicToViewportSafe(basic[0], basic[1], transform, perspective);\n            });\n\n    const visibleBoundaryPoints: number[][] = [];\n    const viewportSides: Lines.Point[] = [\n        { x: -1, y: 1 },\n        { x: 1, y: 1 },\n        { x: 1, y: -1 },\n        { x: -1, y: -1 }];\n\n    const intersections: boolean[] = [false, false, false, false];\n\n    for (let i: number = 0; i < boundaryPointsViewport.length; i++) {\n        const p1: number[] = boundaryPointsViewport[i];\n        const p2: number[] = boundaryPointsViewport[(i + 1) % boundaryPointsViewport.length];\n\n        if (p1 === null) {\n            continue;\n        }\n\n        if (p2 === null) {\n            if (insideViewport(p1[0], p1[1])) {\n                visibleBoundaryPoints.push(p1);\n            }\n\n            continue;\n        }\n\n        const [x1, y1]: number[] = p1;\n        const [x2, y2]: number[] = p2;\n\n        if (insideViewport(x1, y1)) {\n            if (insideViewport(x2, y2)) {\n                visibleBoundaryPoints.push(p1);\n            } else {\n                for (let side: number = 0; side < 4; side++) {\n                    const s1: Lines.Segment = { p1: { x: x1, y: y1 }, p2: { x: x2, y: y2 } };\n                    const s2: Lines.Segment = { p1: viewportSides[side], p2: viewportSides[(side + 1) % 4] };\n\n                    const intersecting: boolean = Lines.segmentsIntersect(s1, s2);\n\n                    if (intersecting) {\n                        const intersection: Lines.Point = Lines.segmentIntersection(s1, s2);\n\n                        visibleBoundaryPoints.push(p1, [intersection.x, intersection.y]);\n                        intersections[side] = true;\n                    }\n                }\n            }\n        }\n    }\n\n    const [topLeftBasicX, topLeftBasicY]: number[] =\n        viewportCoords.viewportToBasic(-1, 1, transform, perspective);\n\n    const [topRightBasicX, topRightBasicY]: number[] =\n        viewportCoords.viewportToBasic(1, 1, transform, perspective);\n\n    const [bottomRightBasicX, bottomRightBasicY]: number[] =\n        viewportCoords.viewportToBasic(1, -1, transform, perspective);\n\n    const [bottomLeftBasicX, bottomLeftBasicY]: number[] =\n        viewportCoords.viewportToBasic(-1, -1, transform, perspective);\n\n    if (insideBasic(topLeftBasicX, topLeftBasicY)) {\n        intersections[3] = intersections[0] = true;\n    }\n\n    if (insideBasic(topRightBasicX, topRightBasicY)) {\n        intersections[0] = intersections[1] = true;\n    }\n\n    if (insideBasic(bottomRightBasicX, bottomRightBasicY)) {\n        intersections[1] = intersections[2] = true;\n    }\n\n    if (insideBasic(bottomLeftBasicX, bottomLeftBasicY)) {\n        intersections[2] = intersections[3] = true;\n    }\n\n    const maximums: number[] = [-1, -1, 1, 1];\n\n    for (let visibleBoundaryPoint of visibleBoundaryPoints) {\n        const x: number = visibleBoundaryPoint[0];\n        const y: number = visibleBoundaryPoint[1];\n\n        if (x > maximums[1]) {\n            maximums[1] = x;\n        }\n\n        if (x < maximums[3]) {\n            maximums[3] = x;\n        }\n\n        if (y > maximums[0]) {\n            maximums[0] = y;\n        }\n\n        if (y < maximums[2]) {\n            maximums[2] = y;\n        }\n    }\n\n    const boundary: number[] = [1, 1, -1, -1];\n    const distances: number[] = [];\n\n    for (let side: number = 0; side < 4; side++) {\n        if (intersections[side]) {\n            distances.push(0);\n            continue;\n        }\n\n        distances.push(Math.abs(boundary[side] - maximums[side]));\n    }\n\n    return distances;\n}\n",
     "import {Subscription} from \"rxjs\";\n\nimport {\n    BounceHandler,\n    ComponentService,\n    Component,\n    DoubleClickZoomHandler,\n    DragPanHandler,\n    EarthControlHandler,\n    IMouseConfiguration,\n    ScrollZoomHandler,\n    TouchZoomHandler,\n} from \"../../Component\";\nimport {\n    ViewportCoords,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * @class MouseComponent\n *\n * @classdesc Component handling mouse and touch events for camera movement.\n *\n * To retrive and use the mouse component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * var mouseComponent = viewer.getComponent(\"mouse\");\n * ```\n */\nexport class MouseComponent extends Component<IMouseConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"mouse\";\n\n    private _bounceHandler: BounceHandler;\n    private _doubleClickZoomHandler: DoubleClickZoomHandler;\n    private _dragPanHandler: DragPanHandler;\n    private _earthControlHandler: EarthControlHandler;\n    private _scrollZoomHandler: ScrollZoomHandler;\n    private _touchZoomHandler: TouchZoomHandler;\n\n    private _configurationSubscription: Subscription;\n\n    /** @ignore */\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        const spatial: Spatial = new Spatial();\n        const viewportCoords: ViewportCoords = new ViewportCoords();\n\n        this._bounceHandler = new BounceHandler(this, container, navigator, viewportCoords, spatial);\n        this._doubleClickZoomHandler = new DoubleClickZoomHandler(this, container, navigator, viewportCoords);\n        this._dragPanHandler = new DragPanHandler(this, container, navigator, viewportCoords, spatial);\n        this._earthControlHandler = new EarthControlHandler(this, container, navigator, viewportCoords, spatial);\n        this._scrollZoomHandler = new ScrollZoomHandler(this, container, navigator, viewportCoords);\n        this._touchZoomHandler = new TouchZoomHandler(this, container, navigator, viewportCoords);\n    }\n\n    /**\n     * Get double click zoom.\n     *\n     * @returns {DoubleClickZoomHandler} The double click zoom handler.\n     */\n    public get doubleClickZoom(): DoubleClickZoomHandler {\n        return this._doubleClickZoomHandler;\n    }\n\n    /**\n     * Get drag pan.\n     *\n     * @returns {DragPanHandler} The drag pan handler.\n     */\n    public get dragPan(): DragPanHandler {\n        return this._dragPanHandler;\n    }\n\n    /**\n     * Get scroll zoom.\n     *\n     * @returns {ScrollZoomHandler} The scroll zoom handler.\n     */\n    public get scrollZoom(): ScrollZoomHandler {\n        return this._scrollZoomHandler;\n    }\n\n    /**\n     * Get touch zoom.\n     *\n     * @returns {TouchZoomHandler} The touch zoom handler.\n     */\n    public get touchZoom(): TouchZoomHandler {\n        return this._touchZoomHandler;\n    }\n\n    protected _activate(): void {\n        this._bounceHandler.enable();\n        this._earthControlHandler.enable();\n\n        this._configurationSubscription = this._configuration$\n            .subscribe(\n                (configuration: IMouseConfiguration): void => {\n                    if (configuration.doubleClickZoom) {\n                        this._doubleClickZoomHandler.enable();\n                    } else {\n                        this._doubleClickZoomHandler.disable();\n                    }\n\n                    if (configuration.dragPan) {\n                        this._dragPanHandler.enable();\n                    } else {\n                        this._dragPanHandler.disable();\n                    }\n\n                    if (configuration.scrollZoom) {\n                        this._scrollZoomHandler.enable();\n                    } else {\n                        this._scrollZoomHandler.disable();\n                    }\n\n                    if (configuration.touchZoom) {\n                        this._touchZoomHandler.enable();\n                    } else {\n                        this._touchZoomHandler.disable();\n                    }\n                });\n\n        this._container.mouseService.claimMouse(this._name, 0);\n    }\n\n    protected _deactivate(): void {\n        this._container.mouseService.unclaimMouse(this._name);\n\n        this._configurationSubscription.unsubscribe();\n\n        this._bounceHandler.disable();\n        this._doubleClickZoomHandler.disable();\n        this._dragPanHandler.disable();\n        this._earthControlHandler.disable();\n        this._scrollZoomHandler.disable();\n        this._touchZoomHandler.disable();\n    }\n\n    protected _getDefaultConfiguration(): IMouseConfiguration {\n        return { doubleClickZoom: false, dragPan: true, scrollZoom: true, touchZoom: true };\n    }\n}\n\nComponentService.register(MouseComponent);\nexport default MouseComponent;\n",
     "import {\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    merge as observableMerge,\n    concat as observableConcat,\n    empty as observableEmpty,\n    Observable,\n    Scheduler,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    takeUntil,\n    share,\n    skip,\n    withLatestFrom,\n    first,\n    map,\n    switchMap,\n    publishReplay,\n    auditTime,\n    distinctUntilChanged,\n    startWith,\n    retry,\n    catchError,\n    filter,\n    publish,\n    debounceTime,\n    take,\n    refCount,\n} from \"rxjs/operators\";\n\nimport * as vd from \"virtual-dom\";\n\nimport {\n    Component,\n    ComponentService,\n    ISequenceConfiguration,\n    SequenceDOMRenderer,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {\n    IEdgeStatus,\n    GraphMode,\n    Node,\n    Sequence,\n} from \"../../Graph\";\nimport {\n    ISize,\n    IVNodeHash,\n} from \"../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * @class SequenceComponent\n * @classdesc Component showing navigation arrows for sequence directions\n * as well as playing button. Exposes an API to start and stop play.\n */\nexport class SequenceComponent extends Component<ISequenceConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"sequence\";\n\n    /**\n     * Event fired when playing starts or stops.\n     *\n     * @event SequenceComponent#playingchanged\n     * @type {boolean} Indicates whether the player is playing.\n     */\n    public static playingchanged: string = \"playingchanged\";\n\n    /**\n     * Event fired when the hovered key changes.\n     *\n     * @description Emits the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a\n     * direction arrow null is emitted.\n     *\n     * @event SequenceComponent#hoveredkeychanged\n     * @type {string} The hovered key, null if no key is hovered.\n     */\n    public static hoveredkeychanged: string = \"hoveredkeychanged\";\n\n    private _sequenceDOMRenderer: SequenceDOMRenderer;\n    private _scheduler: Scheduler;\n\n    private _hoveredKeySubject$: Subject<string>;\n    private _hoveredKey$: Observable<string>;\n    private _containerWidth$: Subject<number>;\n\n    private _emitHoveredKeySubscription: Subscription;\n    private _renderSubscription: Subscription;\n    private _playingSubscription: Subscription;\n    private _containerWidthSubscription: Subscription;\n    private _hoveredKeySubscription: Subscription;\n    private _setSpeedSubscription: Subscription;\n    private _setDirectionSubscription: Subscription;\n    private _setSequenceGraphModeSubscription: Subscription;\n    private _setSpatialGraphModeSubscription: Subscription;\n    private _sequenceSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _cacheSequenceNodesSubscription: Subscription;\n    private _stopSubscription: Subscription;\n\n    constructor(\n        name: string,\n        container: Container,\n        navigator: Navigator,\n        renderer?: SequenceDOMRenderer,\n        scheduler?: Scheduler) {\n\n        super(name, container, navigator);\n\n        this._sequenceDOMRenderer = !!renderer ? renderer : new SequenceDOMRenderer(container);\n        this._scheduler = scheduler;\n\n        this._containerWidth$ = new Subject<number>();\n        this._hoveredKeySubject$ = new Subject<string>();\n\n        this._hoveredKey$ = this._hoveredKeySubject$.pipe(share());\n\n        this._navigator.playService.playing$.pipe(\n            skip(1),\n            withLatestFrom(this._configuration$))\n            .subscribe(\n                ([playing, configuration]: [boolean, ISequenceConfiguration]): void => {\n                    this.fire(SequenceComponent.playingchanged, playing);\n\n                    if (playing === configuration.playing) {\n                        return;\n                    }\n\n                    if (playing) {\n                        this.play();\n                    } else {\n                        this.stop();\n                    }\n                });\n\n        this._navigator.playService.direction$.pipe(\n            skip(1),\n            withLatestFrom(this._configuration$))\n            .subscribe(\n                ([direction, configuration]: [EdgeDirection, ISequenceConfiguration]): void => {\n                    if (direction !== configuration.direction) {\n                        this.setDirection(direction);\n                    }\n                });\n    }\n\n    /**\n     * Get hovered key observable.\n     *\n     * @description An observable emitting the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a direction arrow null\n     * is emitted.\n     *\n     * @returns {Observable<string>}\n     */\n    public get hoveredKey$(): Observable<string> {\n        return this._hoveredKey$;\n    }\n\n    /**\n     * Start playing.\n     *\n     * @fires PlayerComponent#playingchanged\n     */\n    public play(): void {\n        this.configure({ playing: true });\n    }\n\n    /**\n     * Stop playing.\n     *\n     * @fires PlayerComponent#playingchanged\n     */\n    public stop(): void {\n        this.configure({ playing: false });\n    }\n\n    /**\n     * Set the direction to follow when playing.\n     *\n     * @param {EdgeDirection} direction - The direction that will be followed when playing.\n     */\n    public setDirection(direction: EdgeDirection): void {\n        this.configure({ direction: direction });\n    }\n\n    /**\n     * Set highlight key.\n     *\n     * @description The arrow pointing towards the node corresponding to the\n     * highlight key will be highlighted.\n     *\n     * @param {string} highlightKey Key of node to be highlighted if existing.\n     */\n    public setHighlightKey(highlightKey: string): void {\n        this.configure({ highlightKey: highlightKey });\n    }\n\n    /**\n     * Set max width of container element.\n     *\n     * @description Set max width of the container element holding\n     * the sequence navigation elements. If the min width is larger than the\n     * max width the min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMaxWidth(maxWidth: number): void {\n        this.configure({ maxWidth: maxWidth });\n    }\n\n    /**\n     * Set min width of container element.\n     *\n     * @description Set min width of the container element holding\n     * the sequence navigation elements. If the min width is larger than the\n     * max width the min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMinWidth(minWidth: number): void {\n        this.configure({ minWidth: minWidth });\n    }\n\n    /**\n     * Set the value indicating whether the sequence UI elements should be visible.\n     *\n     * @param {boolean} visible\n     */\n    public setVisible(visible: boolean): void {\n        this.configure({ visible: visible });\n    }\n\n    protected _activate(): void {\n        this._sequenceDOMRenderer.activate();\n\n        const edgeStatus$: Observable<IEdgeStatus> = this._navigator.stateService.currentNode$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.sequenceEdges$;\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequence$: Observable<Sequence> = this._navigator.stateService.currentNode$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.sequenceKey;\n                }),\n            switchMap(\n                (node: Node): Observable<Sequence> => {\n                    return observableConcat(\n                            observableOf(null),\n                            this._navigator.graphService.cacheSequence$(node.sequenceKey).pipe(\n                                retry(3),\n                                catchError(\n                                    (e: Error): Observable<Sequence> => {\n                                        console.error(\"Failed to cache sequence\", e);\n\n                                        return observableOf(null);\n                                    })));\n                }),\n            startWith(null),\n            publishReplay(1),\n            refCount());\n\n        this._sequenceSubscription = sequence$.subscribe();\n\n        const rendererKey$: Observable<string> = this._sequenceDOMRenderer.index$.pipe(\n            withLatestFrom(sequence$),\n            map(\n                ([index, sequence]: [number, Sequence]): string => {\n                    return sequence != null ? sequence.keys[index] : null;\n                }),\n            filter(\n                (key: string): boolean => {\n                    return !!key;\n                }),\n            distinctUntilChanged(),\n            publish(),\n            refCount());\n\n        this._moveSubscription = observableMerge(\n                rendererKey$.pipe(debounceTime(100, this._scheduler)),\n                rendererKey$.pipe(auditTime(400, this._scheduler))).pipe(\n            distinctUntilChanged(),\n            switchMap(\n                (key: string): Observable<Node> => {\n                    return this._navigator.moveToKey$(key).pipe(\n                        catchError(\n                            (e: Error): Observable<Node> => {\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe();\n\n        this._setSequenceGraphModeSubscription = this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n            filter(\n                (changing: boolean): boolean => {\n                    return changing;\n                }))\n            .subscribe(\n                (): void => {\n                    this._navigator.graphService.setGraphMode(GraphMode.Sequence);\n                });\n\n        this._setSpatialGraphModeSubscription = this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n            filter(\n                (changing: boolean): boolean => {\n                    return !changing;\n                }))\n            .subscribe(\n                (): void => {\n                    this._navigator.graphService.setGraphMode(GraphMode.Spatial);\n                });\n\n        this._navigator.graphService.graphMode$.pipe(\n            switchMap(\n                (mode: GraphMode): Observable<Node> => {\n                    return mode === GraphMode.Spatial ?\n                        this._navigator.stateService.currentNode$.pipe(\n                            take(2)) :\n                        observableEmpty();\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return !node.spatialEdges.cached;\n                }),\n            switchMap(\n                (node: Node): Observable<Node> => {\n                    return this._navigator.graphService.cacheNode$(node.key).pipe(\n                        catchError(\n                            (e: Error): Observable<Node> => {\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe();\n\n        this._stopSubscription = this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n            filter(\n                (changing: boolean): boolean => {\n                    return changing;\n                }))\n            .subscribe(\n                (): void => {\n                    this._navigator.playService.stop();\n                });\n\n        this._cacheSequenceNodesSubscription = observableCombineLatest(\n                this._navigator.graphService.graphMode$,\n                this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n                    startWith(false),\n                    distinctUntilChanged())).pipe(\n            withLatestFrom(this._navigator.stateService.currentNode$),\n            switchMap(\n                ([[mode, changing], node]: [[GraphMode, boolean], Node]): Observable<Sequence> => {\n                    return changing && mode === GraphMode.Sequence ?\n                        this._navigator.graphService.cacheSequenceNodes$(node.sequenceKey, node.key).pipe(\n                            retry(3),\n                            catchError(\n                                (error: Error): Observable<Sequence> => {\n                                    console.error(\"Failed to cache sequence nodes.\", error);\n\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe();\n\n        const position$: Observable<{ index: number, max: number }> = sequence$.pipe(\n            switchMap(\n                (sequence: Sequence): Observable<{ index: number, max: number }> => {\n                    if (!sequence) {\n                        return observableOf({ index: null, max: null });\n                    }\n\n                    let firstCurrentKey: boolean = true;\n\n                    return this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n                        startWith(false),\n                        distinctUntilChanged(),\n                        switchMap(\n                            (changingPosition: boolean): Observable<string> => {\n                                const skipCount: number = !changingPosition && firstCurrentKey ? 0 : 1;\n                                firstCurrentKey = false;\n\n                                return changingPosition ?\n                                    rendererKey$ :\n                                    this._navigator.stateService.currentNode$.pipe(\n                                        map(\n                                            (node: Node): string => {\n                                                return node.key;\n                                            }),\n                                        distinctUntilChanged(),\n                                        skip(skipCount));\n                            }),\n                        map(\n                            (key: string): { index: number, max: number } => {\n                                const index: number = sequence.keys.indexOf(key);\n\n                                if (index === -1) {\n                                    return { index: null, max: null };\n                                }\n\n                                return { index: index, max: sequence.keys.length - 1 };\n                            }));\n                }));\n\n        this._renderSubscription = observableCombineLatest(\n                edgeStatus$,\n                this._configuration$,\n                this._containerWidth$,\n                this._sequenceDOMRenderer.changed$.pipe(startWith(this._sequenceDOMRenderer)),\n                this._navigator.playService.speed$,\n                position$).pipe(\n            map(\n                (\n                    [edgeStatus, configuration, containerWidth, renderer, speed, position]:\n                    [\n                        IEdgeStatus,\n                        ISequenceConfiguration,\n                        number,\n                        SequenceDOMRenderer,\n                        number,\n                        { index: number, max: number }\n                    ]): IVNodeHash => {\n\n                    const vNode: vd.VNode = this._sequenceDOMRenderer\n                        .render(\n                            edgeStatus,\n                            configuration,\n                            containerWidth,\n                            speed,\n                            position.index,\n                            position.max,\n                            this,\n                            this._navigator);\n\n                    return {name: this._name, vnode: vNode };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._setSpeedSubscription = this._sequenceDOMRenderer.speed$\n            .subscribe(\n                (speed: number): void => {\n                    this._navigator.playService.setSpeed(speed);\n                });\n\n        this._setDirectionSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISequenceConfiguration): EdgeDirection => {\n                    return configuration.direction;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (direction: EdgeDirection): void => {\n                    this._navigator.playService.setDirection(direction);\n                });\n\n        this._containerWidthSubscription = observableCombineLatest(\n            this._container.renderService.size$,\n            this._configuration$.pipe(\n                distinctUntilChanged(\n                    (value1: [number, number], value2: [number, number]): boolean => {\n                        return value1[0] === value2[0] && value1[1] === value2[1];\n                    },\n                    (configuration: ISequenceConfiguration) => {\n                        return [configuration.minWidth, configuration.maxWidth];\n                    }))).pipe(\n            map(\n                ([size, configuration]: [ISize, ISequenceConfiguration]): number => {\n                    return this._sequenceDOMRenderer.getContainerWidth(\n                        size,\n                        configuration);\n                }))\n            .subscribe(this._containerWidth$);\n\n        this._playingSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISequenceConfiguration): boolean => {\n                    return configuration.playing;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (playing: boolean) => {\n                    if (playing) {\n                        this._navigator.playService.play();\n                    } else {\n                        this._navigator.playService.stop();\n                    }\n                });\n\n        this._hoveredKeySubscription = this._sequenceDOMRenderer.mouseEnterDirection$.pipe(\n            switchMap(\n                (direction: EdgeDirection): Observable<string> => {\n                    const edgeTo$: Observable<string> = edgeStatus$.pipe(\n                        map(\n                            (edgeStatus: IEdgeStatus): string => {\n                                for (let edge of edgeStatus.edges) {\n                                    if (edge.data.direction === direction) {\n                                        return edge.to;\n                                    }\n                                }\n\n                                return null;\n                            }),\n                        takeUntil(this._sequenceDOMRenderer.mouseLeaveDirection$));\n\n                    return observableConcat(edgeTo$, observableOf<string>(null));\n                }),\n            distinctUntilChanged())\n            .subscribe(this._hoveredKeySubject$);\n\n        this._emitHoveredKeySubscription = this._hoveredKey$\n            .subscribe(\n                (key: string): void => {\n                    this.fire(SequenceComponent.hoveredkeychanged, key);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._emitHoveredKeySubscription.unsubscribe();\n        this._renderSubscription.unsubscribe();\n        this._playingSubscription.unsubscribe();\n        this._containerWidthSubscription.unsubscribe();\n        this._hoveredKeySubscription.unsubscribe();\n        this._setSpeedSubscription.unsubscribe();\n        this._setDirectionSubscription.unsubscribe();\n        this._setSequenceGraphModeSubscription.unsubscribe();\n        this._setSpatialGraphModeSubscription.unsubscribe();\n        this._sequenceSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._cacheSequenceNodesSubscription.unsubscribe();\n        this._stopSubscription.unsubscribe();\n\n        this._sequenceDOMRenderer.deactivate();\n    }\n\n    protected _getDefaultConfiguration(): ISequenceConfiguration {\n        return {\n            direction: EdgeDirection.Next,\n            maxWidth: 108,\n            minWidth: 70,\n            playing: false,\n            visible: true,\n        };\n    }\n}\n\nComponentService.register(SequenceComponent);\nexport default SequenceComponent;\n",
     "import {merge as observableMerge, Observable, Subject, Subscription} from \"rxjs\";\n\nimport {filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    SequenceMode,\n    ISequenceConfiguration,\n    SequenceComponent,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\nimport {ISize} from \"../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport class SequenceDOMRenderer {\n    private _container: Container;\n\n    private _minThresholdWidth: number;\n    private _maxThresholdWidth: number;\n    private _minThresholdHeight: number;\n    private _maxThresholdHeight: number;\n    private _stepperDefaultWidth: number;\n    private _controlsDefaultWidth: number;\n    private _defaultHeight: number;\n    private _expandControls: boolean;\n    private _mode: SequenceMode;\n    private _speed: number;\n    private _changingSpeed: boolean;\n    private _index: number;\n    private _changingPosition: boolean;\n\n    private _mouseEnterDirection$: Subject<EdgeDirection>;\n    private _mouseLeaveDirection$: Subject<EdgeDirection>;\n    private _notifyChanged$: Subject<SequenceDOMRenderer>;\n    private _notifyChangingPositionChanged$: Subject<boolean>;\n    private _notifySpeedChanged$: Subject<number>;\n    private _notifyIndexChanged$: Subject<number>;\n\n    private _changingSubscription: Subscription;\n\n    constructor(container: Container) {\n        this._container = container;\n\n        this._minThresholdWidth = 320;\n        this._maxThresholdWidth = 1480;\n        this._minThresholdHeight = 240;\n        this._maxThresholdHeight = 820;\n        this._stepperDefaultWidth = 108;\n        this._controlsDefaultWidth = 88;\n\n        this._defaultHeight = 30;\n        this._expandControls = false;\n        this._mode = SequenceMode.Default;\n        this._speed = 0.5;\n        this._changingSpeed = false;\n        this._index = null;\n        this._changingPosition = false;\n\n        this._mouseEnterDirection$ = new Subject<EdgeDirection>();\n        this._mouseLeaveDirection$ = new Subject<EdgeDirection>();\n        this._notifyChanged$ = new Subject<SequenceDOMRenderer>();\n        this._notifyChangingPositionChanged$ = new Subject<boolean>();\n        this._notifySpeedChanged$ = new Subject<number>();\n        this._notifyIndexChanged$ = new Subject<number>();\n    }\n\n    public get changed$(): Observable<SequenceDOMRenderer> {\n        return this._notifyChanged$;\n    }\n\n    public get changingPositionChanged$(): Observable<boolean> {\n        return this._notifyChangingPositionChanged$;\n    }\n\n    public get speed$(): Observable<number> {\n        return this._notifySpeedChanged$;\n    }\n\n    public get index$(): Observable<number> {\n        return this._notifyIndexChanged$;\n    }\n\n    public get mouseEnterDirection$(): Observable<EdgeDirection> {\n        return this._mouseEnterDirection$;\n    }\n\n    public get mouseLeaveDirection$(): Observable<EdgeDirection> {\n        return this._mouseLeaveDirection$;\n    }\n\n    public activate(): void {\n        if (!!this._changingSubscription) {\n            return;\n        }\n\n        this._changingSubscription = observableMerge(\n                this._container.mouseService.documentMouseUp$,\n                this._container.touchService.touchEnd$.pipe(\n                    filter(\n                        (touchEvent: TouchEvent): boolean => {\n                            return touchEvent.touches.length === 0;\n                        })))\n            .subscribe(\n                (event: Event): void => {\n                    if (this._changingSpeed) {\n                        this._changingSpeed = false;\n                    }\n\n                    if (this._changingPosition) {\n                        this._setChangingPosition(false);\n                    }\n                });\n    }\n\n    public deactivate(): void {\n        if (!this._changingSubscription) {\n            return;\n        }\n\n        this._changingSpeed = false;\n        this._changingPosition = false;\n        this._expandControls = false;\n        this._mode = SequenceMode.Default;\n\n        this._changingSubscription.unsubscribe();\n        this._changingSubscription = null;\n    }\n\n    public render(\n        edgeStatus: IEdgeStatus,\n        configuration: ISequenceConfiguration,\n        containerWidth: number,\n        speed: number,\n        index: number,\n        max: number,\n        component: SequenceComponent,\n        navigator: Navigator): vd.VNode {\n\n        if (configuration.visible === false) {\n            return vd.h(\"div.SequenceContainer\", {}, []);\n        }\n\n        const stepper: vd.VNode =\n            this._createStepper(edgeStatus, configuration, containerWidth, component, navigator);\n        const controls: vd.VNode = this._createSequenceControls(containerWidth);\n        const playback: vd.VNode = this._createPlaybackControls(containerWidth, speed, component, configuration);\n        const timeline: vd.VNode = this._createTimelineControls(containerWidth, index, max);\n\n        return vd.h(\"div.SequenceContainer\", [stepper, controls, playback, timeline]);\n    }\n\n    public getContainerWidth(size: ISize, configuration: ISequenceConfiguration): number {\n        let minWidth: number = configuration.minWidth;\n        let maxWidth: number = configuration.maxWidth;\n        if (maxWidth < minWidth) {\n            maxWidth = minWidth;\n        }\n\n        let relativeWidth: number =\n            (size.width - this._minThresholdWidth) / (this._maxThresholdWidth - this._minThresholdWidth);\n        let relativeHeight: number =\n            (size.height - this._minThresholdHeight) / (this._maxThresholdHeight - this._minThresholdHeight);\n\n        let coeff: number = Math.max(0, Math.min(1, Math.min(relativeWidth, relativeHeight)));\n\n        return minWidth + coeff * (maxWidth - minWidth);\n    }\n\n    private _createPositionInput(index: number, max: number): vd.VNode {\n        this._index = index;\n\n        const onPosition: (e: Event) => void = (e: Event): void => {\n            this._index = Number((<HTMLInputElement>e.target).value);\n            this._notifyIndexChanged$.next(this._index);\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(276, Math.min(410, 5 + 0.8 * boundingRect.width)) - 65;\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            e.stopPropagation();\n            this._setChangingPosition(true);\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._changingPosition === true) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const positionInputProperties: vd.createProperties = {\n            max: max != null ? max : 1,\n            min: 0,\n            onchange: onPosition,\n            oninput: onPosition,\n            onkeydown: onKeyDown,\n            onmousedown: onStart,\n            onmousemove: onMove,\n            ontouchmove: onMove,\n            ontouchstart: onStart,\n            style: {\n                width: `${width}px`,\n            },\n            type: \"range\",\n            value: index != null ? index : 0,\n        };\n\n        const disabled: boolean = index == null || max == null || max <= 1;\n\n        if (disabled) {\n            positionInputProperties.disabled = \"true\";\n        }\n\n        const positionInput: vd.VNode = vd.h(\"input.SequencePosition\", positionInputProperties, []);\n\n        const positionContainerClass: string = disabled ? \".SequencePositionContainerDisabled\" : \".SequencePositionContainer\";\n\n        return vd.h(\"div\" + positionContainerClass, [positionInput]);\n    }\n\n    private _createSpeedInput(speed: number): vd.VNode {\n        this._speed = speed;\n\n        const onSpeed: (e: Event) => void = (e: Event): void => {\n            this._speed = Number((<HTMLInputElement>e.target).value) / 1000;\n            this._notifySpeedChanged$.next(this._speed);\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(276, Math.min(410, 5 + 0.8 * boundingRect.width)) - 160;\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            this._changingSpeed = true;\n            e.stopPropagation();\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._changingSpeed === true) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const speedInput: vd.VNode = vd.h(\n            \"input.SequenceSpeed\",\n            {\n                max: 1000,\n                min: 0,\n                onchange: onSpeed,\n                oninput: onSpeed,\n                onkeydown: onKeyDown,\n                onmousedown: onStart,\n                onmousemove: onMove,\n                ontouchmove: onMove,\n                ontouchstart: onStart,\n                style: {\n                    width: `${width}px`,\n                },\n                type: \"range\",\n                value: 1000 * speed,\n            },\n            []);\n\n        return vd.h(\"div.SequenceSpeedContainer\", [speedInput]);\n    }\n\n    private _createPlaybackControls(\n        containerWidth: number,\n        speed: number,\n        component: SequenceComponent,\n        configuration: ISequenceConfiguration): vd.VNode {\n\n        if (this._mode !== SequenceMode.Playback) {\n            return vd.h(\"div.SequencePlayback\", []);\n        }\n\n        const switchIcon: vd.VNode = vd.h(\"div.SequenceSwitchIcon.SequenceIconVisible\", []);\n        const direction: EdgeDirection = configuration.direction === EdgeDirection.Next ?\n            EdgeDirection.Prev : EdgeDirection.Next;\n\n        const playing: boolean = configuration.playing;\n        const switchButtonProperties: vd.createProperties = {\n            onclick: (): void => {\n                if (!playing) {\n                    component.setDirection(direction);\n                }\n            },\n        };\n        const switchButtonClassName: string = configuration.playing ? \".SequenceSwitchButtonDisabled\" : \".SequenceSwitchButton\";\n        const switchButton: vd.VNode = vd.h(\"div\" + switchButtonClassName, switchButtonProperties, [switchIcon]);\n        const slowIcon: vd.VNode = vd.h(\"div.SequenceSlowIcon.SequenceIconVisible\", []);\n        const slowContainer: vd.VNode = vd.h(\"div.SequenceSlowContainer\", [slowIcon]);\n        const fastIcon: vd.VNode = vd.h(\"div.SequenceFastIcon.SequenceIconVisible\", []);\n        const fastContainer: vd.VNode = vd.h(\"div.SequenceFastContainer\", [fastIcon]);\n        const closeIcon: vd.VNode = vd.h(\"div.SequenceCloseIcon.SequenceIconVisible\", []);\n        const closeButtonProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = SequenceMode.Default;\n                this._notifyChanged$.next(this);\n            },\n        };\n        const closeButton: vd.VNode = vd.h(\"div.SequenceCloseButton\", closeButtonProperties, [closeIcon]);\n        const speedInput: vd.VNode = this._createSpeedInput(speed);\n\n        const playbackChildren: vd.VNode[] = [switchButton, slowContainer, speedInput, fastContainer, closeButton];\n\n        const top: number = Math.round(containerWidth / this._stepperDefaultWidth * this._defaultHeight + 10);\n        const playbackProperties: vd.createProperties = { style: { top: `${top}px` } };\n\n        return vd.h(\"div.SequencePlayback\", playbackProperties, playbackChildren);\n    }\n\n    private _createPlayingButton(\n        nextKey: string,\n        prevKey: string,\n        configuration: ISequenceConfiguration,\n        component: SequenceComponent): vd.VNode {\n\n        let canPlay: boolean = configuration.direction === EdgeDirection.Next && nextKey != null ||\n            configuration.direction === EdgeDirection.Prev && prevKey != null;\n\n        let onclick: (e: Event) => void = configuration.playing ?\n            (e: Event): void => { component.stop(); } :\n            canPlay ? (e: Event): void => { component.play(); } : null;\n\n        let buttonProperties: vd.createProperties = { onclick: onclick };\n\n        let iconClass: string = configuration.playing ?\n            \"Stop\" :\n            canPlay ? \"Play\" : \"PlayDisabled\";\n\n        let iconProperties: vd.createProperties = { className: iconClass };\n        if (configuration.direction === EdgeDirection.Prev) {\n            iconProperties.style = {\n                transform: \"rotate(180deg) translate(50%, 50%)\",\n            };\n        }\n\n        let icon: vd.VNode = vd.h(\"div.SequenceComponentIcon\", iconProperties, []);\n\n        let buttonClass: string = canPlay ? \"SequencePlay\" : \"SequencePlayDisabled\";\n\n        return vd.h(\"div.\" + buttonClass, buttonProperties, [icon]);\n    }\n\n    private _createSequenceControls(containerWidth: number): vd.VNode {\n        const borderRadius: number = Math.round(8 / this._stepperDefaultWidth * containerWidth);\n        const expanderProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._expandControls = !this._expandControls;\n                this._mode = SequenceMode.Default;\n                this._notifyChanged$.next(this);\n            },\n            style: {\n                \"border-bottom-right-radius\": `${borderRadius}px`,\n                \"border-top-right-radius\": `${borderRadius}px`,\n            },\n        };\n        const expanderBar: vd.VNode = vd.h(\"div.SequenceExpanderBar\", []);\n        const expander: vd.VNode = vd.h(\"div.SequenceExpanderButton\", expanderProperties, [expanderBar]);\n\n        const fastIconClassName: string = this._mode === SequenceMode.Playback ?\n            \".SequenceFastIconGrey.SequenceIconVisible\" : \".SequenceFastIcon\";\n        const fastIcon: vd.VNode = vd.h(\"div\" + fastIconClassName, []);\n        const playbackProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = this._mode === SequenceMode.Playback ?\n                    SequenceMode.Default :\n                    SequenceMode.Playback;\n                this._notifyChanged$.next(this);\n            },\n        };\n\n        const playback: vd.VNode = vd.h(\"div.SequencePlaybackButton\", playbackProperties, [fastIcon]);\n\n        const timelineIconClassName: string = this._mode === SequenceMode.Timeline ?\n            \".SequenceTimelineIconGrey.SequenceIconVisible\" : \".SequenceTimelineIcon\";\n        const timelineIcon: vd.VNode = vd.h(\"div\" + timelineIconClassName, []);\n        const timelineProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = this._mode === SequenceMode.Timeline ?\n                    SequenceMode.Default :\n                    SequenceMode.Timeline;\n                this._notifyChanged$.next(this);\n            },\n        };\n\n        const timeline: vd.VNode = vd.h(\"div.SequenceTimelineButton\", timelineProperties, [timelineIcon]);\n\n        const properties: vd.createProperties = {\n            style: {\n                height: (this._defaultHeight / this._stepperDefaultWidth * containerWidth) + \"px\",\n                transform: `translate(${containerWidth / 2 + 2}px, 0)`,\n                width: (this._controlsDefaultWidth / this._stepperDefaultWidth * containerWidth) + \"px\",\n            },\n        };\n\n        const className: string = \".SequenceControls\" +\n            (this._expandControls ? \".SequenceControlsExpanded\" : \"\");\n\n        return vd.h(\"div\" + className, properties, [playback, timeline, expander]);\n    }\n\n    private _createSequenceArrows(\n        nextKey: string,\n        prevKey: string,\n        containerWidth: number,\n        configuration: ISequenceConfiguration,\n        navigator: Navigator): vd.VNode[] {\n\n        let nextProperties: vd.createProperties = {\n            onclick: nextKey != null ?\n                (e: Event): void => {\n                    navigator.moveDir$(EdgeDirection.Next)\n                        .subscribe(\n                            undefined,\n                            (error: Error): void => {\n                                if (!(error instanceof AbortMapillaryError)) {\n                                    console.error(error);\n                                }\n                            });\n                } :\n                null,\n            onmouseenter: (e: MouseEvent): void => { this._mouseEnterDirection$.next(EdgeDirection.Next); },\n            onmouseleave: (e: MouseEvent): void => { this._mouseLeaveDirection$.next(EdgeDirection.Next); },\n        };\n\n        const borderRadius: number = Math.round(8 / this._stepperDefaultWidth * containerWidth);\n        let prevProperties: vd.createProperties = {\n            onclick: prevKey != null ?\n                (e: Event): void => {\n                    navigator.moveDir$(EdgeDirection.Prev)\n                        .subscribe(\n                            undefined,\n                            (error: Error): void => {\n                                if (!(error instanceof AbortMapillaryError)) {\n                                    console.error(error);\n                                }\n                            });\n                } :\n                null,\n            onmouseenter: (e: MouseEvent): void => { this._mouseEnterDirection$.next(EdgeDirection.Prev); },\n            onmouseleave: (e: MouseEvent): void => { this._mouseLeaveDirection$.next(EdgeDirection.Prev); },\n            style: {\n                \"border-bottom-left-radius\": `${borderRadius}px`,\n                \"border-top-left-radius\": `${borderRadius}px`,\n            },\n        };\n\n        let nextClass: string = this._getStepClassName(EdgeDirection.Next, nextKey, configuration.highlightKey);\n        let prevClass: string = this._getStepClassName(EdgeDirection.Prev, prevKey, configuration.highlightKey);\n\n        let nextIcon: vd.VNode = vd.h(\"div.SequenceComponentIcon\", []);\n        let prevIcon: vd.VNode = vd.h(\"div.SequenceComponentIcon\", []);\n\n        return [\n            vd.h(\"div.\" + prevClass, prevProperties, [prevIcon]),\n            vd.h(\"div.\" + nextClass, nextProperties, [nextIcon]),\n        ];\n    }\n\n    private _createStepper(\n        edgeStatus: IEdgeStatus,\n        configuration: ISequenceConfiguration,\n        containerWidth: number,\n        component: SequenceComponent,\n        navigator: Navigator,\n        ): vd.VNode {\n\n        let nextKey: string = null;\n        let prevKey: string = null;\n\n        for (let edge of edgeStatus.edges) {\n            if (edge.data.direction === EdgeDirection.Next) {\n                nextKey = edge.to;\n            }\n\n            if (edge.data.direction === EdgeDirection.Prev) {\n                prevKey = edge.to;\n            }\n        }\n\n        const playingButton: vd.VNode = this._createPlayingButton(nextKey, prevKey, configuration, component);\n        const buttons: vd.VNode[] = this._createSequenceArrows(nextKey, prevKey, containerWidth, configuration, navigator);\n        buttons.splice(1, 0, playingButton);\n\n        const containerProperties: vd.createProperties = {\n            oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); },\n            style: {\n                height: (this._defaultHeight / this._stepperDefaultWidth * containerWidth) + \"px\",\n                width: containerWidth + \"px\",\n            },\n        };\n\n        return vd.h(\"div.SequenceStepper\", containerProperties, buttons);\n    }\n\n    private _createTimelineControls(containerWidth: number, index: number, max: number): vd.VNode {\n        if (this._mode !== SequenceMode.Timeline) {\n            return vd.h(\"div.SequenceTimeline\", []);\n        }\n\n        const positionInput: vd.VNode = this._createPositionInput(index, max);\n\n        const closeIcon: vd.VNode = vd.h(\"div.SequenceCloseIcon.SequenceIconVisible\", []);\n        const closeButtonProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = SequenceMode.Default;\n                this._notifyChanged$.next(this);\n            },\n        };\n\n        const closeButton: vd.VNode = vd.h(\"div.SequenceCloseButton\", closeButtonProperties, [closeIcon]);\n\n        const top: number = Math.round(containerWidth / this._stepperDefaultWidth * this._defaultHeight + 10);\n        const playbackProperties: vd.createProperties = { style: { top: `${top}px` } };\n\n        return vd.h(\"div.SequenceTimeline\", playbackProperties, [positionInput, closeButton]);\n    }\n\n    private _getStepClassName(direction: EdgeDirection, key: string, highlightKey: string): string {\n        let className: string = direction === EdgeDirection.Next ?\n            \"SequenceStepNext\" :\n            \"SequenceStepPrev\";\n\n        if (key == null) {\n            className += \"Disabled\";\n        } else {\n            if (highlightKey === key) {\n                className += \"Highlight\";\n            }\n        }\n\n        return className;\n    }\n\n    private _setChangingPosition(value: boolean): void {\n        this._changingPosition = value;\n        this._notifyChangingPositionChanged$.next(value);\n    }\n}\n\nexport default SequenceDOMRenderer;\n",
     "export enum SequenceMode {\n    Default,\n    Playback,\n    Timeline,\n}\n\nexport default SequenceMode;\n",
-    "import * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport {IShader} from \"../../Component\";\n\nexport class Shaders {\n    public static equirectangular: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static equirectangularCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspective: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistorted: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistortedCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.vertex.glsl\"), \"utf8\"),\n    };\n}\n",
-    "import {\n    concat as observableConcat,\n    of as observableOf,\n    zip as observableZip,\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    publishReplay,\n    pairwise,\n    catchError,\n    takeUntil,\n    publish,\n    skipWhile,\n    scan,\n    filter,\n    debounceTime,\n    startWith,\n    map,\n    switchMap,\n    withLatestFrom,\n    refCount,\n    first,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    ISliderNodes,\n    ISliderCombination,\n    IGLRendererOperation,\n    PositionLookat,\n} from \"./interfaces/interfaces\";\n\nimport {\n    Component,\n    ComponentService,\n    ISliderConfiguration,\n    ISliderKeys,\n    SliderDOMRenderer,\n    SliderGLRenderer,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IBoundingBox,\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\n\n/**\n * @class SliderComponent\n *\n * @classdesc Component for comparing pairs of images. Renders\n * a slider for adjusting the curtain of the first image.\n *\n * Deactivate the sequence, direction and image plane\n * components when activating the slider component to avoid\n * interfering UI elements.\n *\n * To retrive and use the marker component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * viewer.deactivateComponent(\"imagePlane\");\n * viewer.deactivateComponent(\"direction\");\n * viewer.deactivateComponent(\"sequence\");\n *\n * viewer.activateComponent(\"slider\");\n *\n * var sliderComponent = viewer.getComponent(\"marker\");\n * ```\n */\nexport class SliderComponent extends Component<ISliderConfiguration> {\n    public static componentName: string = \"slider\";\n\n    private _viewportCoords: ViewportCoords;\n    private _domRenderer: SliderDOMRenderer;\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n    private _spatial: Spatial;\n\n    private _glRendererOperation$: Subject<IGLRendererOperation>;\n    private _glRenderer$: Observable<SliderGLRenderer>;\n    private _glRendererCreator$: Subject<void>;\n    private _glRendererDisposer$: Subject<void>;\n\n    private _setKeysSubscription: Subscription;\n\n    private _modeSubcription: Subscription;\n    private _stateSubscription: Subscription;\n    private _glRenderSubscription: Subscription;\n    private _domRenderSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _updateCurtainSubscription: Subscription;\n    private _waitSubscription: Subscription;\n\n    private _textureProviderSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _abortTextureProviderSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _textureProviderSubscriptionPrev: Subscription;\n    private _setTextureProviderSubscriptionPrev: Subscription;\n    private _setTileSizeSubscriptionPrev: Subscription;\n    private _abortTextureProviderSubscriptionPrev: Subscription;\n    private _setRegionOfInterestSubscriptionPrev: Subscription;\n    private _hasTextureSubscriptionPrev: Subscription;\n    private _updateBackgroundSubscriptionPrev: Subscription;\n    private _updateTextureImageSubscriptionPrev: Subscription;\n\n    /** @ignore */\n    constructor (name: string, container: Container, navigator: Navigator, viewportCoords?: ViewportCoords) {\n        super(name, container, navigator);\n\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n        this._domRenderer = new SliderDOMRenderer(container);\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n        this._spatial = new Spatial();\n\n        this._glRendererOperation$ = new Subject<IGLRendererOperation>();\n        this._glRendererCreator$ = new Subject<void>();\n        this._glRendererDisposer$ = new Subject<void>();\n\n        this._glRenderer$ = this._glRendererOperation$.pipe(\n            scan(\n                (glRenderer: SliderGLRenderer, operation: IGLRendererOperation): SliderGLRenderer => {\n                    return operation(glRenderer);\n                },\n                null),\n            filter(\n                (glRenderer: SliderGLRenderer): boolean => {\n                    return glRenderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (glRenderer: SliderGLRenderer): number => {\n                    return glRenderer.frameId;\n                }));\n\n        this._glRendererCreator$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        if (glRenderer != null) {\n                            throw new Error(\"Multiple slider states can not be created at the same time\");\n                        }\n\n                        return new SliderGLRenderer();\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._glRendererDisposer$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    /**\n     * Set the initial position.\n     *\n     * @description Configures the intial position of the slider.\n     * The inital position value will be used when the component\n     * is activated.\n     *\n     * @param {number} initialPosition - Initial slider position.\n     */\n    public setInitialPosition(initialPosition: number): void {\n        this.configure({ initialPosition: initialPosition });\n    }\n\n    /**\n     * Set the image keys.\n     *\n     * @description Configures the component to show the image\n     * planes for the supplied image keys.\n     *\n     * @param {ISliderKeys} keys - Slider keys object specifying\n     * the images to be shown in the foreground and the background.\n     */\n    public setKeys(keys: ISliderKeys): void {\n        this.configure({ keys: keys });\n    }\n\n    /**\n     * Set the slider mode.\n     *\n     * @description Configures the mode for transitions between\n     * image pairs.\n     *\n     * @param {SliderMode} mode - Slider mode to be set.\n     */\n    public setSliderMode(mode: SliderMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Set the value controlling if the slider is visible.\n     *\n     * @param {boolean} sliderVisible - Value indicating if\n     * the slider should be visible or not.\n     */\n    public setSliderVisible(sliderVisible: boolean): void {\n        this.configure({ sliderVisible: sliderVisible });\n    }\n\n    protected _activate(): void {\n        this._modeSubcription = this._domRenderer.mode$\n            .subscribe(\n                (mode: SliderMode): void => {\n                    this.setSliderMode(mode);\n                });\n\n        this._glRenderSubscription = this._glRenderer$.pipe(\n            map(\n                (glRenderer: SliderGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: glRenderer.frameId,\n                            needsRender: glRenderer.needsRender,\n                            render: glRenderer.render.bind(glRenderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        const position$: Observable<number> = observableConcat(\n            this.configuration$.pipe(\n                map(\n                    (configuration: ISliderConfiguration): number => {\n                        return configuration.initialPosition != null ?\n                            configuration.initialPosition : 1;\n                    }),\n                first()),\n            this._domRenderer.position$);\n\n        const mode$: Observable<SliderMode> = this.configuration$.pipe(\n            map(\n                (configuration: ISliderConfiguration): SliderMode => {\n                    return configuration.mode;\n                }),\n            distinctUntilChanged());\n\n        const motionless$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.motionless;\n                }),\n            distinctUntilChanged());\n\n        const fullPano$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano;\n                }),\n            distinctUntilChanged());\n\n        const sliderVisible$: Observable<boolean> = observableCombineLatest(\n                this._configuration$.pipe(\n                    map(\n                        (configuration: ISliderConfiguration): boolean => {\n                            return configuration.sliderVisible;\n                        })),\n                this._navigator.stateService.currentState$.pipe(\n                    map(\n                        (frame: IFrame): boolean => {\n                            return !(frame.state.currentNode == null ||\n                                frame.state.previousNode == null ||\n                                (frame.state.currentNode.pano && !frame.state.currentNode.fullPano) ||\n                                (frame.state.previousNode.pano && !frame.state.previousNode.fullPano) ||\n                                (frame.state.currentNode.fullPano && !frame.state.previousNode.fullPano));\n                        }),\n                    distinctUntilChanged())).pipe(\n            map(\n                ([sliderVisible, enabledState]: [boolean, boolean]): boolean => {\n                    return sliderVisible && enabledState;\n                }),\n            distinctUntilChanged());\n\n        this._waitSubscription = observableCombineLatest(\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$).pipe(\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([[mode, motionless, fullPano, sliderVisible], state]: [[SliderMode, boolean, boolean, boolean], State]): void => {\n                    const interactive: boolean = sliderVisible &&\n                        (motionless || mode === SliderMode.Stationary || fullPano);\n\n                    if (interactive && state !== State.WaitingInteractively) {\n                        this._navigator.stateService.waitInteractively();\n                    } else if (!interactive && state !== State.Waiting) {\n                        this._navigator.stateService.wait();\n                    }\n                });\n\n        this._moveSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$)\n            .subscribe(\n                ([position, mode, motionless, fullPano, sliderVisible]: [number, SliderMode, boolean, boolean, boolean]): void => {\n                    if (motionless || mode === SliderMode.Stationary || fullPano) {\n                        this._navigator.stateService.moveTo(1);\n                    } else {\n                        this._navigator.stateService.moveTo(position);\n                    }\n                });\n\n        this._domRenderSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([position, mode, motionless, fullPano, sliderVisible, size]:\n                    [number, SliderMode, boolean, boolean, boolean, ISize]): IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._domRenderer.render(position, mode, motionless, fullPano, sliderVisible),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glRendererCreator$.next(null);\n\n        this._updateCurtainSubscription = observableCombineLatest(\n                position$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            map(\n                ([position, fullPano, visible, render, transform]: [number, boolean, boolean, RenderCamera, Transform]): number => {\n                    if (!fullPano) {\n                        return visible ? position : 1;\n                    }\n\n                    const basicMin: number[] = this._viewportCoords.viewportToBasic(-1.15, 0, transform, render.perspective);\n                    const basicMax: number[] = this._viewportCoords.viewportToBasic(1.15, 0, transform, render.perspective);\n\n                    const shiftedMax: number = basicMax[0] < basicMin[0] ? basicMax[0] + 1 : basicMax[0];\n                    const basicPosition: number = basicMin[0] + position * (shiftedMax - basicMin[0]);\n\n                    return basicPosition > 1 ? basicPosition - 1 : basicPosition;\n                }),\n            map(\n                (position: number): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.updateCurtain(position);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._stateSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                mode$).pipe(\n            map(\n                ([frame, mode]: [IFrame, SliderMode]): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.update(frame, mode);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setKeysSubscription = this._configuration$.pipe(\n            filter(\n                (configuration: ISliderConfiguration): boolean => {\n                    return configuration.keys != null;\n                }),\n            switchMap(\n                (configuration: ISliderConfiguration): Observable<ISliderCombination> => {\n                    return observableZip(\n                            observableZip(\n                                this._catchCacheNode$(configuration.keys.background),\n                                this._catchCacheNode$(configuration.keys.foreground)).pipe(\n                            map(\n                                (nodes: [Node, Node]): ISliderNodes => {\n                                    return { background: nodes[0], foreground: nodes[1] };\n                                })),\n                            this._navigator.stateService.currentState$.pipe(first())).pipe(\n                        map(\n                            (nf: [ISliderNodes, IFrame]): ISliderCombination => {\n                                return { nodes: nf[0], state: nf[1].state };\n                            }));\n                }))\n            .subscribe(\n                (co: ISliderCombination): void => {\n                    if (co.state.currentNode != null &&\n                        co.state.previousNode != null &&\n                        co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.previousNode.key === co.nodes.background.key) {\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.background.key) {\n                        this._navigator.stateService.setNodes([co.nodes.foreground]);\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.trajectory.length === 1) {\n                        this._navigator.stateService.prependNodes([co.nodes.background]);\n                        return;\n                    }\n\n                    this._navigator.stateService.setNodes([co.nodes.background]);\n                    this._navigator.stateService.setNodes([co.nodes.foreground]);\n                },\n                (e: Error): void => {\n                    console.error(e);\n                });\n\n        let previousNode$: Observable<Node> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }));\n\n        const textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const currentNode: Node = state.currentNode;\n                    const currentTransform: Transform = state.currentTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        const textureProviderPrev$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return !!frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.previousNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const previousNode: Node = state.previousNode;\n                    const previousTransform: Transform = state.previousTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        previousNode.key,\n                        previousTransform.basicWidth,\n                        previousTransform.basicHeight,\n                        tileSize,\n                        previousNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscriptionPrev = textureProviderPrev$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProviderPrev(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscriptionPrev = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProviderPrev$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTriggerPrev$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscriptionPrev = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTriggerPrev$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }),\n            withLatestFrom(this._navigator.stateService.currentState$))\n            .subscribe(\n                ([[roi, provider], frame]: [[IRegionOfInterest, TextureProvider], IFrame]): void => {\n                    let shiftedRoi: IRegionOfInterest = null;\n\n                    if (frame.state.previousNode.fullPano) {\n                        if (frame.state.currentNode.fullPano) {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shift: number = directionDiff / (2 * Math.PI);\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(roi.bbox.maxX + shift, 0, 1),\n                                maxY: roi.bbox.maxY,\n                                minX: this._spatial.wrap(roi.bbox.minX + shift, 0, 1),\n                                minY: roi.bbox.minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: roi.pixelHeight,\n                                pixelWidth: roi.pixelWidth,\n                            };\n                        } else {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shiftX: number = directionDiff / (2 * Math.PI);\n\n                            const a1: number = this._spatial.angleToPlane(currentViewingDirection.toArray(), [0, 0, 1]);\n                            const a2: number = this._spatial.angleToPlane(previousViewingDirection.toArray(), [0, 0, 1]);\n\n                            const shiftY: number = (a2 - a1) / (2 * Math.PI);\n\n                            const currentTransform: Transform = frame.state.currentTransform;\n                            const size: number = Math.max(currentTransform.basicWidth, currentTransform.basicHeight);\n                            const hFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicWidth / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n                            const vFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicHeight / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n\n                            const spanningWidth: number = hFov / (2 * Math.PI);\n                            const spanningHeight: number = vFov / Math.PI;\n\n                            const basicWidth: number = (roi.bbox.maxX - roi.bbox.minX) * spanningWidth;\n                            const basicHeight: number = (roi.bbox.maxY - roi.bbox.minY) * spanningHeight;\n\n                            const pixelWidth: number = roi.pixelWidth * spanningWidth;\n                            const pixelHeight: number = roi.pixelHeight * spanningHeight;\n\n                            const zoomShiftX: number = (roi.bbox.minX + roi.bbox.maxX) / 2 - 0.5;\n                            const zoomShiftY: number = (roi.bbox.minY + roi.bbox.maxY) / 2 - 0.5;\n\n                            const minX: number = 0.5 + shiftX + spanningWidth * zoomShiftX - basicWidth / 2;\n                            const maxX: number = 0.5 + shiftX + spanningWidth * zoomShiftX + basicWidth / 2;\n                            const minY: number = 0.5 + shiftY + spanningHeight * zoomShiftY - basicHeight / 2;\n                            const maxY: number = 0.5 + shiftY + spanningHeight * zoomShiftY + basicHeight / 2;\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(maxX, 0, 1),\n                                maxY: maxY,\n                                minX: this._spatial.wrap(minX, 0, 1),\n                                minY: minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: pixelHeight,\n                                pixelWidth: pixelWidth,\n                            };\n                        }\n                    } else {\n                        const currentBasicAspect: number = frame.state.currentTransform.basicAspect;\n                        const previousBasicAspect: number = frame.state.previousTransform.basicAspect;\n\n                        const [[cornerMinX, cornerMinY], [cornerMaxX, cornerMaxY]]: number[][] =\n                            this._getBasicCorners(currentBasicAspect, previousBasicAspect);\n\n                        const basicWidth: number = cornerMaxX - cornerMinX;\n                        const basicHeight: number = cornerMaxY - cornerMinY;\n\n                        const pixelWidth: number = roi.pixelWidth / basicWidth;\n                        const pixelHeight: number = roi.pixelHeight / basicHeight;\n\n                        const minX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.minX / basicWidth;\n                        const maxX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.maxX / basicWidth;\n                        const minY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.minY / basicHeight;\n                        const maxY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.maxY / basicHeight;\n\n                        const bbox: IBoundingBox = {\n                            maxX: maxX,\n                            maxY: maxY,\n                            minX: minX,\n                            minY: minY,\n                        };\n\n                        this._clipBoundingBox(bbox);\n\n                        shiftedRoi = {\n                            bbox: bbox,\n                            pixelHeight: pixelHeight,\n                            pixelWidth: pixelWidth,\n                        };\n                    }\n\n                    provider.setRegionOfInterest(shiftedRoi);\n                });\n\n        let hasTexturePrev$: Observable<boolean> = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscriptionPrev = hasTexturePrev$.subscribe(() => { /*noop*/ });\n\n        let nodeImagePrev$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0 && !!frame.state.previousNode;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexturePrev$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexturePrev$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscriptionPrev = nodeImagePrev$.pipe(\n            withLatestFrom(textureProviderPrev$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscriptionPrev = nodeImagePrev$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    protected _deactivate(): void {\n        this._waitSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state !== State.Traversing) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        this._glRendererDisposer$.next(null);\n        this._domRenderer.deactivate();\n\n        this._modeSubcription.unsubscribe();\n        this._setKeysSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._glRenderSubscription.unsubscribe();\n        this._domRenderSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._updateCurtainSubscription.unsubscribe();\n\n        this._textureProviderSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n\n        this._textureProviderSubscriptionPrev.unsubscribe();\n        this._setTextureProviderSubscriptionPrev.unsubscribe();\n        this._setTileSizeSubscriptionPrev.unsubscribe();\n        this._abortTextureProviderSubscriptionPrev.unsubscribe();\n        this._setRegionOfInterestSubscriptionPrev.unsubscribe();\n        this._hasTextureSubscriptionPrev.unsubscribe();\n        this._updateBackgroundSubscriptionPrev.unsubscribe();\n        this._updateTextureImageSubscriptionPrev.unsubscribe();\n\n        this.configure({ keys: null });\n    }\n\n    protected _getDefaultConfiguration(): ISliderConfiguration {\n        return {\n            initialPosition: 1,\n            mode: SliderMode.Motion,\n            sliderVisible: true,\n        };\n    }\n\n    private _catchCacheNode$(key: string): Observable<Node> {\n        return this._navigator.graphService.cacheNode$(key).pipe(\n            catchError(\n                (error: Error, caught: Observable<Node>): Observable<Node> => {\n                    console.error(`Failed to cache slider node (${key})`, error);\n\n                    return observableEmpty();\n                }));\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _clipBoundingBox(bbox: IBoundingBox): void {\n        bbox.minX = Math.max(0, Math.min(1, bbox.minX));\n        bbox.maxX = Math.max(0, Math.min(1, bbox.maxX));\n        bbox.minY = Math.max(0, Math.min(1, bbox.minY));\n        bbox.maxY = Math.max(0, Math.min(1, bbox.maxY));\n    }\n}\n\nComponentService.register(SliderComponent);\nexport default SliderComponent;\n",
-    "import {merge as observableMerge,  Observable ,  Subject ,  Subscription } from \"rxjs\";\n\nimport {filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport { SliderMode } from \"../../Component\";\nimport { Container } from \"../../Viewer\";\n\nexport class SliderDOMRenderer {\n    private _container: Container;\n\n    private _interacting: boolean;\n    private _notifyModeChanged$: Subject<SliderMode>;\n    private _notifyPositionChanged$: Subject<number>;\n    private _stopInteractionSubscription: Subscription;\n\n    constructor(container: Container) {\n        this._container = container;\n\n        this._interacting = false;\n        this._notifyModeChanged$ = new Subject<SliderMode>();\n        this._notifyPositionChanged$ = new Subject<number>();\n        this._stopInteractionSubscription = null;\n    }\n\n    public get mode$(): Observable<SliderMode> {\n        return this._notifyModeChanged$;\n    }\n\n    public get position$(): Observable<number> {\n        return this._notifyPositionChanged$;\n    }\n\n    public activate(): void {\n        if (!!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._stopInteractionSubscription = observableMerge(\n                this._container.mouseService.documentMouseUp$,\n                this._container.touchService.touchEnd$.pipe(\n                    filter(\n                        (touchEvent: TouchEvent): boolean => {\n                            return touchEvent.touches.length === 0;\n                        })))\n            .subscribe(\n                (event: Event): void => {\n                    if (this._interacting) {\n                        this._interacting = false;\n                    }\n                });\n    }\n\n    public deactivate(): void {\n        if (!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._interacting = false;\n\n        this._stopInteractionSubscription.unsubscribe();\n        this._stopInteractionSubscription = null;\n    }\n\n    public render(position: number, mode: SliderMode, motionless: boolean, pano: boolean, visible: boolean): vd.VNode {\n        const children: vd.VNode[] = [];\n\n        if (visible) {\n            children.push(vd.h(\"div.SliderBorder\", []));\n\n            const modeVisible: boolean = !(motionless || pano);\n            if (modeVisible) {\n                children.push(this._createModeButton(mode));\n            }\n\n            children.push(this._createPositionInput(position, modeVisible));\n        }\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 100));\n\n        return vd.h(\"div.SliderContainer\", { style: { width: `${width}px` } }, children);\n    }\n\n    private _createModeButton(mode: SliderMode): vd.VNode {\n        const properties: vd.createProperties = {\n            onclick: (): void => {\n                this._notifyModeChanged$.next(\n                    mode === SliderMode.Motion ?\n                        SliderMode.Stationary :\n                        SliderMode.Motion);\n            },\n        };\n\n        const className: string = mode === SliderMode.Stationary ?\n            \"SliderModeButtonPressed\" :\n            \"SliderModeButton\";\n\n        return vd.h(\"div.\" + className, properties, [vd.h(\"div.SliderModeIcon\", [])]);\n    }\n\n    private _createPositionInput(position: number, modeVisible: boolean): vd.VNode {\n        const onChange: (e: Event) => void = (e: Event): void => {\n            this._notifyPositionChanged$.next(Number((<HTMLInputElement>e.target).value) / 1000);\n        };\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            this._interacting = true;\n            e.stopPropagation();\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._interacting) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 105)) - 68 + (modeVisible ? 0 : 36);\n\n        const positionInput: vd.VNode = vd.h(\n            \"input.SliderPosition\",\n            {\n                max: 1000,\n                min: 0,\n                onchange: onChange,\n                oninput: onChange,\n                onkeydown: onKeyDown,\n                onmousedown: onStart,\n                onmousemove: onMove,\n                ontouchmove: onMove,\n                ontouchstart: onStart,\n                style: {\n                    width: `${width}px`,\n                },\n                type: \"range\",\n                value: 1000 * position,\n            },\n            []);\n\n        return vd.h(\"div.SliderPositionContainer\", [positionInput]);\n    }\n}\n\nexport default SliderDOMRenderer;\n",
-    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    IBBoxShaderMaterial,\n    IShaderMaterial,\n    MeshFactory,\n    MeshScene,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport { TextureProvider } from \"../../Tiles\";\n\nexport class SliderGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n    private _spatial: Spatial;\n\n    private _currentKey: string;\n    private _previousKey: string;\n\n    private _disabled: boolean;\n    private _curtain: number;\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    private _mode: SliderMode;\n\n    private _currentProviderDisposers: { [key: string]: () => void };\n    private _previousProviderDisposers: { [key: string]: () => void };\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n        this._spatial = new Spatial();\n\n        this._currentKey = null;\n        this._previousKey = null;\n\n        this._disabled = false;\n        this._curtain = 1;\n        this._frameId = 0;\n        this._needsRender = false;\n\n        this._mode = null;\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._currentKey,\n            provider,\n            this._currentProviderDisposers,\n            this._updateTexture.bind(this));\n    }\n\n    public setTextureProviderPrev(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._previousKey,\n            provider,\n            this._previousProviderDisposers,\n            this._updateTexturePrev.bind(this));\n    }\n\n    public update(frame: IFrame, mode: SliderMode): void {\n        this._updateFrameId(frame.id);\n        this._updateImagePlanes(frame.state, mode);\n    }\n\n    public updateCurtain(curtain: number): void {\n        if (this._curtain === curtain) {\n            return;\n        }\n\n        this._curtain = curtain;\n        this._updateCurtain();\n\n        this._needsRender = true;\n    }\n\n    public updateTexture(image: HTMLImageElement, node: Node): void {\n        let imagePlanes: THREE.Mesh[] = node.key === this._currentKey ?\n            this._scene.imagePlanes :\n            node.key === this._previousKey ?\n                this._scene.imagePlanesOld :\n                [];\n\n        if (imagePlanes.length === 0) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (let plane of imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node?: Node): void {\n        if (this._currentKey !== node.key) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        if (!this.disabled) {\n            renderer.render(this._scene.sceneOld, perspectiveCamera);\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n\n        for (const key in this._currentProviderDisposers) {\n            if (!this._currentProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._currentProviderDisposers[key]();\n        }\n\n        for (const key in this._previousProviderDisposers) {\n            if (!this._previousProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._previousProviderDisposers[key]();\n        }\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _setDisabled(state: ICurrentState): void {\n        this._disabled = state.currentNode == null ||\n            state.previousNode == null ||\n            (state.currentNode.pano && !state.currentNode.fullPano) ||\n            (state.previousNode.pano && !state.previousNode.fullPano) ||\n            (state.currentNode.fullPano && !state.previousNode.fullPano);\n    }\n\n    private _setTextureProvider(\n        key: string,\n        originalKey: string,\n        provider: TextureProvider,\n        providerDisposers: { [key: string]: () => void },\n        updateTexture: (texture: THREE.Texture) => void): void {\n\n        if (key !== originalKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(updateTexture);\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in providerDisposers) {\n            let disposeProvider: () => void = providerDisposers[key];\n            disposeProvider();\n\n            delete providerDisposers[key];\n        }\n\n        providerDisposers[key] = dispose;\n    }\n\n    private _updateCurtain(): void {\n        for (let plane of this._scene.imagePlanes) {\n            let shaderMaterial: IBBoxShaderMaterial = <IBBoxShaderMaterial>plane.material;\n\n            if (!!shaderMaterial.uniforms.curtain) {\n                shaderMaterial.uniforms.curtain.value = this._curtain;\n            }\n        }\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateImagePlanes(state: ICurrentState, mode: SliderMode): void {\n        const currentChanged: boolean = state.currentNode != null && this._currentKey !== state.currentNode.key;\n        const previousChanged: boolean = state.previousNode != null && this._previousKey !== state.previousNode.key;\n        const modeChanged: boolean = this._mode !== mode;\n\n        if (!(currentChanged || previousChanged || modeChanged)) {\n            return;\n        }\n\n        this._setDisabled(state);\n        this._needsRender = true;\n        this._mode = mode;\n\n        const motionless: boolean = state.motionless || mode === SliderMode.Stationary || state.currentNode.pano;\n\n        if (this.disabled || previousChanged) {\n            if (this._previousKey in this._previousProviderDisposers) {\n                this._previousProviderDisposers[this._previousKey]();\n\n                delete this._previousProviderDisposers[this._previousKey];\n            }\n        }\n\n        if (this.disabled) {\n            this._scene.setImagePlanesOld([]);\n        } else {\n            if (previousChanged || modeChanged) {\n                const previousNode: Node = state.previousNode;\n\n                this._previousKey = previousNode.key;\n\n                const elements: Float32Array = state.currentTransform.rt.elements;\n                let translation: number[] = [elements[12], elements[13], elements[14]];\n\n                const currentAspect: number = state.currentTransform.basicAspect;\n                const previousAspect: number = state.previousTransform.basicAspect;\n\n                const textureScale: number[] = currentAspect > previousAspect ?\n                    [1, previousAspect / currentAspect] :\n                    [currentAspect / previousAspect, 1];\n\n                let rotation: number[] = state.currentNode.rotation;\n                let width: number = state.currentNode.width;\n                let height: number = state.currentNode.height;\n\n                if (previousNode.fullPano) {\n                    rotation = state.previousNode.rotation;\n                    translation = this._spatial\n                        .rotate(\n                            this._spatial\n                                .opticalCenter(state.currentNode.rotation, translation)\n                                .toArray(),\n                            rotation)\n                        .multiplyScalar(-1)\n                        .toArray();\n\n                    width = state.previousNode.width;\n                    height = state.previousNode.height;\n                }\n\n                const transform: Transform = new Transform(\n                    state.currentNode.orientation,\n                    width,\n                    height,\n                    state.currentNode.focal,\n                    state.currentNode.scale,\n                    previousNode.gpano,\n                    rotation,\n                    translation,\n                    previousNode.image,\n                    textureScale);\n\n                let mesh: THREE.Mesh = undefined;\n\n                if (previousNode.fullPano) {\n                    mesh = this._factory.createMesh(\n                        previousNode,\n                        motionless || state.currentNode.fullPano ? transform : state.previousTransform);\n                } else {\n                    if (motionless) {\n                        const [[basicX0, basicY0], [basicX1, basicY1]]: number[][] = this._getBasicCorners(currentAspect, previousAspect);\n\n                        mesh = this._factory.createFlatMesh(\n                            state.previousNode,\n                            transform,\n                            basicX0,\n                            basicX1,\n                            basicY0,\n                            basicY1);\n                    } else {\n                        mesh = this._factory.createMesh(state.previousNode, state.previousTransform);\n                    }\n                }\n\n                this._scene.setImagePlanesOld([mesh]);\n            }\n        }\n\n        if (currentChanged || modeChanged) {\n            if (this._currentKey in this._currentProviderDisposers) {\n                this._currentProviderDisposers[this._currentKey]();\n\n                delete this._currentProviderDisposers[this._currentKey];\n            }\n\n            this._currentKey = state.currentNode.key;\n\n            const imagePlanes: THREE.Mesh[] = [];\n\n            if (state.currentNode.fullPano) {\n                imagePlanes.push(this._factory.createCurtainMesh(state.currentNode, state.currentTransform));\n            } else if (state.currentNode.pano && !state.currentNode.fullPano) {\n                imagePlanes.push(this._factory.createMesh(state.currentNode, state.currentTransform));\n            } else {\n                if (motionless) {\n                    imagePlanes.push(this._factory.createDistortedCurtainMesh(state.currentNode, state.currentTransform));\n                } else {\n                    imagePlanes.push(this._factory.createCurtainMesh(state.currentNode, state.currentTransform));\n                }\n            }\n\n            this._scene.setImagePlanes(imagePlanes);\n\n            this._updateCurtain();\n        }\n    }\n\n    private _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    private _updateTexturePrev(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanesOld) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n}\n\nexport default SliderGLRenderer;\n",
-    "import * as geohash from \"latlon-geohash\";\n\nimport {\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    zip as observableZip,\n    Observable,\n    Subscriber,\n} from \"rxjs\";\n\nimport {\n    mergeMap,\n    catchError,\n    tap,\n    publish,\n    refCount,\n    finalize,\n    map,\n    filter,\n} from \"rxjs/operators\";\n\nimport {\n    IGPano,\n    ILatLon,\n} from \"../../API\";\nimport {\n    IReconstruction,\n} from \"../../Component\";\nimport {\n    AbortMapillaryError,\n} from \"../../Error\";\nimport {\n    GraphService,\n    Node,\n} from \"../../Graph\";\nimport {\n    Urls,\n} from \"../../Utils\";\n\nexport type NodeData = {\n    alt: number;\n    focal: number;\n    gpano: IGPano;\n    height: number;\n    k1: number;\n    k2: number;\n    key: string,\n    lat: number;\n    lon: number;\n    mergeCC: number;\n    orientation: number;\n    originalLat: number;\n    originalLon: number;\n    rotation: number[];\n    scale: number;\n    width: number;\n};\n\nexport type ReconstructionData = {\n    data: NodeData,\n    reconstruction: IReconstruction,\n};\n\nexport class SpatialDataCache {\n    private _graphService: GraphService;\n\n    private _cacheRequests: { [hash: string]: XMLHttpRequest[] };\n    private _reconstructions: { [hash: string]: ReconstructionData[] };\n    private _tiles: { [hash: string]: NodeData[] };\n\n    private _cachingReconstructions$: { [hash: string]: Observable<ReconstructionData> };\n    private _cachingTiles$: { [hash: string]: Observable<NodeData[]> };\n\n    constructor(graphService: GraphService) {\n        this._graphService = graphService;\n\n        this._tiles = {};\n        this._cacheRequests = {};\n        this._reconstructions = {};\n\n        this._cachingReconstructions$ = {};\n        this._cachingTiles$ = {};\n    }\n\n    public cacheReconstructions$(hash: string): Observable<ReconstructionData> {\n        if (!this.hasTile(hash)) {\n            throw new Error(\"Cannot cache reconstructions of a non-existing tile.\");\n        }\n\n        if (this.hasReconstructions(hash)) {\n            throw new Error(\"Cannot cache reconstructions that already exists.\");\n        }\n\n        if (this.isCachingReconstructions(hash)) {\n            return this._cachingReconstructions$[hash];\n        }\n\n        const tile: NodeData[] = [];\n\n        if (hash in this._reconstructions) {\n            const reconstructionKeys: string[] =\n                this.getReconstructions(hash)\n                    .map(\n                        (reconstruction: ReconstructionData): string => {\n                            return reconstruction.data.key;\n                        });\n\n            for (const node of this.getTile(hash)) {\n                if (reconstructionKeys.indexOf(node.key) === -1) {\n                    tile.push(node);\n                }\n            }\n        } else {\n            tile.push(...this.getTile(hash));\n\n            this._reconstructions[hash] = [];\n        }\n\n        this._cacheRequests[hash] = [];\n        this._cachingReconstructions$[hash] = observableFrom(tile).pipe(\n            mergeMap(\n                (nodeData: NodeData): Observable<[NodeData, IReconstruction]> => {\n                    return !this._cacheRequests[hash] ?\n                        observableEmpty() :\n                        observableZip(\n                            observableOf(nodeData),\n                            this._getAtomicReconstruction(nodeData.key, this._cacheRequests[hash]))\n                            .pipe(\n                                catchError(\n                                    (error: Error): Observable<[NodeData, IReconstruction]> => {\n                                        if (error instanceof AbortMapillaryError) {\n                                            return observableEmpty();\n                                        }\n\n                                        console.error(error);\n\n                                        return observableOf(<[NodeData, IReconstruction]>[nodeData, null]);\n                                    }));\n                },\n                6),\n            map(\n                ([nodeData, reconstruction]: [NodeData, IReconstruction]): ReconstructionData => {\n                    return { data: nodeData, reconstruction: reconstruction };\n                }),\n            filter(\n                (): boolean => {\n                    return hash in this._reconstructions;\n                }),\n            tap(\n                (data: ReconstructionData): void => {\n                    this._reconstructions[hash].push(data);\n                }),\n            filter(\n                (data: ReconstructionData): boolean => {\n                    return !!data.reconstruction;\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingReconstructions$) {\n                        delete this._cachingReconstructions$[hash];\n                    }\n\n                    if (hash in this._cacheRequests) {\n                        delete this._cacheRequests[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingReconstructions$[hash];\n    }\n\n    public cacheTile$(hash: string): Observable<NodeData[]> {\n        if (hash.length !== 8) {\n            throw new Error(\"Hash needs to be level 8.\");\n        }\n\n        if (this.hasTile(hash)) {\n            throw new Error(\"Cannot cache tile that already exists.\");\n\n        }\n\n        if (this.hasTile(hash)) {\n            return this._cachingTiles$[hash];\n        }\n\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n        const sw: ILatLon = { lat: bounds.sw.lat, lon: bounds.sw.lon };\n        const ne: ILatLon = { lat: bounds.ne.lat, lon: bounds.ne.lon };\n\n        this._tiles[hash] = [];\n        this._cachingTiles$[hash] = this._graphService.cacheBoundingBox$(sw, ne).pipe(\n            catchError(\n                (error: Error): Observable<Node[]> => {\n                    console.error(error);\n\n                    delete this._tiles[hash];\n\n                    return observableEmpty();\n                }),\n            map(\n                (nodes: Node[]): NodeData[] => {\n                    return nodes\n                        .map(\n                            (n: Node): NodeData => {\n                                return this._createNodeData(n);\n                            });\n                }),\n            filter(\n                (): boolean => {\n                    return hash in this._tiles;\n                }),\n            tap(\n                (nodeData: NodeData[]): void => {\n                    this._tiles[hash].push(...nodeData);\n\n                    delete this._cachingTiles$[hash];\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingTiles$) {\n                        delete this._cachingTiles$[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingTiles$[hash];\n    }\n\n    public isCachingReconstructions(hash: string): boolean {\n        return hash in this._cachingReconstructions$;\n    }\n\n    public isCachingTile(hash: string): boolean {\n        return hash in this._cachingTiles$;\n    }\n\n    public hasReconstructions(hash: string): boolean {\n        return !(hash in this._cachingReconstructions$) &&\n            hash in this._reconstructions &&\n            this._reconstructions[hash].length === this._tiles[hash].length;\n    }\n\n    public hasTile(hash: string): boolean {\n        return !(hash in this._cachingTiles$) && hash in this._tiles;\n    }\n\n    public getReconstructions(hash: string): ReconstructionData[] {\n        return hash in this._reconstructions ?\n            this._reconstructions[hash]\n                .filter(\n                    (data: ReconstructionData): boolean => {\n                        return !!data.reconstruction;\n                    }) :\n            [];\n    }\n\n    public getTile(hash: string): NodeData[] {\n        return hash in this._tiles ? this._tiles[hash] : [];\n    }\n\n    public uncache(keepHashes?: string[]): void {\n        for (let hash of Object.keys(this._cacheRequests)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            for (const request of this._cacheRequests[hash]) {\n                request.abort();\n            }\n\n            delete this._cacheRequests[hash];\n        }\n\n        for (let hash of Object.keys(this._reconstructions)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            delete this._reconstructions[hash];\n        }\n\n        for (let hash of Object.keys(this._tiles)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            delete this._tiles[hash];\n        }\n    }\n\n    private _createNodeData(node: Node): NodeData {\n        return {\n            alt: node.alt,\n            focal: node.focal,\n            gpano: node.gpano,\n            height: node.height,\n            k1: node.ck1,\n            k2: node.ck2,\n            key: node.key,\n            lat: node.latLon.lat,\n            lon: node.latLon.lon,\n            mergeCC: node.mergeCC,\n            orientation: node.orientation,\n            originalLat: node.originalLatLon.lat,\n            originalLon: node.originalLatLon.lon,\n            rotation: [node.rotation[0], node.rotation[1], node.rotation[2]],\n            scale: node.scale,\n            width: node.width,\n        };\n    }\n\n    private _getAtomicReconstruction(key: string, requests: XMLHttpRequest[]): Observable<IReconstruction> {\n        return Observable.create(\n            (subscriber: Subscriber<IReconstruction>): void => {\n                const xmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n\n                xmlHTTP.open(\"GET\", Urls.atomicReconstruction(key), true);\n                xmlHTTP.responseType = \"json\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = () => {\n                    if (!xmlHTTP.response) {\n                        subscriber.error(new Error(`Atomic reconstruction does not exist (${key})`));\n                    } else {\n                        subscriber.next(xmlHTTP.response);\n                        subscriber.complete();\n                    }\n                };\n\n                xmlHTTP.onerror = () => {\n                    subscriber.error(new Error(`Failed to get atomic reconstruction (${key})`));\n                };\n\n                xmlHTTP.ontimeout = () => {\n                    subscriber.error(new Error(`Atomic reconstruction request timed out (${key})`));\n                };\n\n                xmlHTTP.onabort = () => {\n                    subscriber.error(new AbortMapillaryError(`Atomic reconstruction request was aborted (${key})`));\n                };\n\n                requests.push(xmlHTTP);\n\n                xmlHTTP.send(null);\n            });\n    }\n}\n\nexport default SpatialDataCache;\n",
-    "import * as geohash from \"latlon-geohash\";\n\nimport {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    catchError,\n    withLatestFrom,\n    map,\n    distinctUntilChanged,\n    concatMap,\n    switchMap,\n    tap,\n    filter,\n    last,\n    mergeMap,\n    first,\n    refCount,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    ISpatialDataConfiguration,\n    NodeData,\n    ReconstructionData,\n    SpatialDataCache,\n    SpatialDataScene,\n} from \"../../Component\";\nimport {\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IGLRenderHash,\n    GLRenderStage,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport PlayService from \"../../viewer/PlayService\";\nimport State from \"../../state/State\";\n\nexport class SpatialDataComponent extends Component<ISpatialDataConfiguration> {\n    public static componentName: string = \"spatialData\";\n\n    private _cache: SpatialDataCache;\n    private _scene: SpatialDataScene;\n    private _viewportCoords: ViewportCoords;\n    private _geoCoords: GeoCoords;\n\n    private _addSubscription: Subscription;\n    private _cameraVisibilitySubscription: Subscription;\n    private _earthControlsSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _pointVisibilitySubscription: Subscription;\n    private _positionVisibilitySubscription: Subscription;\n    private _renderSubscription: Subscription;\n    private _tileVisibilitySubscription: Subscription;\n    private _uncacheSubscription: Subscription;\n    private _visualizeConnectedComponentSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._cache = new SpatialDataCache(navigator.graphService);\n        this._scene = new SpatialDataScene(this._getDefaultConfiguration());\n        this._viewportCoords = new ViewportCoords();\n        this._geoCoords = new GeoCoords();\n    }\n\n    protected _activate(): void {\n        this._earthControlsSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.earthControls;\n                }),\n            distinctUntilChanged(),\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([earth, state]: [boolean, State]): void => {\n                    if (earth && state !== State.Earth) {\n                        this._navigator.stateService.earth();\n                    } else if (!earth && state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        const direction$: Observable<string> = this._container.renderService.bearing$.pipe(\n            map(\n                (bearing: number): string => {\n                    let direction: string = \"\";\n\n                    if (bearing > 292.5 || bearing <= 67.5) {\n                        direction += \"n\";\n                    }\n\n                    if (bearing > 112.5 && bearing <= 247.5) {\n                        direction += \"s\";\n                    }\n\n                    if (bearing > 22.5 && bearing <= 157.5) {\n                        direction += \"e\";\n                    }\n\n                    if (bearing > 202.5 && bearing <= 337.5) {\n                        direction += \"w\";\n                    }\n\n                    return direction;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        const hash$: Observable<string> = this._navigator.stateService.reference$.pipe(\n            tap(\n                (): void => {\n                    this._scene.uncache();\n                }),\n            switchMap(\n                (): Observable<string> => {\n                    return this._navigator.stateService.currentNode$.pipe(\n                        map(\n                            (node: Node): string => {\n                                return geohash.encode(node.latLon.lat, node.latLon.lon, 8);\n                            }),\n                        distinctUntilChanged());\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequencePlay$: Observable<boolean> = observableCombineLatest(\n            this._navigator.playService.playing$,\n            this._navigator.playService.speed$).pipe(\n            map(\n                ([playing, speed]: [boolean, number]): boolean => {\n                    return playing && speed > PlayService.sequenceSpeed;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._addSubscription = observableCombineLatest(\n            this._navigator.stateService.state$.pipe(\n                map(\n                    (state: State): boolean => {\n                        return state === State.Earth;\n                    }),\n                distinctUntilChanged()),\n            hash$,\n            sequencePlay$,\n            direction$).pipe(\n            distinctUntilChanged(\n                (\n                    [e1, h1, s1, d1]: [boolean, string, boolean, string],\n                    [e2, h2, s2, d2]: [boolean, string, boolean, string]): boolean => {\n\n                    if (e1 !== e2) {\n                        return false;\n                    }\n\n                    if (e1) {\n                        return h1 === h2 && s1 === s2;\n                    }\n\n                    return h1 === h2 && s1 === s2 && d1 === d2;\n                }),\n            concatMap(\n                ([earth, hash, sequencePlay, direction]: [boolean, string, boolean, string]): Observable<string[]> => {\n                    if (earth) {\n                        return sequencePlay ?\n                            observableOf([hash]) :\n                            observableOf(this._adjacentComponent(hash, 4));\n                    }\n\n                    return sequencePlay ?\n                        observableOf([hash, geohash.neighbours(hash)[<keyof geohash.Neighbours>direction]]) :\n                        observableOf(this._computeTiles(hash, direction));\n                }),\n            switchMap(\n                (hashes: string[]): Observable<string> => {\n                    return observableFrom(hashes).pipe(\n                        mergeMap(\n                            (h: string): Observable<[string, NodeData[]]> => {\n                                let tile$: Observable<NodeData[]>;\n\n                                if (this._cache.hasTile(h)) {\n                                    tile$ = observableOf(this._cache.getTile(h));\n                                } else if (this._cache.isCachingTile(h)) {\n                                    tile$ = this._cache.cacheTile$(h).pipe(\n                                        last(null, {}),\n                                        switchMap(\n                                            (): Observable<NodeData[]> => {\n                                                return observableOf(this._cache.getTile(h));\n                                            }));\n                                } else {\n                                    tile$ = this._cache.cacheTile$(h);\n                                }\n\n                                return observableCombineLatest(observableOf(h), tile$);\n                            },\n                            1),\n                        map(\n                            ([hash]: [string, NodeData[]]): string => {\n                                return hash;\n                            }));\n                }),\n            concatMap(\n                (hash: string): Observable<[string, ReconstructionData]> => {\n                    let reconstructions$: Observable<ReconstructionData>;\n\n                    if (this._cache.hasReconstructions(hash)) {\n                        reconstructions$ = observableFrom(this._cache.getReconstructions(hash));\n                    } else if (this._cache.isCachingReconstructions(hash)) {\n                        reconstructions$ = this._cache.cacheReconstructions$(hash).pipe(\n                            last(null, {}),\n                            switchMap(\n                                (): Observable<ReconstructionData> => {\n                                    return observableFrom(this._cache.getReconstructions(hash));\n                                }));\n                    } else if (this._cache.hasTile(hash)) {\n                        reconstructions$ = this._cache.cacheReconstructions$(hash);\n                    } else {\n                        reconstructions$ = observableEmpty();\n                    }\n\n                    return observableCombineLatest(observableOf(hash), reconstructions$);\n                }),\n            withLatestFrom(this._navigator.stateService.reference$),\n            tap(\n                ([[hash], reference]: [[string, ReconstructionData], ILatLonAlt]): boolean => {\n                    if (this._scene.hasTile(hash)) {\n                        return;\n                    }\n\n                    this._scene.addTile(this._computeTileBBox(hash, reference), hash);\n                }),\n            filter(\n                ([[hash, data]]: [[string, ReconstructionData], ILatLonAlt]): boolean => {\n                    return !this._scene.hasReconstruction(data.reconstruction.main_shot, hash);\n                }),\n            map(\n                ([[hash, data], reference]: [[string, ReconstructionData], ILatLonAlt]):\n                [ReconstructionData, Transform, number[], string] => {\n                    return [\n                        data,\n                        this._createTransform(data.data, reference),\n                        this._computeOriginalPosition(data.data, reference),\n                        hash];\n                }))\n            .subscribe(\n                ([data, transform, position, hash]: [ReconstructionData, Transform, number[], string]): void => {\n                    this._scene.addReconstruction(\n                        data.reconstruction,\n                        transform,\n                        position,\n                        !!data.data.mergeCC ? data.data.mergeCC.toString() : \"\",\n                        hash);\n                });\n\n        this._cameraVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.camerasVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setCameraVisibility(visible);\n                });\n\n        this._pointVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.pointsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPointVisibility(visible);\n                });\n\n        this._positionVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.positionsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPositionVisibility(visible);\n                });\n\n        this._tileVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.tilesVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setTileVisibility(visible);\n                });\n\n        this._visualizeConnectedComponentSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.connectedComponents;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visualize: boolean): void => {\n                    this._scene.setConnectedComponentVisualization(visualize);\n                });\n\n        this._uncacheSubscription = hash$\n            .subscribe(\n                (hash: string): void => {\n                    const keepHashes: string[] = this._adjacentComponent(hash, 4);\n                    this._scene.uncache(keepHashes);\n                    this._cache.uncache(keepHashes);\n                });\n\n        this._moveSubscription = this._navigator.playService.playing$.pipe(\n            switchMap(\n                (playing: boolean): Observable<MouseEvent> => {\n                    return playing ?\n                        observableEmpty() :\n                        this._container.mouseService.dblClick$;\n                }),\n            withLatestFrom(this._container.renderService.renderCamera$),\n            switchMap(\n                ([event, render]: [MouseEvent, RenderCamera]): Observable<Node> => {\n                    const element: HTMLElement = this._container.element;\n                    const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n                    const viewport: number[] = this._viewportCoords.canvasToViewport(\n                        canvasX,\n                        canvasY,\n                        element);\n\n                    const key: string = this._scene.intersectObjects(viewport, render.perspective);\n\n                    return !!key ?\n                        this._navigator.moveToKey$(key).pipe(\n                            catchError(\n                                (): Observable<Node> => {\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe();\n\n        this._renderSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const scene: SpatialDataScene = this._scene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: scene.needsRender,\n                            render: scene.render.bind(scene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._cache.uncache();\n        this._scene.uncache();\n\n        this._addSubscription.unsubscribe();\n        this._cameraVisibilitySubscription.unsubscribe();\n        this._earthControlsSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._pointVisibilitySubscription.unsubscribe();\n        this._positionVisibilitySubscription.unsubscribe();\n        this._renderSubscription.unsubscribe();\n        this._tileVisibilitySubscription.unsubscribe();\n        this._uncacheSubscription.unsubscribe();\n        this._visualizeConnectedComponentSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n    }\n\n    protected _getDefaultConfiguration(): ISpatialDataConfiguration {\n        return { camerasVisible: false, pointsVisible: true, positionsVisible: false, tilesVisible: false };\n    }\n\n    private _adjacentComponent(hash: string, depth: number): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        hashSet.add(hash);\n\n        this._adjacentComponentRecursive(hashSet, [hash], 0, depth);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _adjacentComponentRecursive(\n        hashSet: Set<string>,\n        currentHashes: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: string[] = [];\n\n        for (const hash of currentHashes) {\n            const hashNeighbours: geohash.Neighbours = geohash.neighbours(hash);\n\n            for (const direction in hashNeighbours) {\n                if (!hashNeighbours.hasOwnProperty(direction)) {\n                    continue;\n                }\n\n                neighbours.push(hashNeighbours[<keyof geohash.Neighbours>direction]);\n            }\n        }\n\n        const newHashes: string[] = [];\n        for (const neighbour of neighbours) {\n            if (!hashSet.has(neighbour)) {\n                hashSet.add(neighbour);\n                newHashes.push(neighbour);\n            }\n        }\n\n        this._adjacentComponentRecursive(hashSet, newHashes, currentDepth + 1, maxDepth);\n    }\n\n    private _computeOriginalPosition(data: NodeData, reference: ILatLonAlt): number[] {\n        return this._geoCoords.geodeticToEnu(\n            data.originalLat,\n            data.originalLon,\n            data.alt,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n    }\n\n    private _computeTileBBox(hash: string, reference: ILatLonAlt): number[][] {\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n\n        const sw: number[] = this._geoCoords.geodeticToEnu(\n            bounds.sw.lat,\n            bounds.sw.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        const ne: number[] = this._geoCoords.geodeticToEnu(\n            bounds.ne.lat,\n            bounds.ne.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        return [sw, ne];\n    }\n\n    private _createTransform(data: NodeData, reference: ILatLonAlt): Transform {\n        const translation: number[] = Geo.computeTranslation(\n            { alt: data.alt, lat: data.lat, lon: data.lon },\n            data.rotation,\n            reference);\n\n        const transform: Transform = new Transform(\n            data.orientation,\n            data.width,\n            data.height,\n            data.focal,\n            data.scale,\n            data.gpano,\n            data.rotation,\n            translation,\n            undefined,\n            undefined,\n            data.k1,\n            data.k2);\n\n        return transform;\n    }\n\n    private _computeTiles(hash: string, direction: string): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        const directions: string[] = [\"n\", \"ne\", \"e\", \"se\", \"s\", \"sw\", \"w\", \"nw\"];\n\n        this._computeTilesRecursive(hashSet, hash, direction, directions, 0, 2);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _computeTilesRecursive(\n        hashSet: Set<string>,\n        currentHash: string,\n        direction: string,\n        directions: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        hashSet.add(currentHash);\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: geohash.Neighbours = geohash.neighbours(currentHash);\n        const directionIndex: number = directions.indexOf(direction);\n        const length: number = directions.length;\n\n        const directionNeighbours: string[] = [\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex - 1), length)]],\n            neighbours[<keyof geohash.Neighbours>direction],\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex + 1), length)]],\n        ];\n\n        for (let directionNeighbour of directionNeighbours) {\n            this._computeTilesRecursive(hashSet, directionNeighbour, direction, directions, currentDepth + 1, maxDepth);\n        }\n    }\n\n    private _modulo(a: number, n: number): number {\n        return ((a % n) + n) % n;\n    }\n\n    private _setToArray<T>(s: Set<T>): T[] {\n        const a: T[] = [];\n\n        s.forEach(\n            (value: T) => {\n                a.push(value);\n            });\n\n        return a;\n    }\n}\n\nComponentService.register(SpatialDataComponent);\nexport default SpatialDataComponent;\n",
+    "import * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport {IShader} from \"../../Component\";\n\nexport class Shaders {\n    public static equirectangular: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static equirectangularCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspective: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static fisheye: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./fisheye.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./fisheye.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static fisheyeCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./fisheye_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./fisheye_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistorted: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistortedCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.vertex.glsl\"), \"utf8\"),\n    };\n}\n",
+    "import {\n    concat as observableConcat,\n    of as observableOf,\n    zip as observableZip,\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    publishReplay,\n    pairwise,\n    catchError,\n    takeUntil,\n    publish,\n    skipWhile,\n    scan,\n    filter,\n    debounceTime,\n    startWith,\n    map,\n    switchMap,\n    withLatestFrom,\n    refCount,\n    first,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    ISliderNodes,\n    ISliderCombination,\n    IGLRendererOperation,\n    PositionLookat,\n} from \"./interfaces/interfaces\";\n\nimport {\n    Component,\n    ComponentService,\n    ISliderConfiguration,\n    ISliderKeys,\n    SliderDOMRenderer,\n    SliderGLRenderer,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IBoundingBox,\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\n\n/**\n * @class SliderComponent\n *\n * @classdesc Component for comparing pairs of images. Renders\n * a slider for adjusting the curtain of the first image.\n *\n * Deactivate the sequence, direction and image plane\n * components when activating the slider component to avoid\n * interfering UI elements.\n *\n * To retrive and use the slider component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * viewer.deactivateComponent(\"imagePlane\");\n * viewer.deactivateComponent(\"direction\");\n * viewer.deactivateComponent(\"sequence\");\n *\n * viewer.activateComponent(\"slider\");\n *\n * var sliderComponent = viewer.getComponent(\"slider\");\n * ```\n */\nexport class SliderComponent extends Component<ISliderConfiguration> {\n    public static componentName: string = \"slider\";\n\n    private _viewportCoords: ViewportCoords;\n    private _domRenderer: SliderDOMRenderer;\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n    private _spatial: Spatial;\n\n    private _glRendererOperation$: Subject<IGLRendererOperation>;\n    private _glRenderer$: Observable<SliderGLRenderer>;\n    private _glRendererCreator$: Subject<void>;\n    private _glRendererDisposer$: Subject<void>;\n\n    private _setKeysSubscription: Subscription;\n\n    private _modeSubcription: Subscription;\n    private _stateSubscription: Subscription;\n    private _glRenderSubscription: Subscription;\n    private _domRenderSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _updateCurtainSubscription: Subscription;\n    private _waitSubscription: Subscription;\n\n    private _textureProviderSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _abortTextureProviderSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _textureProviderSubscriptionPrev: Subscription;\n    private _setTextureProviderSubscriptionPrev: Subscription;\n    private _setTileSizeSubscriptionPrev: Subscription;\n    private _abortTextureProviderSubscriptionPrev: Subscription;\n    private _setRegionOfInterestSubscriptionPrev: Subscription;\n    private _hasTextureSubscriptionPrev: Subscription;\n    private _updateBackgroundSubscriptionPrev: Subscription;\n    private _updateTextureImageSubscriptionPrev: Subscription;\n\n    /** @ignore */\n    constructor (name: string, container: Container, navigator: Navigator, viewportCoords?: ViewportCoords) {\n        super(name, container, navigator);\n\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n        this._domRenderer = new SliderDOMRenderer(container);\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n        this._spatial = new Spatial();\n\n        this._glRendererOperation$ = new Subject<IGLRendererOperation>();\n        this._glRendererCreator$ = new Subject<void>();\n        this._glRendererDisposer$ = new Subject<void>();\n\n        this._glRenderer$ = this._glRendererOperation$.pipe(\n            scan(\n                (glRenderer: SliderGLRenderer, operation: IGLRendererOperation): SliderGLRenderer => {\n                    return operation(glRenderer);\n                },\n                null),\n            filter(\n                (glRenderer: SliderGLRenderer): boolean => {\n                    return glRenderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (glRenderer: SliderGLRenderer): number => {\n                    return glRenderer.frameId;\n                }));\n\n        this._glRendererCreator$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        if (glRenderer != null) {\n                            throw new Error(\"Multiple slider states can not be created at the same time\");\n                        }\n\n                        return new SliderGLRenderer();\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._glRendererDisposer$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    /**\n     * Set the initial position.\n     *\n     * @description Configures the intial position of the slider.\n     * The inital position value will be used when the component\n     * is activated.\n     *\n     * @param {number} initialPosition - Initial slider position.\n     */\n    public setInitialPosition(initialPosition: number): void {\n        this.configure({ initialPosition: initialPosition });\n    }\n\n    /**\n     * Set the image keys.\n     *\n     * @description Configures the component to show the image\n     * planes for the supplied image keys.\n     *\n     * @param {ISliderKeys} keys - Slider keys object specifying\n     * the images to be shown in the foreground and the background.\n     */\n    public setKeys(keys: ISliderKeys): void {\n        this.configure({ keys: keys });\n    }\n\n    /**\n     * Set the slider mode.\n     *\n     * @description Configures the mode for transitions between\n     * image pairs.\n     *\n     * @param {SliderMode} mode - Slider mode to be set.\n     */\n    public setSliderMode(mode: SliderMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Set the value controlling if the slider is visible.\n     *\n     * @param {boolean} sliderVisible - Value indicating if\n     * the slider should be visible or not.\n     */\n    public setSliderVisible(sliderVisible: boolean): void {\n        this.configure({ sliderVisible: sliderVisible });\n    }\n\n    protected _activate(): void {\n        this._modeSubcription = this._domRenderer.mode$\n            .subscribe(\n                (mode: SliderMode): void => {\n                    this.setSliderMode(mode);\n                });\n\n        this._glRenderSubscription = this._glRenderer$.pipe(\n            map(\n                (glRenderer: SliderGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: glRenderer.frameId,\n                            needsRender: glRenderer.needsRender,\n                            render: glRenderer.render.bind(glRenderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        const position$: Observable<number> = observableConcat(\n            this.configuration$.pipe(\n                map(\n                    (configuration: ISliderConfiguration): number => {\n                        return configuration.initialPosition != null ?\n                            configuration.initialPosition : 1;\n                    }),\n                first()),\n            this._domRenderer.position$);\n\n        const mode$: Observable<SliderMode> = this.configuration$.pipe(\n            map(\n                (configuration: ISliderConfiguration): SliderMode => {\n                    return configuration.mode;\n                }),\n            distinctUntilChanged());\n\n        const motionless$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.motionless;\n                }),\n            distinctUntilChanged());\n\n        const fullPano$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano;\n                }),\n            distinctUntilChanged());\n\n        const sliderVisible$: Observable<boolean> = observableCombineLatest(\n                this._configuration$.pipe(\n                    map(\n                        (configuration: ISliderConfiguration): boolean => {\n                            return configuration.sliderVisible;\n                        })),\n                this._navigator.stateService.currentState$.pipe(\n                    map(\n                        (frame: IFrame): boolean => {\n                            return !(frame.state.currentNode == null ||\n                                frame.state.previousNode == null ||\n                                (frame.state.currentNode.pano && !frame.state.currentNode.fullPano) ||\n                                (frame.state.previousNode.pano && !frame.state.previousNode.fullPano) ||\n                                (frame.state.currentNode.fullPano && !frame.state.previousNode.fullPano));\n                        }),\n                    distinctUntilChanged())).pipe(\n            map(\n                ([sliderVisible, enabledState]: [boolean, boolean]): boolean => {\n                    return sliderVisible && enabledState;\n                }),\n            distinctUntilChanged());\n\n        this._waitSubscription = observableCombineLatest(\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$).pipe(\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([[mode, motionless, fullPano, sliderVisible], state]: [[SliderMode, boolean, boolean, boolean], State]): void => {\n                    const interactive: boolean = sliderVisible &&\n                        (motionless || mode === SliderMode.Stationary || fullPano);\n\n                    if (interactive && state !== State.WaitingInteractively) {\n                        this._navigator.stateService.waitInteractively();\n                    } else if (!interactive && state !== State.Waiting) {\n                        this._navigator.stateService.wait();\n                    }\n                });\n\n        this._moveSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$)\n            .subscribe(\n                ([position, mode, motionless, fullPano, sliderVisible]: [number, SliderMode, boolean, boolean, boolean]): void => {\n                    if (motionless || mode === SliderMode.Stationary || fullPano) {\n                        this._navigator.stateService.moveTo(1);\n                    } else {\n                        this._navigator.stateService.moveTo(position);\n                    }\n                });\n\n        this._domRenderSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([position, mode, motionless, fullPano, sliderVisible, size]:\n                    [number, SliderMode, boolean, boolean, boolean, ISize]): IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._domRenderer.render(position, mode, motionless, fullPano, sliderVisible),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glRendererCreator$.next(null);\n\n        this._updateCurtainSubscription = observableCombineLatest(\n                position$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            map(\n                ([position, fullPano, visible, render, transform]: [number, boolean, boolean, RenderCamera, Transform]): number => {\n                    if (!fullPano) {\n                        return visible ? position : 1;\n                    }\n\n                    const basicMin: number[] = this._viewportCoords.viewportToBasic(-1.15, 0, transform, render.perspective);\n                    const basicMax: number[] = this._viewportCoords.viewportToBasic(1.15, 0, transform, render.perspective);\n\n                    const shiftedMax: number = basicMax[0] < basicMin[0] ? basicMax[0] + 1 : basicMax[0];\n                    const basicPosition: number = basicMin[0] + position * (shiftedMax - basicMin[0]);\n\n                    return basicPosition > 1 ? basicPosition - 1 : basicPosition;\n                }),\n            map(\n                (position: number): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.updateCurtain(position);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._stateSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                mode$).pipe(\n            map(\n                ([frame, mode]: [IFrame, SliderMode]): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.update(frame, mode);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setKeysSubscription = this._configuration$.pipe(\n            filter(\n                (configuration: ISliderConfiguration): boolean => {\n                    return configuration.keys != null;\n                }),\n            switchMap(\n                (configuration: ISliderConfiguration): Observable<ISliderCombination> => {\n                    return observableZip(\n                            observableZip(\n                                this._catchCacheNode$(configuration.keys.background),\n                                this._catchCacheNode$(configuration.keys.foreground)).pipe(\n                            map(\n                                (nodes: [Node, Node]): ISliderNodes => {\n                                    return { background: nodes[0], foreground: nodes[1] };\n                                })),\n                            this._navigator.stateService.currentState$.pipe(first())).pipe(\n                        map(\n                            (nf: [ISliderNodes, IFrame]): ISliderCombination => {\n                                return { nodes: nf[0], state: nf[1].state };\n                            }));\n                }))\n            .subscribe(\n                (co: ISliderCombination): void => {\n                    if (co.state.currentNode != null &&\n                        co.state.previousNode != null &&\n                        co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.previousNode.key === co.nodes.background.key) {\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.background.key) {\n                        this._navigator.stateService.setNodes([co.nodes.foreground]);\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.trajectory.length === 1) {\n                        this._navigator.stateService.prependNodes([co.nodes.background]);\n                        return;\n                    }\n\n                    this._navigator.stateService.setNodes([co.nodes.background]);\n                    this._navigator.stateService.setNodes([co.nodes.foreground]);\n                },\n                (e: Error): void => {\n                    console.error(e);\n                });\n\n        let previousNode$: Observable<Node> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }));\n\n        const textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const currentNode: Node = state.currentNode;\n                    const currentTransform: Transform = state.currentTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        const textureProviderPrev$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return !!frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.previousNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const previousNode: Node = state.previousNode;\n                    const previousTransform: Transform = state.previousTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        previousNode.key,\n                        previousTransform.basicWidth,\n                        previousTransform.basicHeight,\n                        tileSize,\n                        previousNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscriptionPrev = textureProviderPrev$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProviderPrev(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscriptionPrev = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProviderPrev$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTriggerPrev$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscriptionPrev = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTriggerPrev$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }),\n            withLatestFrom(this._navigator.stateService.currentState$))\n            .subscribe(\n                ([[roi, provider], frame]: [[IRegionOfInterest, TextureProvider], IFrame]): void => {\n                    let shiftedRoi: IRegionOfInterest = null;\n\n                    if (frame.state.previousNode.fullPano) {\n                        if (frame.state.currentNode.fullPano) {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shift: number = directionDiff / (2 * Math.PI);\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(roi.bbox.maxX + shift, 0, 1),\n                                maxY: roi.bbox.maxY,\n                                minX: this._spatial.wrap(roi.bbox.minX + shift, 0, 1),\n                                minY: roi.bbox.minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: roi.pixelHeight,\n                                pixelWidth: roi.pixelWidth,\n                            };\n                        } else {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shiftX: number = directionDiff / (2 * Math.PI);\n\n                            const a1: number = this._spatial.angleToPlane(currentViewingDirection.toArray(), [0, 0, 1]);\n                            const a2: number = this._spatial.angleToPlane(previousViewingDirection.toArray(), [0, 0, 1]);\n\n                            const shiftY: number = (a2 - a1) / (2 * Math.PI);\n\n                            const currentTransform: Transform = frame.state.currentTransform;\n                            const size: number = Math.max(currentTransform.basicWidth, currentTransform.basicHeight);\n                            const hFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicWidth / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n                            const vFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicHeight / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n\n                            const spanningWidth: number = hFov / (2 * Math.PI);\n                            const spanningHeight: number = vFov / Math.PI;\n\n                            const basicWidth: number = (roi.bbox.maxX - roi.bbox.minX) * spanningWidth;\n                            const basicHeight: number = (roi.bbox.maxY - roi.bbox.minY) * spanningHeight;\n\n                            const pixelWidth: number = roi.pixelWidth * spanningWidth;\n                            const pixelHeight: number = roi.pixelHeight * spanningHeight;\n\n                            const zoomShiftX: number = (roi.bbox.minX + roi.bbox.maxX) / 2 - 0.5;\n                            const zoomShiftY: number = (roi.bbox.minY + roi.bbox.maxY) / 2 - 0.5;\n\n                            const minX: number = 0.5 + shiftX + spanningWidth * zoomShiftX - basicWidth / 2;\n                            const maxX: number = 0.5 + shiftX + spanningWidth * zoomShiftX + basicWidth / 2;\n                            const minY: number = 0.5 + shiftY + spanningHeight * zoomShiftY - basicHeight / 2;\n                            const maxY: number = 0.5 + shiftY + spanningHeight * zoomShiftY + basicHeight / 2;\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(maxX, 0, 1),\n                                maxY: maxY,\n                                minX: this._spatial.wrap(minX, 0, 1),\n                                minY: minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: pixelHeight,\n                                pixelWidth: pixelWidth,\n                            };\n                        }\n                    } else {\n                        const currentBasicAspect: number = frame.state.currentTransform.basicAspect;\n                        const previousBasicAspect: number = frame.state.previousTransform.basicAspect;\n\n                        const [[cornerMinX, cornerMinY], [cornerMaxX, cornerMaxY]]: number[][] =\n                            this._getBasicCorners(currentBasicAspect, previousBasicAspect);\n\n                        const basicWidth: number = cornerMaxX - cornerMinX;\n                        const basicHeight: number = cornerMaxY - cornerMinY;\n\n                        const pixelWidth: number = roi.pixelWidth / basicWidth;\n                        const pixelHeight: number = roi.pixelHeight / basicHeight;\n\n                        const minX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.minX / basicWidth;\n                        const maxX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.maxX / basicWidth;\n                        const minY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.minY / basicHeight;\n                        const maxY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.maxY / basicHeight;\n\n                        const bbox: IBoundingBox = {\n                            maxX: maxX,\n                            maxY: maxY,\n                            minX: minX,\n                            minY: minY,\n                        };\n\n                        this._clipBoundingBox(bbox);\n\n                        shiftedRoi = {\n                            bbox: bbox,\n                            pixelHeight: pixelHeight,\n                            pixelWidth: pixelWidth,\n                        };\n                    }\n\n                    provider.setRegionOfInterest(shiftedRoi);\n                });\n\n        let hasTexturePrev$: Observable<boolean> = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscriptionPrev = hasTexturePrev$.subscribe(() => { /*noop*/ });\n\n        let nodeImagePrev$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0 && !!frame.state.previousNode;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexturePrev$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexturePrev$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscriptionPrev = nodeImagePrev$.pipe(\n            withLatestFrom(textureProviderPrev$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscriptionPrev = nodeImagePrev$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    protected _deactivate(): void {\n        this._waitSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state !== State.Traversing) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        this._glRendererDisposer$.next(null);\n        this._domRenderer.deactivate();\n\n        this._modeSubcription.unsubscribe();\n        this._setKeysSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._glRenderSubscription.unsubscribe();\n        this._domRenderSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._updateCurtainSubscription.unsubscribe();\n\n        this._textureProviderSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n\n        this._textureProviderSubscriptionPrev.unsubscribe();\n        this._setTextureProviderSubscriptionPrev.unsubscribe();\n        this._setTileSizeSubscriptionPrev.unsubscribe();\n        this._abortTextureProviderSubscriptionPrev.unsubscribe();\n        this._setRegionOfInterestSubscriptionPrev.unsubscribe();\n        this._hasTextureSubscriptionPrev.unsubscribe();\n        this._updateBackgroundSubscriptionPrev.unsubscribe();\n        this._updateTextureImageSubscriptionPrev.unsubscribe();\n\n        this.configure({ keys: null });\n    }\n\n    protected _getDefaultConfiguration(): ISliderConfiguration {\n        return {\n            initialPosition: 1,\n            mode: SliderMode.Motion,\n            sliderVisible: true,\n        };\n    }\n\n    private _catchCacheNode$(key: string): Observable<Node> {\n        return this._navigator.graphService.cacheNode$(key).pipe(\n            catchError(\n                (error: Error, caught: Observable<Node>): Observable<Node> => {\n                    console.error(`Failed to cache slider node (${key})`, error);\n\n                    return observableEmpty();\n                }));\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _clipBoundingBox(bbox: IBoundingBox): void {\n        bbox.minX = Math.max(0, Math.min(1, bbox.minX));\n        bbox.maxX = Math.max(0, Math.min(1, bbox.maxX));\n        bbox.minY = Math.max(0, Math.min(1, bbox.minY));\n        bbox.maxY = Math.max(0, Math.min(1, bbox.maxY));\n    }\n}\n\nComponentService.register(SliderComponent);\nexport default SliderComponent;\n",
+    "import {merge as observableMerge,  Observable ,  Subject ,  Subscription } from \"rxjs\";\n\nimport {filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport { SliderMode } from \"../../Component\";\nimport { Container } from \"../../Viewer\";\n\nexport class SliderDOMRenderer {\n    private _container: Container;\n\n    private _interacting: boolean;\n    private _notifyModeChanged$: Subject<SliderMode>;\n    private _notifyPositionChanged$: Subject<number>;\n    private _stopInteractionSubscription: Subscription;\n\n    constructor(container: Container) {\n        this._container = container;\n\n        this._interacting = false;\n        this._notifyModeChanged$ = new Subject<SliderMode>();\n        this._notifyPositionChanged$ = new Subject<number>();\n        this._stopInteractionSubscription = null;\n    }\n\n    public get mode$(): Observable<SliderMode> {\n        return this._notifyModeChanged$;\n    }\n\n    public get position$(): Observable<number> {\n        return this._notifyPositionChanged$;\n    }\n\n    public activate(): void {\n        if (!!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._stopInteractionSubscription = observableMerge(\n                this._container.mouseService.documentMouseUp$,\n                this._container.touchService.touchEnd$.pipe(\n                    filter(\n                        (touchEvent: TouchEvent): boolean => {\n                            return touchEvent.touches.length === 0;\n                        })))\n            .subscribe(\n                (event: Event): void => {\n                    if (this._interacting) {\n                        this._interacting = false;\n                    }\n                });\n    }\n\n    public deactivate(): void {\n        if (!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._interacting = false;\n\n        this._stopInteractionSubscription.unsubscribe();\n        this._stopInteractionSubscription = null;\n    }\n\n    public render(position: number, mode: SliderMode, motionless: boolean, pano: boolean, visible: boolean): vd.VNode {\n        const children: vd.VNode[] = [];\n\n        if (visible) {\n            children.push(vd.h(\"div.SliderBorder\", []));\n\n            const modeVisible: boolean = !(motionless || pano);\n            if (modeVisible) {\n                children.push(this._createModeButton(mode));\n                children.push(this._createModeButton2d(mode));\n            }\n\n            children.push(this._createPositionInput(position, modeVisible));\n        }\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 100));\n\n        return vd.h(\"div.SliderContainer\", { style: { width: `${width}px` } }, children);\n    }\n\n    private _createModeButton(mode: SliderMode): vd.VNode {\n        const properties: vd.createProperties = {\n            onclick: (): void => {\n                if (mode === SliderMode.Motion) {\n                    return;\n                }\n\n                this._notifyModeChanged$.next(SliderMode.Motion);\n            },\n        };\n\n        const className: string = mode === SliderMode.Stationary ?\n            \"SliderModeButtonDisabled\" :\n            \"SliderModeButton\";\n\n        return vd.h(\"div.\" + className, properties, [vd.h(\"div.SliderModeIcon\", [])]);\n    }\n\n    private _createModeButton2d(mode: SliderMode): vd.VNode {\n        const properties: vd.createProperties = {\n            onclick: (): void => {\n                if (mode === SliderMode.Stationary) {\n                    return;\n                }\n\n                this._notifyModeChanged$.next(SliderMode.Stationary);\n            },\n        };\n\n        const className: string = mode === SliderMode.Motion ?\n            \"SliderModeButton2dDisabled\" :\n            \"SliderModeButton2d\";\n\n        return vd.h(\"div.\" + className, properties, [vd.h(\"div.SliderModeIcon2d\", [])]);\n    }\n\n    private _createPositionInput(position: number, modeVisible: boolean): vd.VNode {\n        const onChange: (e: Event) => void = (e: Event): void => {\n            this._notifyPositionChanged$.next(Number((<HTMLInputElement>e.target).value) / 1000);\n        };\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            this._interacting = true;\n            e.stopPropagation();\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._interacting) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 105)) - 84 + (modeVisible ? 0 : 52);\n\n        const positionInput: vd.VNode = vd.h(\n            \"input.SliderPosition\",\n            {\n                max: 1000,\n                min: 0,\n                onchange: onChange,\n                oninput: onChange,\n                onkeydown: onKeyDown,\n                onmousedown: onStart,\n                onmousemove: onMove,\n                ontouchmove: onMove,\n                ontouchstart: onStart,\n                style: {\n                    width: `${width}px`,\n                },\n                type: \"range\",\n                value: 1000 * position,\n            },\n            []);\n\n        return vd.h(\"div.SliderPositionContainer\", [positionInput]);\n    }\n}\n\nexport default SliderDOMRenderer;\n",
+    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    IBBoxShaderMaterial,\n    IShaderMaterial,\n    MeshFactory,\n    MeshScene,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport { TextureProvider } from \"../../Tiles\";\n\nexport class SliderGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n    private _spatial: Spatial;\n\n    private _currentKey: string;\n    private _previousKey: string;\n\n    private _disabled: boolean;\n    private _curtain: number;\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    private _mode: SliderMode;\n\n    private _currentProviderDisposers: { [key: string]: () => void };\n    private _previousProviderDisposers: { [key: string]: () => void };\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n        this._spatial = new Spatial();\n\n        this._currentKey = null;\n        this._previousKey = null;\n\n        this._disabled = false;\n        this._curtain = 1;\n        this._frameId = 0;\n        this._needsRender = false;\n\n        this._mode = null;\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._currentKey,\n            provider,\n            this._currentProviderDisposers,\n            this._updateTexture.bind(this));\n    }\n\n    public setTextureProviderPrev(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._previousKey,\n            provider,\n            this._previousProviderDisposers,\n            this._updateTexturePrev.bind(this));\n    }\n\n    public update(frame: IFrame, mode: SliderMode): void {\n        this._updateFrameId(frame.id);\n        this._updateImagePlanes(frame.state, mode);\n    }\n\n    public updateCurtain(curtain: number): void {\n        if (this._curtain === curtain) {\n            return;\n        }\n\n        this._curtain = curtain;\n        this._updateCurtain();\n\n        this._needsRender = true;\n    }\n\n    public updateTexture(image: HTMLImageElement, node: Node): void {\n        const planes: { [key: string]: THREE.Mesh } = node.key === this._currentKey ?\n            this._scene.planes :\n            node.key === this._previousKey ?\n                this._scene.planesOld :\n                {};\n\n        if (Object.keys(planes).length === 0) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node?: Node): void {\n        if (this._currentKey !== node.key) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        if (!this.disabled) {\n            renderer.render(this._scene.sceneOld, perspectiveCamera);\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n\n        for (const key in this._currentProviderDisposers) {\n            if (!this._currentProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._currentProviderDisposers[key]();\n        }\n\n        for (const key in this._previousProviderDisposers) {\n            if (!this._previousProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._previousProviderDisposers[key]();\n        }\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _setDisabled(state: ICurrentState): void {\n        this._disabled = state.currentNode == null ||\n            state.previousNode == null ||\n            (state.currentNode.pano && !state.currentNode.fullPano) ||\n            (state.previousNode.pano && !state.previousNode.fullPano) ||\n            (state.currentNode.fullPano && !state.previousNode.fullPano);\n    }\n\n    private _setTextureProvider(\n        key: string,\n        originalKey: string,\n        provider: TextureProvider,\n        providerDisposers: { [key: string]: () => void },\n        updateTexture: (texture: THREE.Texture) => void): void {\n\n        if (key !== originalKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(updateTexture);\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in providerDisposers) {\n            let disposeProvider: () => void = providerDisposers[key];\n            disposeProvider();\n\n            delete providerDisposers[key];\n        }\n\n        providerDisposers[key] = dispose;\n    }\n\n    private _updateCurtain(): void {\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let shaderMaterial: IBBoxShaderMaterial = <IBBoxShaderMaterial>plane.material;\n\n            if (!!shaderMaterial.uniforms.curtain) {\n                shaderMaterial.uniforms.curtain.value = this._curtain;\n            }\n        }\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateImagePlanes(state: ICurrentState, mode: SliderMode): void {\n        const currentChanged: boolean = state.currentNode != null && this._currentKey !== state.currentNode.key;\n        const previousChanged: boolean = state.previousNode != null && this._previousKey !== state.previousNode.key;\n        const modeChanged: boolean = this._mode !== mode;\n\n        if (!(currentChanged || previousChanged || modeChanged)) {\n            return;\n        }\n\n        this._setDisabled(state);\n        this._needsRender = true;\n        this._mode = mode;\n\n        const motionless: boolean = state.motionless || mode === SliderMode.Stationary || state.currentNode.pano;\n\n        if (this.disabled || previousChanged) {\n            if (this._previousKey in this._previousProviderDisposers) {\n                this._previousProviderDisposers[this._previousKey]();\n\n                delete this._previousProviderDisposers[this._previousKey];\n            }\n        }\n\n        if (this.disabled) {\n            this._scene.setImagePlanesOld({});\n        } else {\n            if (previousChanged || modeChanged) {\n                const previousNode: Node = state.previousNode;\n\n                this._previousKey = previousNode.key;\n\n                const elements: Float32Array = state.currentTransform.rt.elements;\n                let translation: number[] = [elements[12], elements[13], elements[14]];\n\n                const currentAspect: number = state.currentTransform.basicAspect;\n                const previousAspect: number = state.previousTransform.basicAspect;\n\n                const textureScale: number[] = currentAspect > previousAspect ?\n                    [1, previousAspect / currentAspect] :\n                    [currentAspect / previousAspect, 1];\n\n                let rotation: number[] = state.currentNode.rotation;\n                let width: number = state.currentNode.width;\n                let height: number = state.currentNode.height;\n\n                if (previousNode.fullPano) {\n                    rotation = state.previousNode.rotation;\n                    translation = this._spatial\n                        .rotate(\n                            this._spatial\n                                .opticalCenter(state.currentNode.rotation, translation)\n                                .toArray(),\n                            rotation)\n                        .multiplyScalar(-1)\n                        .toArray();\n\n                    width = state.previousNode.width;\n                    height = state.previousNode.height;\n                }\n\n                const transform: Transform = new Transform(\n                    state.currentNode.orientation,\n                    width,\n                    height,\n                    state.currentNode.focal,\n                    state.currentNode.scale,\n                    previousNode.gpano,\n                    rotation,\n                    translation,\n                    previousNode.image,\n                    textureScale);\n\n                let mesh: THREE.Mesh = undefined;\n\n                if (previousNode.fullPano) {\n                    mesh = this._factory.createMesh(\n                        previousNode,\n                        motionless || state.currentNode.fullPano ? transform : state.previousTransform);\n                } else {\n                    if (motionless) {\n                        const [[basicX0, basicY0], [basicX1, basicY1]]: number[][] = this._getBasicCorners(currentAspect, previousAspect);\n\n                        mesh = this._factory.createFlatMesh(\n                            state.previousNode,\n                            transform,\n                            basicX0,\n                            basicX1,\n                            basicY0,\n                            basicY1);\n                    } else {\n                        mesh = this._factory.createMesh(state.previousNode, state.previousTransform);\n                    }\n                }\n\n                const previousPlanes: { [key: string]: THREE.Mesh } = {};\n                previousPlanes[previousNode.key] = mesh;\n                this._scene.setImagePlanesOld(previousPlanes);\n            }\n        }\n\n        if (currentChanged || modeChanged) {\n            if (this._currentKey in this._currentProviderDisposers) {\n                this._currentProviderDisposers[this._currentKey]();\n\n                delete this._currentProviderDisposers[this._currentKey];\n            }\n\n            this._currentKey = state.currentNode.key;\n\n            const planes: { [key: string]: THREE.Mesh } = {};\n\n            if (state.currentNode.fullPano) {\n                planes[state.currentNode.key] = this._factory.createCurtainMesh(state.currentNode, state.currentTransform);\n            } else if (state.currentNode.pano && !state.currentNode.fullPano) {\n                planes[state.currentNode.key] = this._factory.createMesh(state.currentNode, state.currentTransform);\n            } else {\n                if (motionless) {\n                    planes[state.currentNode.key] = this._factory.createDistortedCurtainMesh(state.currentNode, state.currentTransform);\n                } else {\n                    planes[state.currentNode.key] = this._factory.createCurtainMesh(state.currentNode, state.currentTransform);\n                }\n            }\n\n            this._scene.setImagePlanes(planes);\n\n            this._updateCurtain();\n        }\n    }\n\n    private _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    private _updateTexturePrev(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planesOld;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n}\n\nexport default SliderGLRenderer;\n",
+    "import * as geohash from \"latlon-geohash\";\n\nimport {\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    zip as observableZip,\n    Observable,\n    Subscriber,\n} from \"rxjs\";\n\nimport {\n    mergeMap,\n    catchError,\n    tap,\n    publish,\n    refCount,\n    finalize,\n    map,\n    filter,\n} from \"rxjs/operators\";\n\nimport {\n    IGPano,\n    ILatLon,\n} from \"../../API\";\nimport {\n    IReconstruction,\n} from \"../../Component\";\nimport {\n    AbortMapillaryError,\n} from \"../../Error\";\nimport {\n    GraphService,\n    Node,\n} from \"../../Graph\";\nimport {\n    Urls,\n} from \"../../Utils\";\nimport { CameraProjection } from \"../../api/interfaces/CameraProjection\";\n\nexport type NodeData = {\n    alt: number;\n    cameraProjection: CameraProjection;\n    focal: number;\n    gpano: IGPano;\n    height: number;\n    k1: number;\n    k2: number;\n    key: string,\n    lat: number;\n    lon: number;\n    mergeCC: number;\n    orientation: number;\n    originalLat: number;\n    originalLon: number;\n    rotation: number[];\n    scale: number;\n    width: number;\n};\n\nexport type ReconstructionData = {\n    data: NodeData,\n    reconstruction: IReconstruction,\n};\n\nexport class SpatialDataCache {\n    private _graphService: GraphService;\n\n    private _cacheRequests: { [hash: string]: XMLHttpRequest[] };\n    private _reconstructions: { [hash: string]: ReconstructionData[] };\n    private _tiles: { [hash: string]: NodeData[] };\n\n    private _cachingReconstructions$: { [hash: string]: Observable<ReconstructionData> };\n    private _cachingTiles$: { [hash: string]: Observable<NodeData[]> };\n\n    constructor(graphService: GraphService) {\n        this._graphService = graphService;\n\n        this._tiles = {};\n        this._cacheRequests = {};\n        this._reconstructions = {};\n\n        this._cachingReconstructions$ = {};\n        this._cachingTiles$ = {};\n    }\n\n    public cacheReconstructions$(hash: string): Observable<ReconstructionData> {\n        if (!this.hasTile(hash)) {\n            throw new Error(\"Cannot cache reconstructions of a non-existing tile.\");\n        }\n\n        if (this.hasReconstructions(hash)) {\n            throw new Error(\"Cannot cache reconstructions that already exists.\");\n        }\n\n        if (this.isCachingReconstructions(hash)) {\n            return this._cachingReconstructions$[hash];\n        }\n\n        const tile: NodeData[] = [];\n\n        if (hash in this._reconstructions) {\n            const reconstructionKeys: string[] =\n                this.getReconstructions(hash)\n                    .map(\n                        (reconstruction: ReconstructionData): string => {\n                            return reconstruction.data.key;\n                        });\n\n            for (const node of this.getTile(hash)) {\n                if (reconstructionKeys.indexOf(node.key) === -1) {\n                    tile.push(node);\n                }\n            }\n        } else {\n            tile.push(...this.getTile(hash));\n\n            this._reconstructions[hash] = [];\n        }\n\n        this._cacheRequests[hash] = [];\n        this._cachingReconstructions$[hash] = observableFrom(tile).pipe(\n            mergeMap(\n                (nodeData: NodeData): Observable<[NodeData, IReconstruction]> => {\n                    return !this._cacheRequests[hash] ?\n                        observableEmpty() :\n                        observableZip(\n                            observableOf(nodeData),\n                            this._getAtomicReconstruction(nodeData.key, this._cacheRequests[hash]))\n                            .pipe(\n                                catchError(\n                                    (error: Error): Observable<[NodeData, IReconstruction]> => {\n                                        if (error instanceof AbortMapillaryError) {\n                                            return observableEmpty();\n                                        }\n\n                                        console.error(error);\n\n                                        return observableOf(<[NodeData, IReconstruction]>[nodeData, null]);\n                                    }));\n                },\n                6),\n            map(\n                ([nodeData, reconstruction]: [NodeData, IReconstruction]): ReconstructionData => {\n                    return { data: nodeData, reconstruction: reconstruction };\n                }),\n            filter(\n                (): boolean => {\n                    return hash in this._reconstructions;\n                }),\n            tap(\n                (data: ReconstructionData): void => {\n                    this._reconstructions[hash].push(data);\n                }),\n            filter(\n                (data: ReconstructionData): boolean => {\n                    return !!data.reconstruction;\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingReconstructions$) {\n                        delete this._cachingReconstructions$[hash];\n                    }\n\n                    if (hash in this._cacheRequests) {\n                        delete this._cacheRequests[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingReconstructions$[hash];\n    }\n\n    public cacheTile$(hash: string): Observable<NodeData[]> {\n        if (hash.length !== 8) {\n            throw new Error(\"Hash needs to be level 8.\");\n        }\n\n        if (this.hasTile(hash)) {\n            throw new Error(\"Cannot cache tile that already exists.\");\n\n        }\n\n        if (this.hasTile(hash)) {\n            return this._cachingTiles$[hash];\n        }\n\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n        const sw: ILatLon = { lat: bounds.sw.lat, lon: bounds.sw.lon };\n        const ne: ILatLon = { lat: bounds.ne.lat, lon: bounds.ne.lon };\n\n        this._tiles[hash] = [];\n        this._cachingTiles$[hash] = this._graphService.cacheBoundingBox$(sw, ne).pipe(\n            catchError(\n                (error: Error): Observable<Node[]> => {\n                    console.error(error);\n\n                    delete this._tiles[hash];\n\n                    return observableEmpty();\n                }),\n            map(\n                (nodes: Node[]): NodeData[] => {\n                    return nodes\n                        .map(\n                            (n: Node): NodeData => {\n                                return this._createNodeData(n);\n                            });\n                }),\n            filter(\n                (): boolean => {\n                    return hash in this._tiles;\n                }),\n            tap(\n                (nodeData: NodeData[]): void => {\n                    this._tiles[hash].push(...nodeData);\n\n                    delete this._cachingTiles$[hash];\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingTiles$) {\n                        delete this._cachingTiles$[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingTiles$[hash];\n    }\n\n    public isCachingReconstructions(hash: string): boolean {\n        return hash in this._cachingReconstructions$;\n    }\n\n    public isCachingTile(hash: string): boolean {\n        return hash in this._cachingTiles$;\n    }\n\n    public hasReconstructions(hash: string): boolean {\n        return !(hash in this._cachingReconstructions$) &&\n            hash in this._reconstructions &&\n            this._reconstructions[hash].length === this._tiles[hash].length;\n    }\n\n    public hasTile(hash: string): boolean {\n        return !(hash in this._cachingTiles$) && hash in this._tiles;\n    }\n\n    public getReconstructions(hash: string): ReconstructionData[] {\n        return hash in this._reconstructions ?\n            this._reconstructions[hash]\n                .filter(\n                    (data: ReconstructionData): boolean => {\n                        return !!data.reconstruction;\n                    }) :\n            [];\n    }\n\n    public getTile(hash: string): NodeData[] {\n        return hash in this._tiles ? this._tiles[hash] : [];\n    }\n\n    public uncache(keepHashes?: string[]): void {\n        for (let hash of Object.keys(this._cacheRequests)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            for (const request of this._cacheRequests[hash]) {\n                request.abort();\n            }\n\n            delete this._cacheRequests[hash];\n        }\n\n        for (let hash of Object.keys(this._reconstructions)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            delete this._reconstructions[hash];\n        }\n\n        for (let hash of Object.keys(this._tiles)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            delete this._tiles[hash];\n        }\n    }\n\n    private _createNodeData(node: Node): NodeData {\n        return {\n            alt: node.alt,\n            cameraProjection: node.cameraProjection,\n            focal: node.focal,\n            gpano: node.gpano,\n            height: node.height,\n            k1: node.ck1,\n            k2: node.ck2,\n            key: node.key,\n            lat: node.latLon.lat,\n            lon: node.latLon.lon,\n            mergeCC: node.mergeCC,\n            orientation: node.orientation,\n            originalLat: node.originalLatLon.lat,\n            originalLon: node.originalLatLon.lon,\n            rotation: [node.rotation[0], node.rotation[1], node.rotation[2]],\n            scale: node.scale,\n            width: node.width,\n        };\n    }\n\n    private _getAtomicReconstruction(key: string, requests: XMLHttpRequest[]): Observable<IReconstruction> {\n        return Observable.create(\n            (subscriber: Subscriber<IReconstruction>): void => {\n                const xmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n\n                xmlHTTP.open(\"GET\", Urls.atomicReconstruction(key), true);\n                xmlHTTP.responseType = \"json\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = () => {\n                    if (!xmlHTTP.response) {\n                        subscriber.error(new Error(`Atomic reconstruction does not exist (${key})`));\n                    } else {\n                        subscriber.next(xmlHTTP.response);\n                        subscriber.complete();\n                    }\n                };\n\n                xmlHTTP.onerror = () => {\n                    subscriber.error(new Error(`Failed to get atomic reconstruction (${key})`));\n                };\n\n                xmlHTTP.ontimeout = () => {\n                    subscriber.error(new Error(`Atomic reconstruction request timed out (${key})`));\n                };\n\n                xmlHTTP.onabort = () => {\n                    subscriber.error(new AbortMapillaryError(`Atomic reconstruction request was aborted (${key})`));\n                };\n\n                requests.push(xmlHTTP);\n\n                xmlHTTP.send(null);\n            });\n    }\n}\n\nexport default SpatialDataCache;\n",
+    "import * as geohash from \"latlon-geohash\";\n\nimport {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    catchError,\n    withLatestFrom,\n    map,\n    distinctUntilChanged,\n    concatMap,\n    switchMap,\n    tap,\n    filter,\n    last,\n    mergeMap,\n    first,\n    refCount,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    ISpatialDataConfiguration,\n    NodeData,\n    ReconstructionData,\n    SpatialDataCache,\n    SpatialDataScene,\n} from \"../../Component\";\nimport {\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IGLRenderHash,\n    GLRenderStage,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport PlayService from \"../../viewer/PlayService\";\nimport State from \"../../state/State\";\n\nexport class SpatialDataComponent extends Component<ISpatialDataConfiguration> {\n    public static componentName: string = \"spatialData\";\n\n    private _cache: SpatialDataCache;\n    private _scene: SpatialDataScene;\n    private _viewportCoords: ViewportCoords;\n    private _geoCoords: GeoCoords;\n\n    private _addSubscription: Subscription;\n    private _cameraVisibilitySubscription: Subscription;\n    private _earthControlsSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _pointVisibilitySubscription: Subscription;\n    private _positionVisibilitySubscription: Subscription;\n    private _renderSubscription: Subscription;\n    private _tileVisibilitySubscription: Subscription;\n    private _uncacheSubscription: Subscription;\n    private _visualizeConnectedComponentSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._cache = new SpatialDataCache(navigator.graphService);\n        this._scene = new SpatialDataScene(this._getDefaultConfiguration());\n        this._viewportCoords = new ViewportCoords();\n        this._geoCoords = new GeoCoords();\n    }\n\n    protected _activate(): void {\n        this._earthControlsSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.earthControls;\n                }),\n            distinctUntilChanged(),\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([earth, state]: [boolean, State]): void => {\n                    if (earth && state !== State.Earth) {\n                        this._navigator.stateService.earth();\n                    } else if (!earth && state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        const direction$: Observable<string> = this._container.renderService.bearing$.pipe(\n            map(\n                (bearing: number): string => {\n                    let direction: string = \"\";\n\n                    if (bearing > 292.5 || bearing <= 67.5) {\n                        direction += \"n\";\n                    }\n\n                    if (bearing > 112.5 && bearing <= 247.5) {\n                        direction += \"s\";\n                    }\n\n                    if (bearing > 22.5 && bearing <= 157.5) {\n                        direction += \"e\";\n                    }\n\n                    if (bearing > 202.5 && bearing <= 337.5) {\n                        direction += \"w\";\n                    }\n\n                    return direction;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        const hash$: Observable<string> = this._navigator.stateService.reference$.pipe(\n            tap(\n                (): void => {\n                    this._scene.uncache();\n                }),\n            switchMap(\n                (): Observable<string> => {\n                    return this._navigator.stateService.currentNode$.pipe(\n                        map(\n                            (node: Node): string => {\n                                return geohash.encode(node.latLon.lat, node.latLon.lon, 8);\n                            }),\n                        distinctUntilChanged());\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequencePlay$: Observable<boolean> = observableCombineLatest(\n            this._navigator.playService.playing$,\n            this._navigator.playService.speed$).pipe(\n            map(\n                ([playing, speed]: [boolean, number]): boolean => {\n                    return playing && speed > PlayService.sequenceSpeed;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._addSubscription = observableCombineLatest(\n            this._navigator.stateService.state$.pipe(\n                map(\n                    (state: State): boolean => {\n                        return state === State.Earth;\n                    }),\n                distinctUntilChanged()),\n            hash$,\n            sequencePlay$,\n            direction$).pipe(\n            distinctUntilChanged(\n                (\n                    [e1, h1, s1, d1]: [boolean, string, boolean, string],\n                    [e2, h2, s2, d2]: [boolean, string, boolean, string]): boolean => {\n\n                    if (e1 !== e2) {\n                        return false;\n                    }\n\n                    if (e1) {\n                        return h1 === h2 && s1 === s2;\n                    }\n\n                    return h1 === h2 && s1 === s2 && d1 === d2;\n                }),\n            concatMap(\n                ([earth, hash, sequencePlay, direction]: [boolean, string, boolean, string]): Observable<string[]> => {\n                    if (earth) {\n                        return sequencePlay ?\n                            observableOf([hash]) :\n                            observableOf(this._adjacentComponent(hash, 4));\n                    }\n\n                    return sequencePlay ?\n                        observableOf([hash, geohash.neighbours(hash)[<keyof geohash.Neighbours>direction]]) :\n                        observableOf(this._computeTiles(hash, direction));\n                }),\n            switchMap(\n                (hashes: string[]): Observable<string> => {\n                    return observableFrom(hashes).pipe(\n                        mergeMap(\n                            (h: string): Observable<[string, NodeData[]]> => {\n                                let tile$: Observable<NodeData[]>;\n\n                                if (this._cache.hasTile(h)) {\n                                    tile$ = observableOf(this._cache.getTile(h));\n                                } else if (this._cache.isCachingTile(h)) {\n                                    tile$ = this._cache.cacheTile$(h).pipe(\n                                        last(null, {}),\n                                        switchMap(\n                                            (): Observable<NodeData[]> => {\n                                                return observableOf(this._cache.getTile(h));\n                                            }));\n                                } else {\n                                    tile$ = this._cache.cacheTile$(h);\n                                }\n\n                                return observableCombineLatest(observableOf(h), tile$);\n                            },\n                            1),\n                        map(\n                            ([hash]: [string, NodeData[]]): string => {\n                                return hash;\n                            }));\n                }),\n            concatMap(\n                (hash: string): Observable<[string, ReconstructionData]> => {\n                    let reconstructions$: Observable<ReconstructionData>;\n\n                    if (this._cache.hasReconstructions(hash)) {\n                        reconstructions$ = observableFrom(this._cache.getReconstructions(hash));\n                    } else if (this._cache.isCachingReconstructions(hash)) {\n                        reconstructions$ = this._cache.cacheReconstructions$(hash).pipe(\n                            last(null, {}),\n                            switchMap(\n                                (): Observable<ReconstructionData> => {\n                                    return observableFrom(this._cache.getReconstructions(hash));\n                                }));\n                    } else if (this._cache.hasTile(hash)) {\n                        reconstructions$ = this._cache.cacheReconstructions$(hash);\n                    } else {\n                        reconstructions$ = observableEmpty();\n                    }\n\n                    return observableCombineLatest(observableOf(hash), reconstructions$);\n                }),\n            withLatestFrom(this._navigator.stateService.reference$),\n            tap(\n                ([[hash], reference]: [[string, ReconstructionData], ILatLonAlt]): boolean => {\n                    if (this._scene.hasTile(hash)) {\n                        return;\n                    }\n\n                    this._scene.addTile(this._computeTileBBox(hash, reference), hash);\n                }),\n            filter(\n                ([[hash, data]]: [[string, ReconstructionData], ILatLonAlt]): boolean => {\n                    return !this._scene.hasReconstruction(data.reconstruction.main_shot, hash);\n                }),\n            map(\n                ([[hash, data], reference]: [[string, ReconstructionData], ILatLonAlt]):\n                [ReconstructionData, Transform, number[], string] => {\n                    return [\n                        data,\n                        this._createTransform(data.data, reference),\n                        this._computeOriginalPosition(data.data, reference),\n                        hash];\n                }))\n            .subscribe(\n                ([data, transform, position, hash]: [ReconstructionData, Transform, number[], string]): void => {\n                    this._scene.addReconstruction(\n                        data.reconstruction,\n                        transform,\n                        position,\n                        !!data.data.mergeCC ? data.data.mergeCC.toString() : \"\",\n                        hash);\n                });\n\n        this._cameraVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.camerasVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setCameraVisibility(visible);\n                });\n\n        this._pointVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.pointsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPointVisibility(visible);\n                });\n\n        this._positionVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.positionsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPositionVisibility(visible);\n                });\n\n        this._tileVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.tilesVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setTileVisibility(visible);\n                });\n\n        this._visualizeConnectedComponentSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.connectedComponents;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visualize: boolean): void => {\n                    this._scene.setConnectedComponentVisualization(visualize);\n                });\n\n        this._uncacheSubscription = hash$\n            .subscribe(\n                (hash: string): void => {\n                    const keepHashes: string[] = this._adjacentComponent(hash, 4);\n                    this._scene.uncache(keepHashes);\n                    this._cache.uncache(keepHashes);\n                });\n\n        this._moveSubscription = this._navigator.playService.playing$.pipe(\n            switchMap(\n                (playing: boolean): Observable<MouseEvent> => {\n                    return playing ?\n                        observableEmpty() :\n                        this._container.mouseService.dblClick$;\n                }),\n            withLatestFrom(this._container.renderService.renderCamera$),\n            switchMap(\n                ([event, render]: [MouseEvent, RenderCamera]): Observable<Node> => {\n                    const element: HTMLElement = this._container.element;\n                    const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n                    const viewport: number[] = this._viewportCoords.canvasToViewport(\n                        canvasX,\n                        canvasY,\n                        element);\n\n                    const key: string = this._scene.intersectObjects(viewport, render.perspective);\n\n                    return !!key ?\n                        this._navigator.moveToKey$(key).pipe(\n                            catchError(\n                                (): Observable<Node> => {\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe();\n\n        this._renderSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const scene: SpatialDataScene = this._scene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: scene.needsRender,\n                            render: scene.render.bind(scene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._cache.uncache();\n        this._scene.uncache();\n\n        this._addSubscription.unsubscribe();\n        this._cameraVisibilitySubscription.unsubscribe();\n        this._earthControlsSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._pointVisibilitySubscription.unsubscribe();\n        this._positionVisibilitySubscription.unsubscribe();\n        this._renderSubscription.unsubscribe();\n        this._tileVisibilitySubscription.unsubscribe();\n        this._uncacheSubscription.unsubscribe();\n        this._visualizeConnectedComponentSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n    }\n\n    protected _getDefaultConfiguration(): ISpatialDataConfiguration {\n        return { camerasVisible: false, pointsVisible: true, positionsVisible: false, tilesVisible: false };\n    }\n\n    private _adjacentComponent(hash: string, depth: number): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        hashSet.add(hash);\n\n        this._adjacentComponentRecursive(hashSet, [hash], 0, depth);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _adjacentComponentRecursive(\n        hashSet: Set<string>,\n        currentHashes: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: string[] = [];\n\n        for (const hash of currentHashes) {\n            const hashNeighbours: geohash.Neighbours = geohash.neighbours(hash);\n\n            for (const direction in hashNeighbours) {\n                if (!hashNeighbours.hasOwnProperty(direction)) {\n                    continue;\n                }\n\n                neighbours.push(hashNeighbours[<keyof geohash.Neighbours>direction]);\n            }\n        }\n\n        const newHashes: string[] = [];\n        for (const neighbour of neighbours) {\n            if (!hashSet.has(neighbour)) {\n                hashSet.add(neighbour);\n                newHashes.push(neighbour);\n            }\n        }\n\n        this._adjacentComponentRecursive(hashSet, newHashes, currentDepth + 1, maxDepth);\n    }\n\n    private _computeOriginalPosition(data: NodeData, reference: ILatLonAlt): number[] {\n        return this._geoCoords.geodeticToEnu(\n            data.originalLat,\n            data.originalLon,\n            data.alt,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n    }\n\n    private _computeTileBBox(hash: string, reference: ILatLonAlt): number[][] {\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n\n        const sw: number[] = this._geoCoords.geodeticToEnu(\n            bounds.sw.lat,\n            bounds.sw.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        const ne: number[] = this._geoCoords.geodeticToEnu(\n            bounds.ne.lat,\n            bounds.ne.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        return [sw, ne];\n    }\n\n    private _createTransform(data: NodeData, reference: ILatLonAlt): Transform {\n        const translation: number[] = Geo.computeTranslation(\n            { alt: data.alt, lat: data.lat, lon: data.lon },\n            data.rotation,\n            reference);\n\n        const transform: Transform = new Transform(\n            data.orientation,\n            data.width,\n            data.height,\n            data.focal,\n            data.scale,\n            data.gpano,\n            data.rotation,\n            translation,\n            undefined,\n            undefined,\n            data.k1,\n            data.k2,\n            data.cameraProjection);\n\n        return transform;\n    }\n\n    private _computeTiles(hash: string, direction: string): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        const directions: string[] = [\"n\", \"ne\", \"e\", \"se\", \"s\", \"sw\", \"w\", \"nw\"];\n\n        this._computeTilesRecursive(hashSet, hash, direction, directions, 0, 2);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _computeTilesRecursive(\n        hashSet: Set<string>,\n        currentHash: string,\n        direction: string,\n        directions: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        hashSet.add(currentHash);\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: geohash.Neighbours = geohash.neighbours(currentHash);\n        const directionIndex: number = directions.indexOf(direction);\n        const length: number = directions.length;\n\n        const directionNeighbours: string[] = [\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex - 1), length)]],\n            neighbours[<keyof geohash.Neighbours>direction],\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex + 1), length)]],\n        ];\n\n        for (let directionNeighbour of directionNeighbours) {\n            this._computeTilesRecursive(hashSet, directionNeighbour, direction, directions, currentDepth + 1, maxDepth);\n        }\n    }\n\n    private _modulo(a: number, n: number): number {\n        return ((a % n) + n) % n;\n    }\n\n    private _setToArray<T>(s: Set<T>): T[] {\n        const a: T[] = [];\n\n        s.forEach(\n            (value: T) => {\n                a.push(value);\n            });\n\n        return a;\n    }\n}\n\nComponentService.register(SpatialDataComponent);\nexport default SpatialDataComponent;\n",
     "import * as THREE from \"three\";\n\nimport {\n    IReconstruction,\n    IReconstructionPoint,\n    ISpatialDataConfiguration,\n} from \"../../Component\";\nimport {\n    Transform,\n} from \"../../Geo\";\n\nexport class SpatialDataScene {\n    private _scene: THREE.Scene;\n    private _raycaster: THREE.Raycaster;\n\n    private _connectedComponentColors: { [id: string]: string };\n    private _needsRender: boolean;\n    private _interactiveObjects: THREE.Object3D[];\n    private _reconstructions: {\n        [hash: string]: {\n            cameraKeys: { [id: string]: string };\n            cameras: THREE.Object3D;\n            connectedComponents: { [id: string]: THREE.Object3D[] };\n            keys: string[];\n            points: THREE.Object3D;\n            positions: THREE.Object3D;\n        };\n    };\n\n    private _tiles: { [hash: string]: THREE.Object3D };\n\n    private _camerasVisible: boolean;\n    private _pointsVisible: boolean;\n    private _positionsVisible: boolean;\n    private _tilesVisible: boolean;\n    private _visualizeConnectedComponents: boolean;\n\n    constructor(configuration: ISpatialDataConfiguration, scene?: THREE.Scene, raycaster?: THREE.Raycaster) {\n        this._scene = !!scene ? scene : new THREE.Scene();\n        this._raycaster = !!raycaster ? raycaster : new THREE.Raycaster(undefined, undefined, 0.8);\n\n        this._connectedComponentColors = {};\n        this._needsRender = false;\n        this._interactiveObjects = [];\n        this._reconstructions = {};\n        this._tiles = {};\n\n        this._camerasVisible = configuration.camerasVisible;\n        this._pointsVisible = configuration.pointsVisible;\n        this._positionsVisible = configuration.positionsVisible;\n        this._tilesVisible = configuration.tilesVisible;\n        this._visualizeConnectedComponents = configuration.connectedComponents;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public addReconstruction(\n        reconstruction: IReconstruction,\n        transform: Transform,\n        originalPosition: number[],\n        connectedComponent: string,\n        hash: string): void {\n\n        if (!(hash in this._reconstructions)) {\n            this._reconstructions[hash] = {\n                cameraKeys: {},\n                cameras: new THREE.Object3D(),\n                connectedComponents: {},\n                keys: [],\n                points: new THREE.Object3D(),\n                positions: new THREE.Object3D(),\n            };\n\n            this._reconstructions[hash].cameras.visible = this._camerasVisible;\n            this._reconstructions[hash].points.visible = this._pointsVisible;\n            this._reconstructions[hash].positions.visible = this._positionsVisible;\n\n            this._scene.add(\n                this._reconstructions[hash].cameras,\n                this._reconstructions[hash].points,\n                this._reconstructions[hash].positions);\n        }\n\n        if (!(connectedComponent in this._reconstructions[hash].connectedComponents)) {\n            this._reconstructions[hash].connectedComponents[connectedComponent] = [];\n        }\n\n        if (transform.hasValidScale) {\n            this._reconstructions[hash].points.add(this._createPoints(reconstruction, transform));\n        }\n\n        const camera: THREE.Object3D = this._createCamera(transform);\n        this._reconstructions[hash].cameras.add(camera);\n        for (const child of camera.children) {\n            this._reconstructions[hash].cameraKeys[child.uuid] = reconstruction.main_shot;\n            this._interactiveObjects.push(child);\n        }\n\n        this._reconstructions[hash].connectedComponents[connectedComponent].push(camera);\n\n        const color: string = this._getColor(connectedComponent, this._visualizeConnectedComponents);\n        this._setCameraColor(color, camera);\n\n        this._reconstructions[hash].positions.add(this._createPosition(transform, originalPosition));\n\n        this._reconstructions[hash].keys.push(reconstruction.main_shot);\n\n        this._needsRender = true;\n    }\n\n    public addTile(tileBBox: number[][], hash: string): void {\n        if (this.hasTile(hash)) {\n            return;\n        }\n\n        const sw: number[] = tileBBox[0];\n        const ne: number[] = tileBBox[1];\n\n        const geometry: THREE.Geometry = new THREE.Geometry();\n        geometry.vertices.push(\n            new THREE.Vector3().fromArray(sw),\n            new THREE.Vector3(sw[0], ne[1], (sw[2] + ne[2]) / 2),\n            new THREE.Vector3().fromArray(ne),\n            new THREE.Vector3(ne[0], sw[1], (sw[2] + ne[2]) / 2),\n            new THREE.Vector3().fromArray(sw));\n\n        const tile: THREE.Object3D = new THREE.Line(geometry, new THREE.LineBasicMaterial());\n\n        this._tiles[hash] = new THREE.Object3D();\n        this._tiles[hash].visible = this._tilesVisible;\n        this._tiles[hash].add(tile);\n        this._scene.add(this._tiles[hash]);\n\n        this._needsRender = true;\n    }\n\n    public uncache(keepHashes?: string[]): void {\n        for (const hash of Object.keys(this._reconstructions)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            this._disposeReconstruction(hash);\n        }\n\n        for (const hash of Object.keys(this._tiles)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            this._disposeTile(hash);\n        }\n\n        this._needsRender = true;\n    }\n\n    public hasReconstruction(key: string, hash: string): boolean {\n        return hash in this._reconstructions && this._reconstructions[hash].keys.indexOf(key) !== -1;\n    }\n\n    public hasTile(hash: string): boolean {\n        return hash in this._tiles;\n    }\n\n    public intersectObjects([viewportX, viewportY]: number[], camera: THREE.Camera): string {\n        if (!this._camerasVisible) {\n            return null;\n        }\n\n        this._raycaster.setFromCamera(new THREE.Vector2(viewportX, viewportY), camera);\n\n        const intersects: THREE.Intersection[] = this._raycaster.intersectObjects(this._interactiveObjects);\n        for (const intersect of intersects) {\n            for (const hash in this._reconstructions) {\n                if (!this._reconstructions.hasOwnProperty(hash)) {\n                    continue;\n                }\n\n                if (intersect.object.uuid in this._reconstructions[hash].cameraKeys) {\n                    return this._reconstructions[hash].cameraKeys[intersect.object.uuid];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    public setCameraVisibility(visible: boolean): void {\n        if (visible === this._camerasVisible) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._reconstructions[hash].cameras.visible = visible;\n        }\n\n        this._camerasVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setPointVisibility(visible: boolean): void {\n        if (visible === this._pointsVisible) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._reconstructions[hash].points.visible = visible;\n        }\n\n        this._pointsVisible = visible;\n        this._needsRender = true;\n\n    }\n\n    public setPositionVisibility(visible: boolean): void {\n        if (visible === this._positionsVisible) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._reconstructions[hash].positions.visible = visible;\n        }\n\n        this._positionsVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setTileVisibility(visible: boolean): void {\n        if (visible === this._tilesVisible) {\n            return;\n        }\n\n        for (const hash in this._tiles) {\n            if (!this._tiles.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._tiles[hash].visible = visible;\n        }\n\n        this._tilesVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setConnectedComponentVisualization(visualize: boolean): void {\n        if (visualize === this._visualizeConnectedComponents) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            const connectedComponents: { [id: number]: THREE.Object3D[] } =\n                this._reconstructions[hash].connectedComponents;\n\n            for (const connectedComponent in connectedComponents) {\n                if (!connectedComponents.hasOwnProperty(connectedComponent)) {\n                    continue;\n                }\n\n                const color: string = this._getColor(connectedComponent, visualize);\n\n                for (const camera of connectedComponents[connectedComponent]) {\n                    this._setCameraColor(color, camera);\n                }\n            }\n        }\n\n        this._visualizeConnectedComponents = visualize;\n        this._needsRender = true;\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        renderer.render(this._scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    private _arrayToFloatArray(a: number[][], columns: number): Float32Array {\n        const n: number = a.length;\n        const f: Float32Array = new Float32Array(n * columns);\n\n        for (let i: number = 0; i < n; i++) {\n            const item: number[] = a[i];\n            const index: number = 3 * i;\n\n            f[index + 0] = item[0];\n            f[index + 1] = item[1];\n            f[index + 2] = item[2];\n        }\n\n        return f;\n    }\n\n    private _createAxis(transform: Transform): THREE.Object3D {\n        const north: number[] = transform.unprojectBasic([0.5, 0], 0.22);\n        const south: number[] = transform.unprojectBasic([0.5, 1], 0.16);\n\n        const axis: THREE.BufferGeometry = new THREE.BufferGeometry();\n        axis.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray([north, south], 3), 3));\n\n        return new THREE.Line(axis, new THREE.LineBasicMaterial());\n    }\n\n    private _createCamera(transform: Transform): THREE.Object3D {\n        return !!transform.gpano ?\n            this._createPanoCamera(transform) :\n            this._createPrespectiveCamera(transform);\n    }\n\n    private _createDiagonals(transform: Transform, depth: number): THREE.Object3D {\n        const origin: number [] = transform.unprojectBasic([0, 0], 0, true);\n        const topLeft: number[] = transform.unprojectBasic([0, 0], depth, true);\n        const topRight: number[] = transform.unprojectBasic([1, 0], depth, true);\n        const bottomRight: number[] = transform.unprojectBasic([1, 1], depth, true);\n        const bottomLeft: number[] = transform.unprojectBasic([0, 1], depth, true);\n\n        const vertices: number[][] = [\n            origin, topLeft,\n            origin, topRight,\n            origin, bottomRight,\n            origin, bottomLeft,\n        ];\n\n        const diagonals: THREE.BufferGeometry = new THREE.BufferGeometry();\n        diagonals.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices, 3), 3));\n\n        return new THREE.LineSegments(diagonals, new THREE.LineBasicMaterial());\n    }\n\n    private _createFrame(transform: Transform, depth: number): THREE.Object3D {\n        const vertices2d: number[][] = [];\n        vertices2d.push(...this._subsample([0, 1], [0, 0], 20));\n        vertices2d.push(...this._subsample([0, 0], [1, 0], 20));\n        vertices2d.push(...this._subsample([1, 0], [1, 1], 20));\n\n        const vertices3d: number[][] = vertices2d\n            .map(\n                (basic: number[]): number[] => {\n                    return transform.unprojectBasic(basic, depth, true);\n                });\n\n        const frame: THREE.BufferGeometry = new THREE.BufferGeometry();\n        frame.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices3d, 3), 3));\n\n        return new THREE.Line(frame, new THREE.LineBasicMaterial());\n    }\n\n    private _createLatitude(basicY: number, numVertices: number, transform: Transform): THREE.Object3D {\n        const positions: Float32Array = new Float32Array((numVertices + 1) * 3);\n\n        for (let i: number = 0; i <= numVertices; i++) {\n            const position: number[] = transform.unprojectBasic([i / numVertices, basicY], 0.16);\n            const index: number = 3 * i;\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        const latitude: THREE.BufferGeometry = new THREE.BufferGeometry();\n        latitude.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        return new THREE.Line(latitude, new THREE.LineBasicMaterial());\n    }\n\n    private _createLongitude(basicX: number, numVertices: number, transform: Transform): THREE.Object3D {\n        const positions: Float32Array = new Float32Array((numVertices + 1) * 3);\n\n        for (let i: number = 0; i <= numVertices; i++) {\n            const position: number[] = transform.unprojectBasic([basicX, i / numVertices], 0.16);\n            const index: number = 3 * i;\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        const latitude: THREE.BufferGeometry = new THREE.BufferGeometry();\n        latitude.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        return new THREE.Line(latitude, new THREE.LineBasicMaterial());\n    }\n\n    private _createPanoCamera(transform: Transform): THREE.Object3D {\n        const camera: THREE.Object3D = new THREE.Object3D();\n\n        camera.children.push(this._createAxis(transform));\n        camera.children.push(this._createLatitude(0.5, 10, transform));\n        camera.children.push(this._createLongitude(0, 6, transform));\n        camera.children.push(this._createLongitude(0.25, 6, transform));\n        camera.children.push(this._createLongitude(0.5, 6, transform));\n        camera.children.push(this._createLongitude(0.75, 6, transform));\n\n        return camera;\n    }\n\n    private _createPoints(reconstruction: IReconstruction, transform: Transform): THREE.Object3D {\n        const srtInverse: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n        const points: IReconstructionPoint[] = Object\n            .keys(reconstruction.points)\n            .map(\n                (key: string): IReconstructionPoint => {\n                    return reconstruction.points[key];\n                });\n\n        const numPoints: number = points.length;\n        const positions: Float32Array = new Float32Array(numPoints * 3);\n        const colors: Float32Array = new Float32Array(numPoints * 3);\n\n        for (let i: number = 0; i < numPoints; i++) {\n            const index: number = 3 * i;\n\n            const coords: number[] = points[i].coordinates;\n            const point: THREE.Vector3 = new THREE.Vector3(coords[0], coords[1], coords[2])\n                .applyMatrix4(srtInverse);\n\n            positions[index + 0] = point.x;\n            positions[index + 1] = point.y;\n            positions[index + 2] = point.z;\n\n            const color: number[] = points[i].color;\n            colors[index + 0] = color[0] / 255.0;\n            colors[index + 1] = color[1] / 255.0;\n            colors[index + 2] = color[2] / 255.0;\n        }\n\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.addAttribute(\"color\", new THREE.BufferAttribute(colors, 3));\n\n        const material: THREE.PointsMaterial = new THREE.PointsMaterial({\n            size: 0.1,\n            vertexColors: THREE.VertexColors,\n        });\n\n        return new THREE.Points(geometry, material);\n    }\n\n    private _createPosition(transform: Transform, originalPosition: number[]): THREE.Object3D {\n        const computedPosition: number[] = transform.unprojectBasic([0, 0], 0);\n        const vertices: number[][] = [originalPosition, computedPosition];\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices, 3), 3));\n\n        return new THREE.Line(\n            geometry,\n            new THREE.LineBasicMaterial({ color: new THREE.Color(1, 0, 0) }));\n    }\n\n    private _createPrespectiveCamera(transform: Transform): THREE.Object3D {\n        const depth: number = 0.2;\n        const camera: THREE.Object3D = new THREE.Object3D();\n\n        camera.children.push(this._createDiagonals(transform, depth));\n        camera.children.push(this._createFrame(transform, depth));\n\n        return camera;\n    }\n\n    private _disposeCameras(hash: string): void {\n        const tileCameras: THREE.Object3D = this._reconstructions[hash].cameras;\n\n        for (const camera of tileCameras.children.slice()) {\n            for (const child of camera.children) {\n                (<THREE.Line>child).geometry.dispose();\n                (<THREE.Line>child).material.dispose();\n\n                const index: number = this._interactiveObjects.indexOf(child);\n                if (index !== -1) {\n                    this._interactiveObjects.splice(index, 1);\n                } else {\n                    console.warn(`Object does not exist (${child.id}) for ${hash}`);\n                }\n            }\n\n            tileCameras.remove(camera);\n        }\n\n        this._scene.remove(tileCameras);\n    }\n\n    private _disposePoints(hash: string): void {\n        const tilePoints: THREE.Object3D = this._reconstructions[hash].points;\n\n        for (const points of tilePoints.children.slice()) {\n            (<THREE.Points>points).geometry.dispose();\n            (<THREE.Points>points).material.dispose();\n\n            tilePoints.remove(points);\n        }\n\n        this._scene.remove(tilePoints);\n    }\n\n    private _disposePositions(hash: string): void {\n        const tilePositions: THREE.Object3D = this._reconstructions[hash].positions;\n\n        for (const position of tilePositions.children.slice()) {\n            (<THREE.Points>position).geometry.dispose();\n            (<THREE.Points>position).material.dispose();\n\n            tilePositions.remove(position);\n        }\n\n        this._scene.remove(tilePositions);\n    }\n\n    private _disposeReconstruction(hash: string): void {\n        this._disposeCameras(hash);\n        this._disposePoints(hash);\n        this._disposePositions(hash);\n\n        delete this._reconstructions[hash];\n    }\n\n    private _disposeTile(hash: string): void {\n        const tile: THREE.Object3D = this._tiles[hash];\n\n        for (const line of tile.children.slice()) {\n            (<THREE.Line>line).geometry.dispose();\n            (<THREE.Line>line).material.dispose();\n\n            tile.remove(line);\n        }\n\n        this._scene.remove(tile);\n\n        delete this._tiles[hash];\n    }\n\n    private _getColor(connectedComponent: string, visualizeConnectedComponents: boolean): string {\n        return visualizeConnectedComponents ?\n            this._getConnectedComponentColor(connectedComponent) :\n            \"#FFFFFF\";\n    }\n\n    private _getConnectedComponentColor(connectedComponent: string): string {\n        if (!(connectedComponent in this._connectedComponentColors)) {\n            this._connectedComponentColors[connectedComponent] = this._randomColor();\n        }\n\n        return this._connectedComponentColors[connectedComponent];\n    }\n\n    private _interpolate(a: number, b: number, alpha: number): number {\n        return a + alpha * (b - a);\n    }\n\n    private _randomColor(): string {\n        return `hsl(${Math.floor(360 * Math.random())}, 100%, 65%)`;\n    }\n\n    private _setCameraColor(color: string, camera: THREE.Object3D): void {\n        for (const child of camera.children) {\n            (<THREE.LineBasicMaterial>(<THREE.Line>child).material).color = new THREE.Color(color);\n        }\n    }\n\n    private _subsample(p1: number[], p2: number[], subsamples: number): number[][] {\n        if (subsamples < 1) {\n            return [p1, p2];\n        }\n\n        const samples: number[][] = [];\n\n        for (let i: number = 0; i <= subsamples + 1; i++) {\n            const p: number[] = [];\n\n            for (let j: number = 0; j < 3; j++) {\n                p.push(this._interpolate(p1[j], p2[j], i / (subsamples + 1)));\n            }\n\n            samples.push(p);\n        }\n\n        return samples;\n    }\n}\n\nexport default SpatialDataScene;\n",
     "export {GeometryTagError} from \"./error/GeometryTagError\";\nexport {PointGeometry} from \"./geometry/PointGeometry\";\nexport {RectGeometry} from \"./geometry/RectGeometry\";\nexport {PolygonGeometry} from \"./geometry/PolygonGeometry\";\nexport {IOutlineTagOptions} from \"./interfaces/IOutlineTagOptions\";\nexport {OutlineTag} from \"./tag/OutlineTag\";\nexport {SpotTag} from \"./tag/SpotTag\";\nexport {TagDomain} from \"./tag/TagDomain\";\nexport {TagComponent} from \"./TagComponent\";\nexport {TagMode} from \"./TagMode\";\n",
-    "import {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    merge as observableMerge,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    startWith,\n    first,\n    tap,\n    map,\n    share,\n    skipWhile,\n    filter,\n    mergeMap,\n    refCount,\n    publishReplay,\n    switchMap,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as when from \"when\";\n\nimport {\n    ComponentService,\n    Component,\n    CreateHandlerBase,\n    CreatePointHandler,\n    CreatePolygonHandler,\n    CreateRectHandler,\n    CreateRectDragHandler,\n    EditVertexHandler,\n    Geometry,\n    ITagConfiguration,\n    OutlineCreateTag,\n    RenderTag,\n    Tag,\n    TagCreator,\n    TagDOMRenderer,\n    TagMode,\n    TagScene,\n    TagSet,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    ISpriteAtlas,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * @class TagComponent\n *\n * @classdesc Component for showing and editing tags with different\n * geometries composed from 2D basic image coordinates (see the\n * {@link Viewer} class documentation for more information about coordinate\n * systems).\n *\n * The `add` method is used for adding new tags or replacing\n * tags already in the set. Tags are removed by id.\n *\n * If a tag already in the set has the same\n * id as one of the tags added, the old tag will be removed and\n * the added tag will take its place.\n *\n * The tag component mode can be set to either be non interactive or\n * to be in creating mode of a certain geometry type.\n *\n * The tag properties can be updated at any time and the change will\n * be visibile immediately.\n *\n * Tags are only relevant to a single image because they are based on\n * 2D basic image coordinates. Tags related to a certain image should\n * be removed when the viewer is moved to another node.\n *\n * To retrive and use the tag component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\",\n *     { component: { tag: true } });\n *\n * var tagComponent = viewer.getComponent(\"tag\");\n * ```\n */\nexport class TagComponent extends Component<ITagConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"tag\";\n\n    /**\n     * Event fired when an interaction to create a geometry ends.\n     *\n     * @description A create interaction can by a geometry being created\n     * or by the creation being aborted.\n     *\n     * @event TagComponent#creategeometryend\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometryend\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometryend: string = \"creategeometryend\";\n\n    /**\n     * Event fired when an interaction to create a geometry starts.\n     *\n     * @description A create interaction starts when the first vertex\n     * is created in the geometry.\n     *\n     * @event TagComponent#creategeometrystart\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometrystart\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometrystart: string = \"creategeometrystart\";\n\n    /**\n     * Event fired when the create mode is changed.\n     *\n     * @event TagComponent#modechanged\n     * @type {TagMode} Tag mode\n     * @example\n     * ```\n     * tagComponent.on(\"modechanged\", function(mode) {\n     *     console.log(mode);\n     * });\n     * ```\n     */\n    public static modechanged: string = \"modechanged\";\n\n    /**\n     * Event fired when a geometry has been created.\n     *\n     * @event TagComponent#geometrycreated\n     * @type {Geometry} Created geometry.\n     * @example\n     * ```\n     * tagComponent.on(\"geometrycreated\", function(geometry) {\n     *     console.log(geometry);\n     * });\n     * ```\n     */\n    public static geometrycreated: string = \"geometrycreated\";\n\n    /**\n     * Event fired when the tags collection has changed.\n     *\n     * @event TagComponent#tagschanged\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"tagschanged\", function(component) {\n     *     console.log(component.getAll());\n     * });\n     * ```\n     */\n    public static tagschanged: string = \"tagschanged\";\n\n    private _tagDomRenderer: TagDOMRenderer;\n    private _tagScene: TagScene;\n    private _tagSet: TagSet;\n    private _tagCreator: TagCreator;\n    private _viewportCoords: ViewportCoords;\n\n    private _renderTags$: Observable<RenderTag<Tag>[]>;\n    private _tagChanged$: Observable<Tag>;\n    private _renderTagGLChanged$: Observable<RenderTag<Tag>>;\n    private _createGeometryChanged$: Observable<OutlineCreateTag>;\n    private _createGLObjectsChanged$: Observable<OutlineCreateTag>;\n\n    private _creatingConfiguration$: Observable<ITagConfiguration>;\n\n    private _updateGLObjectsSubscription: Subscription;\n    private _updateTagSceneSubscription: Subscription;\n\n    private _stopCreateSubscription: Subscription;\n    private _setGLCreateTagSubscription: Subscription;\n    private _createGLObjectsChangedSubscription: Subscription;\n\n    private _handlerStopCreateSubscription: Subscription;\n    private _handlerEnablerSubscription: Subscription;\n\n    private _domSubscription: Subscription;\n    private _glSubscription: Subscription;\n\n    private _fireCreateGeometryEventSubscription: Subscription;\n    private _fireGeometryCreatedSubscription: Subscription;\n    private _fireTagsChangedSubscription: Subscription;\n\n    private _createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase };\n    private _editVertexHandler: EditVertexHandler;\n\n    /** @ignore */\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._tagDomRenderer = new TagDOMRenderer();\n        this._tagScene = new TagScene();\n        this._tagSet = new TagSet();\n        this._tagCreator = new TagCreator(this, navigator);\n        this._viewportCoords = new ViewportCoords();\n\n        this._createHandlers = {\n            \"CreatePoint\": new CreatePointHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreatePolygon\": new CreatePolygonHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRect\": new CreateRectHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRectDrag\": new CreateRectDragHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"Default\": undefined,\n        };\n\n        this._editVertexHandler = new EditVertexHandler(this, container, navigator, this._viewportCoords, this._tagSet);\n\n        this._renderTags$ = this._tagSet.changed$.pipe(\n            map(\n                (tagSet: TagSet): RenderTag<Tag>[] => {\n                    const tags: RenderTag<Tag>[] = tagSet.getAll();\n\n                    // ensure that tags are always rendered in the same order\n                    // to avoid hover tracking problems on first resize.\n                    tags.sort(\n                        (t1: RenderTag<Tag>, t2: RenderTag<Tag>): number => {\n                            const id1: string = t1.tag.id;\n                            const id2: string = t2.tag.id;\n\n                            if (id1 < id2) {\n                                return -1;\n                            }\n\n                            if (id1 > id2) {\n                                return 1;\n                            }\n\n                            return 0;\n                        });\n\n                    return tags;\n                }),\n            share());\n\n        this._tagChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<Tag> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<Tag> => {\n                                return observableMerge(\n                                        tag.tag.changed$,\n                                        tag.tag.geometryChanged$);\n                            }));\n                }),\n            share());\n\n        this._renderTagGLChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<RenderTag<Tag>> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<RenderTag<Tag>> => {\n                                return tag.glObjectsChanged$;\n                            }));\n                }),\n            share());\n\n        this._createGeometryChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<OutlineCreateTag> => {\n                    return tag != null ?\n                        tag.geometryChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._createGLObjectsChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<OutlineCreateTag> => {\n                    return tag != null ?\n                        tag.glObjectsChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._creatingConfiguration$ = this._configuration$.pipe(\n            distinctUntilChanged(\n                (c1: ITagConfiguration, c2: ITagConfiguration): boolean => {\n                    return c1.mode === c2.mode;\n                },\n                (configuration: ITagConfiguration): ITagConfiguration => {\n                    return {\n                        createColor: configuration.createColor,\n                        mode: configuration.mode,\n                    };\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this.fire(TagComponent.modechanged, configuration.mode);\n                });\n    }\n\n    /**\n     * Add tags to the tag set or replace tags in the tag set.\n     *\n     * @description If a tag already in the set has the same\n     * id as one of the tags added, the old tag will be removed\n     * the added tag will take its place.\n     *\n     * @param {Array<Tag>} tags - Tags to add.\n     *\n     * @example ```tagComponent.add([tag1, tag2]);```\n     */\n    public add(tags: Tag[]): void {\n        if (this._activated) {\n            this._navigator.stateService.currentTransform$.pipe(\n                first())\n                .subscribe(\n                    (transform: Transform): void => {\n                        this._tagSet.add(tags, transform);\n\n                        const renderTags: RenderTag<Tag>[] = tags\n                            .map(\n                                (tag: Tag): RenderTag<Tag> => {\n                                    return this._tagSet.get(tag.id);\n                                });\n\n                        this._tagScene.add(renderTags);\n                    });\n        } else {\n            this._tagSet.addDeactivated(tags);\n        }\n    }\n\n    /**\n     * Change the current tag mode.\n     *\n     * @description Change the tag mode to one of the create modes for creating new geometries.\n     *\n     * @param {TagMode} mode - New tag mode.\n     *\n     * @fires TagComponent#modechanged\n     *\n     * @example ```tagComponent.changeMode(Mapillary.TagComponent.TagMode.CreateRect);```\n     */\n    public changeMode(mode: TagMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Returns the tag in the tag set with the specified id, or\n     * undefined if the id matches no tag.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tag = tagComponent.get(\"tagId\");```\n     */\n    public get(tagId: string): Tag {\n        if (this._activated) {\n            const renderTag: RenderTag<Tag> = this._tagSet.get(tagId);\n            return renderTag !== undefined ? renderTag.tag : undefined;\n        } else {\n            return this._tagSet.getDeactivated(tagId);\n        }\n    }\n\n    /**\n     * Returns an array of all tags.\n     *\n     * @example ```var tags = tagComponent.getAll();```\n     */\n    public getAll(): Tag[] {\n        if (this.activated) {\n            return this._tagSet\n                .getAll()\n                .map(\n                    (renderTag: RenderTag<Tag>): Tag => {\n                        return renderTag.tag;\n                    });\n        } else {\n            return this._tagSet.getAllDeactivated();\n        }\n    }\n\n    /**\n     * Returns an array of tag ids for tags that contain the specified point.\n     *\n     * @description The pixel point must lie inside the polygon or rectangle\n     * of an added tag for the tag id to be returned. Tag ids for\n     * tags that do not have a fill will also be returned if the point is inside\n     * the geometry of the tag. Tags with point geometries can not be retrieved.\n     *\n     * No tag ids will be returned for panoramas.\n     *\n     * Notice that the pixelPoint argument requires x, y coordinates from pixel space.\n     *\n     * With this function, you can use the coordinates provided by mouse\n     * events to get information out of the tag component.\n     *\n     * If no tag at exist the pixel point, an empty array will be returned.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates on the viewer element.\n     * @returns {Array<string>} Ids of the tags that contain the specified pixel point.\n     *\n     * @example\n     * ```\n     * tagComponent.getTagIdsAt([100, 100])\n     *     .then((tagIds) => { console.log(tagIds); });\n     * ```\n     */\n    public getTagIdsAt(pixelPoint: number[]): when.Promise<string[]> {\n        return when.promise<string[]>((resolve: (value: string[]) => void, reject: (reason: Error) => void): void => {\n            this._container.renderService.renderCamera$.pipe(\n                first(),\n                map(\n                    (render: RenderCamera): string[] => {\n                        const viewport: number[] = this._viewportCoords\n                            .canvasToViewport(\n                                pixelPoint[0],\n                                pixelPoint[1],\n                                this._container.element);\n\n                        const ids: string[] = this._tagScene.intersectObjects(viewport, render.perspective);\n\n                        return ids;\n                    }))\n                .subscribe(\n                    (ids: string[]): void => {\n                        resolve(ids);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n        });\n    }\n\n    /**\n     * Check if a tag exist in the tag set.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tagExists = tagComponent.has(\"tagId\");```\n     */\n    public has(tagId: string): boolean {\n        return this._activated ? this._tagSet.has(tagId) : this._tagSet.hasDeactivated(tagId);\n    }\n\n    /**\n     * Remove tags with the specified ids from the tag set.\n     *\n     * @param {Array<string>} tagIds - Ids for tags to remove.\n     *\n     * @example ```tagComponent.remove([\"id-1\", \"id-2\"]);```\n     */\n    public remove(tagIds: string[]): void {\n        if (this._activated) {\n            this._tagSet.remove(tagIds);\n            this._tagScene.remove(tagIds);\n        } else {\n            this._tagSet.removeDeactivated(tagIds);\n        }\n    }\n\n    /**\n     * Remove all tags from the tag set.\n     *\n     * @example ```tagComponent.removeAll();```\n     */\n    public removeAll(): void {\n        if (this._activated) {\n            this._tagSet.removeAll();\n            this._tagScene.removeAll();\n        } else {\n            this._tagSet.removeAllDeactivated();\n        }\n    }\n\n    protected _activate(): void {\n        this._editVertexHandler.enable();\n\n        const handlerGeometryCreated$: Observable<Geometry> =\n            observableFrom<keyof typeof TagMode>(<(keyof typeof TagMode)[]>Object.keys(this._createHandlers)).pipe(\n                map(\n                    (key: keyof typeof TagMode): CreateHandlerBase => {\n                        return this._createHandlers[key];\n                    }),\n                filter(\n                    (handler: CreateHandlerBase): boolean => {\n                        return !!handler;\n                    }),\n                mergeMap(\n                    (handler: CreateHandlerBase): Observable<Geometry> => {\n                        return handler.geometryCreated$;\n                    }),\n                share());\n\n        this._fireGeometryCreatedSubscription = handlerGeometryCreated$\n            .subscribe(\n                (geometry: Geometry): void => {\n                    this.fire(TagComponent.geometrycreated, geometry);\n                });\n\n        this._fireCreateGeometryEventSubscription = this._tagCreator.tag$.pipe(\n            skipWhile(\n                (tag: OutlineCreateTag): boolean => {\n                    return tag == null;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    const eventType: string = tag != null ?\n                        TagComponent.creategeometrystart :\n                        TagComponent.creategeometryend;\n\n                    this.fire(eventType, this);\n                });\n\n        this._handlerStopCreateSubscription = handlerGeometryCreated$\n            .subscribe(\n                (): void => {\n                    this.changeMode(TagMode.Default);\n                });\n\n        this._handlerEnablerSubscription = this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this._disableCreateHandlers();\n\n                    const mode: keyof typeof TagMode = <keyof typeof TagMode>TagMode[configuration.mode];\n                    const handler: CreateHandlerBase = this._createHandlers[mode];\n                    if (!!handler) {\n                        handler.enable();\n                    }\n                });\n\n        this._fireTagsChangedSubscription = this._renderTags$\n            .subscribe(\n                (tags: RenderTag<Tag>[]): void => {\n                    this.fire(TagComponent.tagschanged, this);\n                });\n\n        this._stopCreateSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<void> => {\n                    return tag != null ?\n                        tag.aborted$.pipe(\n                            map((t: OutlineCreateTag): void => { return null; })) :\n                        observableEmpty();\n                }))\n            .subscribe((): void => { this.changeMode(TagMode.Default); });\n\n        this._setGLCreateTagSubscription = this._tagCreator.tag$\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    if (this._tagScene.hasCreateTag()) {\n                        this._tagScene.removeCreateTag();\n                    }\n\n                    if (tag != null) {\n                        this._tagScene.addCreateTag(tag);\n                    }\n                });\n\n        this._createGLObjectsChangedSubscription = this._createGLObjectsChanged$\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    this._tagScene.updateCreateTagObjects(tag);\n                });\n\n        this._updateGLObjectsSubscription = this._renderTagGLChanged$\n            .subscribe(\n                (tag: RenderTag<Tag>): void => {\n                    this._tagScene.updateObjects(tag);\n                });\n\n        this._updateTagSceneSubscription = this._tagChanged$\n            .subscribe(\n                (tag: Tag): void => {\n                    this._tagScene.update();\n                });\n\n        this._domSubscription = observableCombineLatest(\n                this._renderTags$.pipe(\n                    startWith([]),\n                    tap(\n                        (tags: RenderTag<Tag>[]): void => {\n                            this._container.domRenderer.render$.next({\n                                name: this._name,\n                                vnode: this._tagDomRenderer.clear(),\n                            });\n                        })),\n                this._container.renderService.renderCamera$,\n                this._container.spriteService.spriteAtlas$,\n                this._container.renderService.size$,\n                this._tagChanged$.pipe(startWith(null)),\n                observableMerge(\n                    this._tagCreator.tag$,\n                    this._createGeometryChanged$).pipe(startWith(null))).pipe(\n            map(\n                ([renderTags, rc, atlas, size, tag, ct]: [RenderTag<Tag>[], RenderCamera, ISpriteAtlas, ISize, Tag, OutlineCreateTag]):\n                    IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._tagDomRenderer.render(renderTags, ct, atlas, rc.perspective, size),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const tagScene: TagScene = this._tagScene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: tagScene.needsRender,\n                            render: tagScene.render.bind(tagScene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._navigator.stateService.currentTransform$.pipe(\n            first())\n            .subscribe(\n                (transform: Transform): void => {\n                    this._tagSet.activate(transform);\n                    this._tagScene.add(this._tagSet.getAll());\n                });\n\n    }\n\n    protected _deactivate(): void {\n        this._editVertexHandler.disable();\n        this._disableCreateHandlers();\n\n        this._tagScene.clear();\n        this._tagSet.deactivate();\n\n        this._tagCreator.delete$.next(null);\n\n        this._updateGLObjectsSubscription.unsubscribe();\n        this._updateTagSceneSubscription.unsubscribe();\n\n        this._stopCreateSubscription.unsubscribe();\n        this._setGLCreateTagSubscription.unsubscribe();\n        this._createGLObjectsChangedSubscription.unsubscribe();\n\n        this._domSubscription.unsubscribe();\n        this._glSubscription.unsubscribe();\n\n        this._fireCreateGeometryEventSubscription.unsubscribe();\n        this._fireGeometryCreatedSubscription.unsubscribe();\n        this._fireTagsChangedSubscription.unsubscribe();\n\n        this._handlerStopCreateSubscription.unsubscribe();\n        this._handlerEnablerSubscription.unsubscribe();\n\n        this._container.element.classList.remove(\"component-tag-create\");\n    }\n\n    protected _getDefaultConfiguration(): ITagConfiguration {\n        return {\n            createColor: 0xFFFFFF,\n            mode: TagMode.Default,\n        };\n    }\n\n    private _disableCreateHandlers(): void {\n        const createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase } = this._createHandlers;\n        for (const key in createHandlers) {\n            if (!createHandlers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const handler: CreateHandlerBase = createHandlers[<keyof typeof TagMode>key];\n            if (!!handler) {\n                handler.disable();\n            }\n        }\n    }\n}\n\nComponentService.register(TagComponent);\nexport default TagComponent;\n",
+    "import {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    merge as observableMerge,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    startWith,\n    first,\n    tap,\n    map,\n    share,\n    skipWhile,\n    filter,\n    mergeMap,\n    refCount,\n    publishReplay,\n    switchMap,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as when from \"when\";\n\nimport {\n    ComponentService,\n    Component,\n    CreateHandlerBase,\n    CreatePointHandler,\n    CreatePolygonHandler,\n    CreateRectHandler,\n    CreateRectDragHandler,\n    EditVertexHandler,\n    Geometry,\n    ITagConfiguration,\n    OutlineCreateTag,\n    RenderTag,\n    Tag,\n    TagCreator,\n    TagDOMRenderer,\n    TagMode,\n    TagScene,\n    TagSet,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    ISpriteAtlas,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * @class TagComponent\n *\n * @classdesc Component for showing and editing tags with different\n * geometries composed from 2D basic image coordinates (see the\n * {@link Viewer} class documentation for more information about coordinate\n * systems).\n *\n * The `add` method is used for adding new tags or replacing\n * tags already in the set. Tags are removed by id.\n *\n * If a tag already in the set has the same\n * id as one of the tags added, the old tag will be removed and\n * the added tag will take its place.\n *\n * The tag component mode can be set to either be non interactive or\n * to be in creating mode of a certain geometry type.\n *\n * The tag properties can be updated at any time and the change will\n * be visibile immediately.\n *\n * Tags are only relevant to a single image because they are based on\n * 2D basic image coordinates. Tags related to a certain image should\n * be removed when the viewer is moved to another node.\n *\n * To retrive and use the tag component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\",\n *     { component: { tag: true } });\n *\n * var tagComponent = viewer.getComponent(\"tag\");\n * ```\n */\nexport class TagComponent extends Component<ITagConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"tag\";\n\n    /**\n     * Event fired when an interaction to create a geometry ends.\n     *\n     * @description A create interaction can by a geometry being created\n     * or by the creation being aborted.\n     *\n     * @event TagComponent#creategeometryend\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometryend\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometryend: string = \"creategeometryend\";\n\n    /**\n     * Event fired when an interaction to create a geometry starts.\n     *\n     * @description A create interaction starts when the first vertex\n     * is created in the geometry.\n     *\n     * @event TagComponent#creategeometrystart\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometrystart\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometrystart: string = \"creategeometrystart\";\n\n    /**\n     * Event fired when the create mode is changed.\n     *\n     * @event TagComponent#modechanged\n     * @type {TagMode} Tag mode\n     * @example\n     * ```\n     * tagComponent.on(\"modechanged\", function(mode) {\n     *     console.log(mode);\n     * });\n     * ```\n     */\n    public static modechanged: string = \"modechanged\";\n\n    /**\n     * Event fired when a geometry has been created.\n     *\n     * @event TagComponent#geometrycreated\n     * @type {Geometry} Created geometry.\n     * @example\n     * ```\n     * tagComponent.on(\"geometrycreated\", function(geometry) {\n     *     console.log(geometry);\n     * });\n     * ```\n     */\n    public static geometrycreated: string = \"geometrycreated\";\n\n    /**\n     * Event fired when the tags collection has changed.\n     *\n     * @event TagComponent#tagschanged\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"tagschanged\", function(component) {\n     *     console.log(component.getAll());\n     * });\n     * ```\n     */\n    public static tagschanged: string = \"tagschanged\";\n\n    private _tagDomRenderer: TagDOMRenderer;\n    private _tagScene: TagScene;\n    private _tagSet: TagSet;\n    private _tagCreator: TagCreator;\n    private _viewportCoords: ViewportCoords;\n\n    private _renderTags$: Observable<RenderTag<Tag>[]>;\n    private _tagChanged$: Observable<Tag>;\n    private _renderTagGLChanged$: Observable<RenderTag<Tag>>;\n    private _createGeometryChanged$: Observable<OutlineCreateTag>;\n    private _createGLObjectsChanged$: Observable<OutlineCreateTag>;\n\n    private _creatingConfiguration$: Observable<ITagConfiguration>;\n\n    private _updateGLObjectsSubscription: Subscription;\n    private _updateTagSceneSubscription: Subscription;\n\n    private _stopCreateSubscription: Subscription;\n    private _setGLCreateTagSubscription: Subscription;\n    private _createGLObjectsChangedSubscription: Subscription;\n\n    private _handlerStopCreateSubscription: Subscription;\n    private _handlerEnablerSubscription: Subscription;\n\n    private _domSubscription: Subscription;\n    private _glSubscription: Subscription;\n\n    private _fireCreateGeometryEventSubscription: Subscription;\n    private _fireGeometryCreatedSubscription: Subscription;\n    private _fireTagsChangedSubscription: Subscription;\n\n    private _createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase };\n    private _editVertexHandler: EditVertexHandler;\n\n    /** @ignore */\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._tagDomRenderer = new TagDOMRenderer();\n        this._tagScene = new TagScene();\n        this._tagSet = new TagSet();\n        this._tagCreator = new TagCreator(this, navigator);\n        this._viewportCoords = new ViewportCoords();\n\n        this._createHandlers = {\n            \"CreatePoint\": new CreatePointHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreatePolygon\": new CreatePolygonHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRect\": new CreateRectHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRectDrag\": new CreateRectDragHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"Default\": undefined,\n        };\n\n        this._editVertexHandler = new EditVertexHandler(this, container, navigator, this._viewportCoords, this._tagSet);\n\n        this._renderTags$ = this._tagSet.changed$.pipe(\n            map(\n                (tagSet: TagSet): RenderTag<Tag>[] => {\n                    const tags: RenderTag<Tag>[] = tagSet.getAll();\n\n                    // ensure that tags are always rendered in the same order\n                    // to avoid hover tracking problems on first resize.\n                    tags.sort(\n                        (t1: RenderTag<Tag>, t2: RenderTag<Tag>): number => {\n                            const id1: string = t1.tag.id;\n                            const id2: string = t2.tag.id;\n\n                            if (id1 < id2) {\n                                return -1;\n                            }\n\n                            if (id1 > id2) {\n                                return 1;\n                            }\n\n                            return 0;\n                        });\n\n                    return tags;\n                }),\n            share());\n\n        this._tagChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<Tag> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<Tag> => {\n                                return observableMerge(\n                                        tag.tag.changed$,\n                                        tag.tag.geometryChanged$);\n                            }));\n                }),\n            share());\n\n        this._renderTagGLChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<RenderTag<Tag>> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<RenderTag<Tag>> => {\n                                return tag.glObjectsChanged$;\n                            }));\n                }),\n            share());\n\n        this._createGeometryChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<OutlineCreateTag> => {\n                    return tag != null ?\n                        tag.geometryChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._createGLObjectsChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<OutlineCreateTag> => {\n                    return tag != null ?\n                        tag.glObjectsChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._creatingConfiguration$ = this._configuration$.pipe(\n            distinctUntilChanged(\n                (c1: ITagConfiguration, c2: ITagConfiguration): boolean => {\n                    return c1.mode === c2.mode;\n                },\n                (configuration: ITagConfiguration): ITagConfiguration => {\n                    return {\n                        createColor: configuration.createColor,\n                        mode: configuration.mode,\n                    };\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this.fire(TagComponent.modechanged, configuration.mode);\n                });\n    }\n\n    /**\n     * Add tags to the tag set or replace tags in the tag set.\n     *\n     * @description If a tag already in the set has the same\n     * id as one of the tags added, the old tag will be removed\n     * the added tag will take its place.\n     *\n     * @param {Array<Tag>} tags - Tags to add.\n     *\n     * @example ```tagComponent.add([tag1, tag2]);```\n     */\n    public add(tags: Tag[]): void {\n        if (this._activated) {\n            this._navigator.stateService.currentTransform$.pipe(\n                first())\n                .subscribe(\n                    (transform: Transform): void => {\n                        this._tagSet.add(tags, transform);\n\n                        const renderTags: RenderTag<Tag>[] = tags\n                            .map(\n                                (tag: Tag): RenderTag<Tag> => {\n                                    return this._tagSet.get(tag.id);\n                                });\n\n                        this._tagScene.add(renderTags);\n                    });\n        } else {\n            this._tagSet.addDeactivated(tags);\n        }\n    }\n\n    /**\n     * Change the current tag mode.\n     *\n     * @description Change the tag mode to one of the create modes for creating new geometries.\n     *\n     * @param {TagMode} mode - New tag mode.\n     *\n     * @fires TagComponent#modechanged\n     *\n     * @example ```tagComponent.changeMode(Mapillary.TagComponent.TagMode.CreateRect);```\n     */\n    public changeMode(mode: TagMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Returns the tag in the tag set with the specified id, or\n     * undefined if the id matches no tag.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tag = tagComponent.get(\"tagId\");```\n     */\n    public get(tagId: string): Tag {\n        if (this._activated) {\n            const renderTag: RenderTag<Tag> = this._tagSet.get(tagId);\n            return renderTag !== undefined ? renderTag.tag : undefined;\n        } else {\n            return this._tagSet.getDeactivated(tagId);\n        }\n    }\n\n    /**\n     * Returns an array of all tags.\n     *\n     * @example ```var tags = tagComponent.getAll();```\n     */\n    public getAll(): Tag[] {\n        if (this.activated) {\n            return this._tagSet\n                .getAll()\n                .map(\n                    (renderTag: RenderTag<Tag>): Tag => {\n                        return renderTag.tag;\n                    });\n        } else {\n            return this._tagSet.getAllDeactivated();\n        }\n    }\n\n    /**\n     * Returns an array of tag ids for tags that contain the specified point.\n     *\n     * @description The pixel point must lie inside the polygon or rectangle\n     * of an added tag for the tag id to be returned. Tag ids for\n     * tags that do not have a fill will also be returned if the point is inside\n     * the geometry of the tag. Tags with point geometries can not be retrieved.\n     *\n     * No tag ids will be returned for polygons rendered in cropped panoramas or\n     * rectangles rendered in panoramas.\n     *\n     * Notice that the pixelPoint argument requires x, y coordinates from pixel space.\n     *\n     * With this function, you can use the coordinates provided by mouse\n     * events to get information out of the tag component.\n     *\n     * If no tag at exist the pixel point, an empty array will be returned.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates on the viewer element.\n     * @returns {Array<string>} Ids of the tags that contain the specified pixel point.\n     *\n     * @example\n     * ```\n     * tagComponent.getTagIdsAt([100, 100])\n     *     .then((tagIds) => { console.log(tagIds); });\n     * ```\n     */\n    public getTagIdsAt(pixelPoint: number[]): when.Promise<string[]> {\n        return when.promise<string[]>((resolve: (value: string[]) => void, reject: (reason: Error) => void): void => {\n            this._container.renderService.renderCamera$.pipe(\n                first(),\n                map(\n                    (render: RenderCamera): string[] => {\n                        const viewport: number[] = this._viewportCoords\n                            .canvasToViewport(\n                                pixelPoint[0],\n                                pixelPoint[1],\n                                this._container.element);\n\n                        const ids: string[] = this._tagScene.intersectObjects(viewport, render.perspective);\n\n                        return ids;\n                    }))\n                .subscribe(\n                    (ids: string[]): void => {\n                        resolve(ids);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n        });\n    }\n\n    /**\n     * Check if a tag exist in the tag set.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tagExists = tagComponent.has(\"tagId\");```\n     */\n    public has(tagId: string): boolean {\n        return this._activated ? this._tagSet.has(tagId) : this._tagSet.hasDeactivated(tagId);\n    }\n\n    /**\n     * Remove tags with the specified ids from the tag set.\n     *\n     * @param {Array<string>} tagIds - Ids for tags to remove.\n     *\n     * @example ```tagComponent.remove([\"id-1\", \"id-2\"]);```\n     */\n    public remove(tagIds: string[]): void {\n        if (this._activated) {\n            this._tagSet.remove(tagIds);\n            this._tagScene.remove(tagIds);\n        } else {\n            this._tagSet.removeDeactivated(tagIds);\n        }\n    }\n\n    /**\n     * Remove all tags from the tag set.\n     *\n     * @example ```tagComponent.removeAll();```\n     */\n    public removeAll(): void {\n        if (this._activated) {\n            this._tagSet.removeAll();\n            this._tagScene.removeAll();\n        } else {\n            this._tagSet.removeAllDeactivated();\n        }\n    }\n\n    protected _activate(): void {\n        this._editVertexHandler.enable();\n\n        const handlerGeometryCreated$: Observable<Geometry> =\n            observableFrom<keyof typeof TagMode>(<(keyof typeof TagMode)[]>Object.keys(this._createHandlers)).pipe(\n                map(\n                    (key: keyof typeof TagMode): CreateHandlerBase => {\n                        return this._createHandlers[key];\n                    }),\n                filter(\n                    (handler: CreateHandlerBase): boolean => {\n                        return !!handler;\n                    }),\n                mergeMap(\n                    (handler: CreateHandlerBase): Observable<Geometry> => {\n                        return handler.geometryCreated$;\n                    }),\n                share());\n\n        this._fireGeometryCreatedSubscription = handlerGeometryCreated$\n            .subscribe(\n                (geometry: Geometry): void => {\n                    this.fire(TagComponent.geometrycreated, geometry);\n                });\n\n        this._fireCreateGeometryEventSubscription = this._tagCreator.tag$.pipe(\n            skipWhile(\n                (tag: OutlineCreateTag): boolean => {\n                    return tag == null;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    const eventType: string = tag != null ?\n                        TagComponent.creategeometrystart :\n                        TagComponent.creategeometryend;\n\n                    this.fire(eventType, this);\n                });\n\n        this._handlerStopCreateSubscription = handlerGeometryCreated$\n            .subscribe(\n                (): void => {\n                    this.changeMode(TagMode.Default);\n                });\n\n        this._handlerEnablerSubscription = this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this._disableCreateHandlers();\n\n                    const mode: keyof typeof TagMode = <keyof typeof TagMode>TagMode[configuration.mode];\n                    const handler: CreateHandlerBase = this._createHandlers[mode];\n                    if (!!handler) {\n                        handler.enable();\n                    }\n                });\n\n        this._fireTagsChangedSubscription = this._renderTags$\n            .subscribe(\n                (tags: RenderTag<Tag>[]): void => {\n                    this.fire(TagComponent.tagschanged, this);\n                });\n\n        this._stopCreateSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<void> => {\n                    return tag != null ?\n                        tag.aborted$.pipe(\n                            map((t: OutlineCreateTag): void => { return null; })) :\n                        observableEmpty();\n                }))\n            .subscribe((): void => { this.changeMode(TagMode.Default); });\n\n        this._setGLCreateTagSubscription = this._tagCreator.tag$\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    if (this._tagScene.hasCreateTag()) {\n                        this._tagScene.removeCreateTag();\n                    }\n\n                    if (tag != null) {\n                        this._tagScene.addCreateTag(tag);\n                    }\n                });\n\n        this._createGLObjectsChangedSubscription = this._createGLObjectsChanged$\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    this._tagScene.updateCreateTagObjects(tag);\n                });\n\n        this._updateGLObjectsSubscription = this._renderTagGLChanged$\n            .subscribe(\n                (tag: RenderTag<Tag>): void => {\n                    this._tagScene.updateObjects(tag);\n                });\n\n        this._updateTagSceneSubscription = this._tagChanged$\n            .subscribe(\n                (tag: Tag): void => {\n                    this._tagScene.update();\n                });\n\n        this._domSubscription = observableCombineLatest(\n                this._renderTags$.pipe(\n                    startWith([]),\n                    tap(\n                        (tags: RenderTag<Tag>[]): void => {\n                            this._container.domRenderer.render$.next({\n                                name: this._name,\n                                vnode: this._tagDomRenderer.clear(),\n                            });\n                        })),\n                this._container.renderService.renderCamera$,\n                this._container.spriteService.spriteAtlas$,\n                this._container.renderService.size$,\n                this._tagChanged$.pipe(startWith(null)),\n                observableMerge(\n                    this._tagCreator.tag$,\n                    this._createGeometryChanged$).pipe(startWith(null))).pipe(\n            map(\n                ([renderTags, rc, atlas, size, tag, ct]: [RenderTag<Tag>[], RenderCamera, ISpriteAtlas, ISize, Tag, OutlineCreateTag]):\n                    IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._tagDomRenderer.render(renderTags, ct, atlas, rc.perspective, size),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const tagScene: TagScene = this._tagScene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: tagScene.needsRender,\n                            render: tagScene.render.bind(tagScene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._navigator.stateService.currentTransform$.pipe(\n            first())\n            .subscribe(\n                (transform: Transform): void => {\n                    this._tagSet.activate(transform);\n                    this._tagScene.add(this._tagSet.getAll());\n                });\n\n    }\n\n    protected _deactivate(): void {\n        this._editVertexHandler.disable();\n        this._disableCreateHandlers();\n\n        this._tagScene.clear();\n        this._tagSet.deactivate();\n\n        this._tagCreator.delete$.next(null);\n\n        this._updateGLObjectsSubscription.unsubscribe();\n        this._updateTagSceneSubscription.unsubscribe();\n\n        this._stopCreateSubscription.unsubscribe();\n        this._setGLCreateTagSubscription.unsubscribe();\n        this._createGLObjectsChangedSubscription.unsubscribe();\n\n        this._domSubscription.unsubscribe();\n        this._glSubscription.unsubscribe();\n\n        this._fireCreateGeometryEventSubscription.unsubscribe();\n        this._fireGeometryCreatedSubscription.unsubscribe();\n        this._fireTagsChangedSubscription.unsubscribe();\n\n        this._handlerStopCreateSubscription.unsubscribe();\n        this._handlerEnablerSubscription.unsubscribe();\n\n        this._container.element.classList.remove(\"component-tag-create\");\n    }\n\n    protected _getDefaultConfiguration(): ITagConfiguration {\n        return {\n            createColor: 0xFFFFFF,\n            mode: TagMode.Default,\n        };\n    }\n\n    private _disableCreateHandlers(): void {\n        const createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase } = this._createHandlers;\n        for (const key in createHandlers) {\n            if (!createHandlers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const handler: CreateHandlerBase = createHandlers[<keyof typeof TagMode>key];\n            if (!!handler) {\n                handler.disable();\n            }\n        }\n    }\n}\n\nComponentService.register(TagComponent);\nexport default TagComponent;\n",
     "import {scan, share, withLatestFrom, map} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\nimport {\n    Component,\n    ITagConfiguration,\n    OutlineCreateTag,\n    PolygonGeometry,\n    RectGeometry,\n} from \"../../Component\";\nimport {Transform} from \"../../Geo\";\nimport {Navigator} from \"../../Viewer\";\n\ninterface ICreateTagOperation {\n    (tag: OutlineCreateTag): OutlineCreateTag;\n}\n\nexport class TagCreator {\n    private _component: Component<ITagConfiguration>;\n    private _navigator: Navigator;\n\n    private _tagOperation$: Subject<ICreateTagOperation>;\n    private _tag$: Observable<OutlineCreateTag>;\n\n    private _createPolygon$: Subject<number[]>;\n    private _createRect$: Subject<number[]>;\n    private _delete$: Subject<void>;\n\n    constructor(component: Component<ITagConfiguration>, navigator: Navigator) {\n        this._component = component;\n        this._navigator = navigator;\n\n        this._tagOperation$ = new Subject<ICreateTagOperation>();\n        this._createPolygon$ = new Subject<number[]>();\n        this._createRect$ = new Subject<number[]>();\n        this._delete$ = new Subject<void>();\n\n        this._tag$ = this._tagOperation$.pipe(\n            scan(\n                (tag: OutlineCreateTag, operation: ICreateTagOperation): OutlineCreateTag => {\n                    return operation(tag);\n                },\n                null),\n            share());\n\n        this._createRect$.pipe(\n            withLatestFrom(\n                this._component.configuration$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([coord, conf, transform]: [number[], ITagConfiguration, Transform]): ICreateTagOperation => {\n                    return (tag: OutlineCreateTag): OutlineCreateTag => {\n                        const geometry: RectGeometry = new RectGeometry([\n                            coord[0],\n                            coord[1],\n                            coord[0],\n                            coord[1],\n                        ]);\n\n                        return new OutlineCreateTag(geometry, { color: conf.createColor }, transform);\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n\n        this._createPolygon$.pipe(\n            withLatestFrom(\n                this._component.configuration$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([coord, conf, transform]: [number[], ITagConfiguration, Transform]): ICreateTagOperation => {\n                    return (tag: OutlineCreateTag): OutlineCreateTag => {\n                        const geometry: PolygonGeometry = new PolygonGeometry([\n                            [coord[0], coord[1]],\n                            [coord[0], coord[1]],\n                            [coord[0], coord[1]],\n                        ]);\n\n                        return new OutlineCreateTag(geometry, { color: conf.createColor }, transform);\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n\n        this._delete$.pipe(\n            map(\n                (): ICreateTagOperation => {\n                    return (tag: OutlineCreateTag): OutlineCreateTag => {\n                        return null;\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n    }\n\n    public get createRect$(): Subject<number[]> {\n        return this._createRect$;\n    }\n\n    public get createPolygon$(): Subject<number[]> {\n        return this._createPolygon$;\n    }\n\n    public get delete$(): Subject<void> {\n        return this._delete$;\n    }\n\n    public get tag$(): Observable<OutlineCreateTag> {\n        return this._tag$;\n    }\n}\n\nexport default TagCreator;\n",
     "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    OutlineCreateTag,\n    RenderTag,\n    Tag,\n} from \"../../Component\";\nimport {ISize} from \"../../Render\";\nimport {ISpriteAtlas} from \"../../Viewer\";\n\nexport class TagDOMRenderer {\n    public render(\n        tags: RenderTag<Tag>[],\n        createTag: OutlineCreateTag,\n        atlas: ISpriteAtlas,\n        camera: THREE.PerspectiveCamera,\n        size: ISize): vd.VNode {\n\n        let vNodes: vd.VNode[] = [];\n\n        for (const tag of tags) {\n            vNodes = vNodes.concat(tag.getDOMObjects(atlas, camera, size));\n        }\n\n        if (createTag != null) {\n            vNodes = vNodes.concat(createTag.getDOMObjects(camera, size));\n        }\n\n        return vd.h(\"div.TagContainer\", {}, vNodes);\n    }\n\n    public clear(): vd.VNode {\n        return vd.h(\"div\", {}, []);\n    }\n}\n",
     "/**\n * Enumeration for tag modes\n * @enum {number}\n * @readonly\n * @description Modes for the interaction in the tag component.\n */\nexport enum TagMode {\n    /**\n     * Disables creating tags.\n     */\n    Default,\n\n    /**\n     * Create a point geometry through a click.\n     */\n    CreatePoint,\n\n    /**\n     * Create a polygon geometry through clicks.\n     */\n    CreatePolygon,\n\n    /**\n     * Create a rect geometry through clicks.\n     */\n    CreateRect,\n\n    /**\n     * Create a rect geometry through drag.\n     *\n     * @description Claims the mouse which results in mouse handlers like\n     * drag pan and scroll zoom becoming inactive.\n     */\n    CreateRectDrag,\n}\n\nexport default TagMode;\n",
     "import {MapillaryError} from \"../../../Error\";\n\nexport class GeometryTagError extends MapillaryError {\n    constructor (message?: string) {\n        super(message != null ? message : \"The provided geometry value is incorrect\");\n\n        this.name = \"GeometryTagError\";\n    }\n}\n\nexport default MapillaryError;\n",
     "import {Observable, Subject} from \"rxjs\";\n\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class Geometry\n * @abstract\n * @classdesc Represents a geometry.\n */\nexport abstract class Geometry {\n    protected _notifyChanged$: Subject<Geometry>;\n\n    /**\n     * Create a geometry.\n     *\n     * @constructor\n     * @ignore\n     */\n    constructor() {\n        this._notifyChanged$ = new Subject<Geometry>();\n    }\n\n    /**\n     * Get changed observable.\n     *\n     * @description Emits the geometry itself every time the geometry\n     * has changed.\n     *\n     * @returns {Observable<Geometry>} Observable emitting the geometry instance.\n     * @ignore\n     */\n    public get changed$(): Observable<Geometry> {\n        return this._notifyChanged$;\n    }\n\n    /**\n     * Get the 2D basic coordinates for the centroid of the geometry.\n     *\n     * @returns {Array<number>} 2D basic coordinates representing the centroid.\n     * @ignore\n     */\n    public abstract getCentroid2d(): number[];\n\n    /**\n     * Get the 3D world coordinates for the centroid of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} 3D world coordinates representing the centroid.\n     * @ignore\n     */\n    public abstract getCentroid3d(transform: Transform): number[];\n\n    /**\n     * Set the 2D centroid of the geometry.\n     *\n     * @param {Array<number>} value - The new value of the centroid in basic coordinates.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @ignore\n     */\n    public abstract setCentroid2d(value: number[], transform: Transform): void;\n}\n\nexport default Geometry;\n",
     "import {Geometry, GeometryTagError} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PointGeometry\n *\n * @classdesc Represents a point geometry in the 2D basic image coordinate system.\n *\n * @example\n * ```\n * var basicPoint = [0.5, 0.7];\n * var pointGeometry = new Mapillary.TagComponent.PointGeometry(basicPoint);\n * ```\n */\nexport class PointGeometry extends Geometry {\n    private _point: number[];\n\n    /**\n     * Create a point geometry.\n     *\n     * @constructor\n     * @param {Array<number>} point - An array representing the basic coordinates of\n     * the point.\n     *\n     * @throws {GeometryTagError} Point coordinates must be valid basic coordinates.\n     */\n    constructor(point: number[]) {\n        super();\n\n        let x: number = point[0];\n        let y: number = point[1];\n\n        if (x < 0 || x > 1 || y < 0 || y > 1) {\n            throw new GeometryTagError(\"Basic coordinates must be on the interval [0, 1].\");\n        }\n\n        this._point = point.slice();\n    }\n\n    /**\n     * Get point property.\n     * @returns {Array<number>} Array representing the basic coordinates of the point.\n     */\n    public get point(): number[] {\n        return this._point;\n    }\n\n    /**\n     * Get the 2D basic coordinates for the centroid of the point, i.e. the 2D\n     * basic coordinates of the point itself.\n     *\n     * @returns {Array<number>} 2D basic coordinates representing the centroid.\n     * @ignore\n     */\n    public getCentroid2d(): number[] {\n        return this._point.slice();\n    }\n\n    /**\n     * Get the 3D world coordinates for the centroid of the point, i.e. the 3D\n     * world coordinates of the point itself.\n     *\n     * @param {Transform} transform - The transform of the node related to the point.\n     * @returns {Array<number>} 3D world coordinates representing the centroid.\n     * @ignore\n     */\n    public getCentroid3d(transform: Transform): number[] {\n        return transform.unprojectBasic(this._point, 200);\n    }\n\n    /**\n     * Set the centroid of the point, i.e. the point coordinates.\n     *\n     * @param {Array<number>} value - The new value of the centroid.\n     * @param {Transform} transform - The transform of the node related to the point.\n     * @ignore\n     */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        this._point[0] = changed[0];\n        this._point[1] = changed[1];\n\n        this._notifyChanged$.next(this);\n    }\n}\n",
-    "import {GeometryTagError, VertexGeometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PolygonGeometry\n *\n * @classdesc Represents a polygon geometry in the 2D basic image coordinate system.\n * All polygons and holes provided to the constructor needs to be closed.\n *\n * @example\n * ```\n * var basicPolygon = [[0.5, 0.3], [0.7, 0.3], [0.6, 0.5], [0.5, 0.3]];\n * var polygonGeometry = new Mapillary.TagComponent.PolygonGeometry(basicPolygon);\n * ```\n */\nexport class PolygonGeometry extends VertexGeometry {\n    private _polygon: number[][];\n    private _holes: number[][][];\n\n    private _subsampleThreshold: number;\n\n    /**\n     * Create a polygon geometry.\n     *\n     * @constructor\n     * @param {Array<Array<number>>} polygon - Array of polygon vertices. Must be closed.\n     * @param {Array<Array<Array<number>>>} [holes] - Array of arrays of hole vertices.\n     * Each array of holes vertices must be closed.\n     *\n     * @throws {GeometryTagError} Polygon coordinates must be valid basic coordinates.\n     */\n    constructor(polygon: number[][], holes?: number[][][]) {\n        super();\n\n        this._subsampleThreshold = 0.01;\n\n        let polygonLength: number = polygon.length;\n\n        if (polygonLength < 3) {\n            throw new GeometryTagError(\"A polygon must have three or more positions.\");\n        }\n\n        if (polygon[0][0] !== polygon[polygonLength - 1][0] ||\n            polygon[0][1] !== polygon[polygonLength - 1][1]) {\n            throw new GeometryTagError(\"First and last positions must be equivalent.\");\n        }\n\n        this._polygon = [];\n        for (let vertex of polygon) {\n            if (vertex[0] < 0 || vertex[0] > 1 ||\n                vertex[1] < 0 || vertex[1] > 1) {\n                throw new GeometryTagError(\"Basic coordinates of polygon must be on the interval [0, 1].\");\n            }\n\n            this._polygon.push(vertex.slice());\n        }\n\n        this._holes = [];\n\n        if (holes == null) {\n            return;\n        }\n\n        for (let i: number = 0; i < holes.length; i++) {\n            let hole: number[][] = holes[i];\n            let holeLength: number = hole.length;\n\n            if (holeLength < 3) {\n                throw new GeometryTagError(\"A polygon hole must have three or more positions.\");\n            }\n\n            if (hole[0][0] !== hole[holeLength - 1][0] ||\n                hole[0][1] !== hole[holeLength - 1][1]) {\n                throw new GeometryTagError(\"First and last positions of hole must be equivalent.\");\n            }\n\n            this._holes.push([]);\n\n            for (let vertex of hole) {\n                if (vertex[0] < 0 || vertex[0] > 1 ||\n                    vertex[1] < 0 || vertex[1] > 1) {\n                    throw new GeometryTagError(\"Basic coordinates of hole must be on the interval [0, 1].\");\n                }\n\n                this._holes[i].push(vertex.slice());\n            }\n        }\n    }\n\n    /**\n     * Get polygon property.\n     * @returns {Array<Array<number>>} Closed 2d polygon.\n     */\n    public get polygon(): number[][] {\n        return this._polygon;\n    }\n\n    /**\n     * Get holes property.\n     * @returns {Array<Array<Array<number>>>} Holes of 2d polygon.\n     */\n    public get holes(): number[][][] {\n        return this._holes;\n    }\n\n    /**\n     * Add a vertex to the polygon by appending it after the last vertex.\n     *\n     * @param {Array<number>} vertex - Vertex to add.\n     * @ignore\n     */\n    public addVertex2d(vertex: number[]): void {\n        let clamped: number[] = [\n            Math.max(0, Math.min(1, vertex[0])),\n            Math.max(0, Math.min(1, vertex[1])),\n        ];\n\n        this._polygon.splice(this._polygon.length - 1, 0, clamped);\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getVertex2d(index: number): number[] {\n        return this._polygon[index].slice();\n    }\n\n    /**\n     * Remove a vertex from the polygon.\n     *\n     * @param {number} index - The index of the vertex to remove.\n     * @ignore\n     */\n    public removeVertex2d(index: number): void {\n        if (index < 0 ||\n            index >= this._polygon.length ||\n            this._polygon.length < 4) {\n            throw new GeometryTagError(\"Index for removed vertex must be valid.\");\n        }\n\n        if (index > 0 && index < this._polygon.length - 1) {\n            this._polygon.splice(index, 1);\n        } else {\n            this._polygon.splice(0, 1);\n            this._polygon.pop();\n\n            let closing: number[] = this._polygon[0].slice();\n            this._polygon.push(closing);\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        if (index === 0 || index === this._polygon.length - 1) {\n            this._polygon[0] = changed.slice();\n            this._polygon[this._polygon.length - 1] = changed.slice();\n        } else {\n            this._polygon[index] = changed.slice();\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let xs: number[] = this._polygon.map((point: number[]): number => { return point[0]; });\n        let ys: number[] = this._polygon.map((point: number[]): number => { return point[1]; });\n\n        let minX: number = Math.min.apply(Math, xs);\n        let maxX: number = Math.max.apply(Math, xs);\n        let minY: number = Math.min.apply(Math, ys);\n        let maxY: number = Math.max.apply(Math, ys);\n\n        let centroid: number[] = this.getCentroid2d();\n\n        let minTranslationX: number = -minX;\n        let maxTranslationX: number = 1 - maxX;\n        let minTranslationY: number = -minY;\n        let maxTranslationY: number = 1 - maxY;\n\n        let translationX: number = Math.max(minTranslationX, Math.min(maxTranslationX, value[0] - centroid[0]));\n        let translationY: number = Math.max(minTranslationY, Math.min(maxTranslationY, value[1] - centroid[1]));\n\n        for (let point of this._polygon) {\n            point[0] += translationX;\n            point[1] += translationY;\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints3d(\n            this._subsample(this._polygon, this._subsampleThreshold),\n            transform);\n    }\n\n    /** @ignore */\n    public getVertex3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._polygon[index], 200);\n    }\n\n    /** @ignore */\n    public getVertices2d(): number[][] {\n        return this._polygon.slice();\n    }\n\n    /** @ignore */\n    public getVertices3d(transform: Transform): number[][] {\n        return this._getPoints3d(this._polygon, transform);\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry. Line segments between vertices will possibly be subsampled\n     * resulting in a larger number of points than the total number of vertices.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHolePoints3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(\n                        this._subsample(hole2d, this._subsampleThreshold),\n                        transform);\n                });\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHoleVertices3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(hole2d, transform);\n                });\n    }\n\n    /** @ignore */\n    public getCentroid2d(): number[] {\n        let polygon: number[][] = this._polygon;\n\n        let area: number = 0;\n        let centroidX: number = 0;\n        let centroidY: number = 0;\n\n        for (let i: number = 0; i < polygon.length - 1; i++) {\n            let xi: number = polygon[i][0];\n            let yi: number = polygon[i][1];\n            let xi1: number = polygon[i + 1][0];\n            let yi1: number = polygon[i + 1][1];\n\n            let a: number = xi * yi1 - xi1 * yi;\n\n            area += a;\n            centroidX += (xi + xi1) * a;\n            centroidY += (yi + yi1) * a;\n        }\n\n        area /= 2;\n\n        centroidX /= 6 * area;\n        centroidY /= 6 * area;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        let centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /** @ignore */\n    public get3dDomainTriangles3d(transform: Transform): number[] {\n        return this._triangulate(\n            this._project(this._polygon, transform),\n            this.getVertices3d(transform),\n            this._holes\n                .map(\n                    (hole2d: number[][]): number[][] => {\n                        return this._project(hole2d, transform);\n                    }),\n            this.getHoleVertices3d(transform));\n    }\n\n    /** @ignore */\n    public getTriangles3d(transform: Transform): number[] {\n        const threshold: number = this._subsampleThreshold;\n\n        const points2d: number[][] = this._project(this._subsample(this._polygon, threshold), transform);\n        const points3d: number[][] = this.getPoints3d(transform);\n\n        const holes2d: number[][][] = this._holes\n            .map(\n                (hole: number[][]): number[][] => {\n                    return this._project(this._subsample(hole, threshold), transform);\n                });\n\n        const holes3d: number[][][] = this.getHolePoints3d(transform);\n\n        return this._triangulate(\n            points2d,\n            points3d,\n            holes2d,\n            holes3d);\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility2d(): number[] {\n        return this._getPoleOfInaccessibility2d(this._polygon.slice());\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility3d(transform: Transform): number[] {\n        let pole2d: number[] = this._getPoleOfInaccessibility2d(this._polygon.slice());\n\n        return transform.unprojectBasic(pole2d, 200);\n    }\n\n    private _getPoints3d(points2d: number[][], transform: Transform): number[][] {\n        return points2d\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n\n    private _subsample(points2d: number[][], threshold: number): number[][] {\n        const subsampled: number[][] = [];\n        const length: number = points2d.length;\n\n        for (let index: number = 0; index < length; index++) {\n            const p1: number[] = points2d[index];\n            const p2: number[] = points2d[(index + 1) % length];\n\n            subsampled.push(p1);\n\n            const dist: number = Math.sqrt((p2[0] - p1[0]) ** 2 + (p2[1] - p1[1]) ** 2);\n            const subsamples: number = Math.floor(dist / threshold);\n            const coeff: number = 1 / (subsamples + 1);\n\n            for (let i: number = 1; i <= subsamples; i++) {\n                const alpha: number = i * coeff;\n\n                const subsample: number[] = [\n                    (1 - alpha) * p1[0] + alpha * p2[0],\n                    (1 - alpha) * p1[1] + alpha * p2[1],\n                ];\n\n                subsampled.push(subsample);\n            }\n        }\n\n        return subsampled;\n    }\n}\n\nexport default PolygonGeometry;\n",
-    "import {GeometryTagError, VertexGeometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class RectGeometry\n *\n * @classdesc Represents a rectangle geometry in the 2D basic image coordinate system.\n *\n * @example\n * ```\n * var basicRect = [0.5, 0.3, 0.7, 0.4];\n * var rectGeometry = new Mapillary.TagComponent.RectGeometry(basicRect);\n * ```\n */\nexport class RectGeometry extends VertexGeometry {\n    private _anchorIndex: number;\n    private _inverted: boolean;\n    private _rect: number[];\n\n    /**\n     * Create a rectangle geometry.\n     *\n     * @constructor\n     * @param {Array<number>} rect - An array representing the top-left and bottom-right\n     * corners of the rectangle in basic coordinates. Ordered according to [x0, y0, x1, y1].\n     *\n     * @throws {GeometryTagError} Rectangle coordinates must be valid basic coordinates.\n     */\n    constructor(rect: number[]) {\n        super();\n\n        if (rect[1] > rect[3]) {\n            throw new GeometryTagError(\"Basic Y coordinates values can not be inverted.\");\n        }\n\n        for (let coord of rect) {\n            if (coord < 0 || coord > 1) {\n                throw new GeometryTagError(\"Basic coordinates must be on the interval [0, 1].\");\n            }\n        }\n\n        this._anchorIndex = undefined;\n        this._rect = rect.slice(0, 4);\n        this._inverted = this._rect[0] > this._rect[2];\n    }\n\n    /**\n     * Get anchor index property.\n     *\n     * @returns {number} Index representing the current anchor property if\n     * achoring indexing has been initialized. If anchor indexing has not been\n     * initialized or has been terminated undefined will be returned.\n     * @ignore\n     */\n    public get anchorIndex(): number {\n        return this._anchorIndex;\n    }\n\n    /**\n     * Get inverted property.\n     *\n     * @returns {boolean} Boolean determining whether the rect geometry is\n     * inverted. For panoramas the rect geometrye may be inverted.\n     * @ignore\n     */\n    public get inverted(): boolean {\n        return this._inverted;\n    }\n\n    /**\n     * Get rect property.\n     *\n     * @returns {Array<number>} Array representing the top-left and bottom-right\n     * corners of the rectangle in basic coordinates.\n     */\n    public get rect(): number[] {\n        return this._rect;\n    }\n\n    /**\n     * Initialize anchor indexing to enable setting opposite vertex.\n     *\n     * @param {number} [index] - The index of the vertex to use as anchor.\n     *\n     * @throws {Error} If anchor indexing has already been initialized.\n     * @throws {Error} If index is not valid (0 to 3).\n     * @ignore\n     */\n    public initializeAnchorIndexing(index?: number): void {\n        if (this._anchorIndex !== undefined) {\n            throw new Error(\"Anchor indexing is already initialized.\");\n        }\n\n        if (index < 0 || index > 3) {\n            throw new Error(`Invalid anchor index: ${index}.`);\n        }\n\n        this._anchorIndex = index === undefined ? 0 : index;\n    }\n\n    /**\n     * Terminate anchor indexing to disable setting pposite vertex.\n     * @ignore\n     */\n    public terminateAnchorIndexing(): void {\n        this._anchorIndex = undefined;\n    }\n\n    /**\n     * Set the value of the vertex opposite to the anchor in the polygon\n     * representation of the rectangle.\n     *\n     * @description Setting the opposite vertex may change the anchor index.\n     *\n     * @param {Array<number>} opposite - The new value of the vertex opposite to the anchor.\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     *\n     * @throws {Error} When anchor indexing has not been initialized.\n     * @ignore\n     */\n    public setOppositeVertex2d(opposite: number[], transform: Transform): void {\n        if (this._anchorIndex === undefined) {\n            throw new Error(\"Anchor indexing needs to be initialized.\");\n        }\n\n        const changed: number[] = [\n            Math.max(0, Math.min(1, opposite[0])),\n            Math.max(0, Math.min(1, opposite[1])),\n        ];\n\n        const original: number[] = this._rect.slice();\n        const anchor: number[] = this._anchorIndex === 0 ? [original[0], original[3]] :\n            this._anchorIndex === 1 ? [original[0], original[1]] :\n            this._anchorIndex === 2 ? [original[2], original[1]] :\n            [original[2], original[3]];\n\n        if (transform.fullPano) {\n            const deltaX: number = this._anchorIndex < 2 ?\n                changed[0] - original[2] :\n                changed[0] - original[0];\n\n            if (!this._inverted && this._anchorIndex < 2 && changed[0] < 0.25 && original[2] > 0.75 && deltaX < -0.5) {\n                // right side passes boundary rightward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (!this._inverted && this._anchorIndex >= 2 && changed[0] < 0.25 && original[2] > 0.75 && deltaX < -0.5) {\n                // left side passes right side and boundary rightward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (this._inverted && this._anchorIndex >= 2 && changed[0] < 0.25 && original[0] > 0.75 && deltaX < -0.5) {\n                this._inverted = false;\n                if (anchor[0] > changed[0]) {\n                    // left side passes boundary rightward\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                } else {\n                    // left side passes right side and boundary rightward\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                }\n            } else if (!this._inverted && this._anchorIndex >= 2 && changed[0] > 0.75 && original[0] < 0.25 && deltaX > 0.5) {\n                // left side passes boundary leftward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (!this._inverted && this._anchorIndex < 2 && changed[0] > 0.75 && original[0] < 0.25 && deltaX > 0.5) {\n                // right side passes left side and boundary leftward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (this._inverted && this._anchorIndex < 2 && changed[0] > 0.75 && original[2] < 0.25 && deltaX > 0.5) {\n                this._inverted = false;\n                if (anchor[0] > changed[0]) {\n                    // right side passes boundary leftward\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                } else {\n                    // right side passes left side and boundary leftward\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                }\n            } else if (this._inverted && this._anchorIndex < 2 && changed[0] > original[0]) {\n                // inverted and right side passes left side completing a loop\n                this._inverted = false;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (this._inverted && this._anchorIndex >= 2 && changed[0] < original[2]) {\n                // inverted and left side passes right side completing a loop\n                this._inverted = false;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (this._inverted) {\n                // if still inverted only top and bottom can switch\n                if (this._anchorIndex < 2) {\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                } else {\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                }\n            } else {\n                // if still not inverted treat as non full pano\n                if (anchor[0] <= changed[0] && anchor[1] > changed[1]) {\n                    this._anchorIndex = 0;\n                } else if (anchor[0] <= changed[0] && anchor[1] <= changed[1]) {\n                    this._anchorIndex = 1;\n                } else if (anchor[0] > changed[0] && anchor[1] <= changed[1]) {\n                    this._anchorIndex = 2;\n                } else {\n                    this._anchorIndex = 3;\n                }\n            }\n\n            const rect: number[] = [];\n            if (this._anchorIndex === 0) {\n                rect[0] = anchor[0];\n                rect[1] = changed[1];\n                rect[2] = changed[0];\n                rect[3] = anchor[1];\n            } else if (this._anchorIndex === 1) {\n                rect[0] = anchor[0];\n                rect[1] = anchor[1];\n                rect[2] = changed[0];\n                rect[3] = changed[1];\n            } else if (this._anchorIndex === 2) {\n                rect[0] = changed[0];\n                rect[1] = anchor[1];\n                rect[2] = anchor[0];\n                rect[3] = changed[1];\n            } else {\n                rect[0] = changed[0];\n                rect[1] = changed[1];\n                rect[2] = anchor[0];\n                rect[3] = anchor[1];\n            }\n\n            if (!this._inverted && rect[0] > rect[2] ||\n                this._inverted && rect[0] < rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n\n            if (rect[1] > rect[3]) {\n                rect[1] = original[1];\n                rect[3] = original[3];\n            }\n\n            this._rect[0] = rect[0];\n            this._rect[1] = rect[1];\n            this._rect[2] = rect[2];\n            this._rect[3] = rect[3];\n        } else {\n            if (anchor[0] <= changed[0] && anchor[1] > changed[1]) {\n                this._anchorIndex = 0;\n            } else if (anchor[0] <= changed[0] && anchor[1] <= changed[1]) {\n                this._anchorIndex = 1;\n            } else if (anchor[0] > changed[0] && anchor[1] <= changed[1]) {\n                this._anchorIndex = 2;\n            } else {\n                this._anchorIndex = 3;\n            }\n\n            const rect: number[] = [];\n            if (this._anchorIndex === 0) {\n                rect[0] = anchor[0];\n                rect[1] = changed[1];\n                rect[2] = changed[0];\n                rect[3] = anchor[1];\n            } else if (this._anchorIndex === 1) {\n                rect[0] = anchor[0];\n                rect[1] = anchor[1];\n                rect[2] = changed[0];\n                rect[3] = changed[1];\n            } else if (this._anchorIndex === 2) {\n                rect[0] = changed[0];\n                rect[1] = anchor[1];\n                rect[2] = anchor[0];\n                rect[3] = changed[1];\n            } else {\n                rect[0] = changed[0];\n                rect[1] = changed[1];\n                rect[2] = anchor[0];\n                rect[3] = anchor[1];\n            }\n\n            if (rect[0] > rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n\n            if (rect[1] > rect[3]) {\n                rect[1] = original[1];\n                rect[3] = original[3];\n            }\n\n            this._rect[0] = rect[0];\n            this._rect[1] = rect[1];\n            this._rect[2] = rect[2];\n            this._rect[3] = rect[3];\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set the value of a vertex in the polygon representation of the rectangle.\n     *\n     * @description The polygon is defined to have the first vertex at the\n     * bottom-left corner with the rest of the vertices following in clockwise order.\n     *\n     * @param {number} index - The index of the vertex to be set.\n     * @param {Array<number>} value - The new value of the vertex.\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     * @ignore\n     */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        let original: number[] = this._rect.slice();\n\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        let rect: number[] = [];\n        if (index === 0) {\n            rect[0] = changed[0];\n            rect[1] = original[1];\n            rect[2] = original[2];\n            rect[3] = changed[1];\n        } else if (index === 1) {\n            rect[0] = changed[0];\n            rect[1] = changed[1];\n            rect[2] = original[2];\n            rect[3] = original[3];\n        } else if (index === 2) {\n            rect[0] = original[0];\n            rect[1] = changed[1];\n            rect[2] = changed[0];\n            rect[3] = original[3];\n        } else if (index === 3) {\n            rect[0] = original[0];\n            rect[1] = original[1];\n            rect[2] = changed[0];\n            rect[3] = changed[1];\n        }\n\n        if (transform.fullPano) {\n            let passingBoundaryLeftward: boolean =\n                index < 2 && changed[0] > 0.75 && original[0] < 0.25 ||\n                index >= 2 && this._inverted && changed[0] > 0.75 && original[2] < 0.25;\n\n            let passingBoundaryRightward: boolean =\n                index < 2 && this._inverted && changed[0] < 0.25 && original[0] > 0.75 ||\n                index >= 2 && changed[0] < 0.25 && original[2] > 0.75;\n\n            if (passingBoundaryLeftward || passingBoundaryRightward) {\n                this._inverted = !this._inverted;\n            } else {\n                if (rect[0] - original[0] < -0.25) {\n                    rect[0] = original[0];\n                }\n\n                if (rect[2] - original[2] > 0.25) {\n                    rect[2] = original[2];\n                }\n            }\n\n            if (!this._inverted && rect[0] > rect[2] ||\n                this._inverted && rect[0] < rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n        } else {\n            if (rect[0] > rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n        }\n\n        if (rect[1] > rect[3]) {\n            rect[1] = original[1];\n            rect[3] = original[3];\n        }\n\n        this._rect[0] = rect[0];\n        this._rect[1] = rect[1];\n        this._rect[2] = rect[2];\n        this._rect[3] = rect[3];\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let original: number[] = this._rect.slice();\n\n        let x0: number = original[0];\n        let x1: number = this._inverted ? original[2] + 1 : original[2];\n\n        let y0: number = original[1];\n        let y1: number = original[3];\n\n        let centerX: number = x0 + (x1 - x0) / 2;\n        let centerY: number = y0 + (y1 - y0) / 2;\n\n        let translationX: number = 0;\n\n        if (transform.gpano != null &&\n            transform.gpano.CroppedAreaImageWidthPixels === transform.gpano.FullPanoWidthPixels) {\n            translationX = this._inverted ? value[0] + 1 - centerX : value[0] - centerX;\n        } else {\n            let minTranslationX: number = -x0;\n            let maxTranslationX: number = 1 - x1;\n\n            translationX = Math.max(minTranslationX, Math.min(maxTranslationX, value[0] - centerX));\n        }\n\n        let minTranslationY: number = -y0;\n        let maxTranslationY: number = 1 - y1;\n\n        let translationY: number = Math.max(minTranslationY, Math.min(maxTranslationY, value[1] - centerY));\n\n        this._rect[0] = original[0] + translationX;\n        this._rect[1] = original[1] + translationY;\n        this._rect[2] = original[2] + translationX;\n        this._rect[3] = original[3] + translationY;\n\n        if (this._rect[0] < 0) {\n            this._rect[0] += 1;\n            this._inverted = !this._inverted;\n        } else if (this._rect[0] > 1) {\n            this._rect[0] -= 1;\n            this._inverted = !this._inverted;\n        }\n\n        if (this._rect[2] < 0) {\n            this._rect[2] += 1;\n            this._inverted = !this._inverted;\n        } else if (this._rect[2] > 1) {\n            this._rect[2] -= 1;\n            this._inverted = !this._inverted;\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the 3D coordinates for the vertices of the rectangle with\n     * interpolated points along the lines.\n     *\n     * @param {Transform} transform - The transform of the node related to\n     * the rectangle.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates\n     * representing the rectangle.\n     * @ignore\n     */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints2d()\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The method shifts the right side\n     * coordinates of the rectangle by one unit to ensure that the vertices are ordered\n     * clockwise.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getVertex2d(index: number): number[] {\n        return this._rectToVertices2d(this._rect)[index];\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The coordinates will not be shifted\n     * so they may not appear in clockwise order when layed out on the plane.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getNonAdjustedVertex2d(index: number): number[] {\n        return this._rectToNonAdjustedVertices2d(this._rect)[index];\n    }\n\n    /**\n     * Get a vertex from the polygon representation of the 3D coordinates for the\n     * vertices of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {number} index - Vertex index.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public getVertex3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._rectToVertices2d(this._rect)[index], 200);\n    }\n\n    /**\n     * Get a polygon representation of the 2D basic coordinates for the vertices of the rectangle.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates representing\n     * the rectangle vertices.\n     * @ignore\n     */\n    public getVertices2d(): number[][] {\n        return this._rectToVertices2d(this._rect);\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of the rectangle.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the rectangle vertices.\n     * @ignore\n     */\n    public getVertices3d(transform: Transform): number[][] {\n        return this._rectToVertices2d(this._rect)\n            .map(\n                (vertex: number[]) => {\n                    return transform.unprojectBasic(vertex, 200);\n                });\n    }\n\n    /** @ignore */\n    public getCentroid2d(): number[] {\n        const rect: number[] = this._rect;\n\n        const x0: number = rect[0];\n        const x1: number = this._inverted ? rect[2] + 1 : rect[2];\n\n        const y0: number = rect[1];\n        const y1: number = rect[3];\n\n        const centroidX: number = (x0 + x1) / 2;\n        const centroidY: number = (y0 + y1) / 2;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        const centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /**\n     * @ignore\n     */\n    public getPoleOfInaccessibility2d(): number[] {\n        return this._getPoleOfInaccessibility2d(this._rectToVertices2d(this._rect));\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility3d(transform: Transform): number[] {\n        let pole2d: number[] = this._getPoleOfInaccessibility2d(this._rectToVertices2d(this._rect));\n\n        return transform.unprojectBasic(pole2d, 200);\n    }\n\n    /** @ignore */\n    public getTriangles3d(transform: Transform): number[] {\n        return this._triangulate(\n            this._project(this._getPoints2d(), transform),\n            this.getPoints3d(transform));\n    }\n\n    /**\n     * Check if a particular bottom-right value is valid according to the current\n     * rectangle coordinates.\n     *\n     * @param {Array<number>} bottomRight - The bottom-right coordinates to validate\n     * @returns {boolean} Value indicating whether the provided bottom-right coordinates\n     * are valid.\n     * @ignore\n     */\n    public validate(bottomRight: number[]): boolean {\n        let rect: number[] = this._rect;\n\n        if (!this._inverted && bottomRight[0] < rect[0] ||\n            bottomRight[0] - rect[2] > 0.25 ||\n            bottomRight[1] < rect[1]) {\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the 2D coordinates for the vertices of the rectangle with\n     * interpolated points along the lines.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates\n     * representing the rectangle.\n     */\n    private _getPoints2d(): number[][] {\n        let vertices2d: number[][] = this._rectToVertices2d(this._rect);\n\n        let sides: number = vertices2d.length - 1;\n        let sections: number = 10;\n\n        let points2d: number[][] = [];\n\n        for (let i: number = 0; i < sides; ++i) {\n            let startX: number = vertices2d[i][0];\n            let startY: number = vertices2d[i][1];\n\n            let endX: number = vertices2d[i + 1][0];\n            let endY: number = vertices2d[i + 1][1];\n\n            let intervalX: number = (endX - startX) / (sections - 1);\n            let intervalY: number = (endY - startY) / (sections - 1);\n\n            for (let j: number = 0; j < sections; ++j) {\n                let point: number[] = [\n                    startX + j * intervalX,\n                    startY + j * intervalY,\n                ];\n\n                points2d.push(point);\n            }\n        }\n\n        return points2d;\n    }\n\n    /**\n     * Convert the top-left, bottom-right representation of a rectangle to a polygon\n     * representation of the vertices starting at the bottom-left corner going\n     * clockwise.\n     *\n     * @description The method shifts the right side coordinates of the rectangle\n     * by one unit to ensure that the vertices are ordered clockwise.\n     *\n     * @param {Array<number>} rect - Top-left, bottom-right representation of a\n     * rectangle.\n     * @returns {Array<Array<number>>} Polygon representation of the vertices of the\n     * rectangle.\n     */\n    private _rectToVertices2d(rect: number[]): number[][] {\n        return [\n            [rect[0], rect[3]],\n            [rect[0], rect[1]],\n            [this._inverted ? rect[2] + 1 : rect[2], rect[1]],\n            [this._inverted ? rect[2] + 1 : rect[2], rect[3]],\n            [rect[0], rect[3]],\n        ];\n    }\n\n    /**\n     * Convert the top-left, bottom-right representation of a rectangle to a polygon\n     * representation of the vertices starting at the bottom-left corner going\n     * clockwise.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The coordinates will not be shifted\n     * to ensure that the vertices are ordered clockwise when layed out on the plane.\n     *\n     * @param {Array<number>} rect - Top-left, bottom-right representation of a\n     * rectangle.\n     * @returns {Array<Array<number>>} Polygon representation of the vertices of the\n     * rectangle.\n     */\n    private _rectToNonAdjustedVertices2d(rect: number[]): number[][] {\n        return [\n            [rect[0], rect[3]],\n            [rect[0], rect[1]],\n            [rect[2], rect[1]],\n            [rect[2], rect[3]],\n            [rect[0], rect[3]],\n        ];\n    }\n}\n\nexport default RectGeometry;\n",
-    "import earcut from \"earcut\";\nimport * as polylabel from \"@mapbox/polylabel\";\nimport * as THREE from \"three\";\n\nimport {Geometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class VertexGeometry\n * @abstract\n * @classdesc Represents a vertex geometry.\n */\nexport abstract class VertexGeometry extends Geometry {\n\n    /**\n     * Create a vertex geometry.\n     *\n     * @constructor\n     * @ignore\n     */\n    constructor() {\n        super();\n    }\n\n    /**\n     * Get the 3D coordinates for the vertices of the geometry with possibly\n     * subsampled points along the lines.\n     *\n     * @param {Transform} transform - The transform of the node related to\n     * the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates\n     * representing the geometry.\n     * @ignore\n     */\n    public abstract getPoints3d(transform: Transform): number[][];\n\n    /**\n     * Get the polygon pole of inaccessibility, the most\n     * distant internal point from the polygon outline.\n     *\n     * @returns {Array<number>} 2D basic coordinates for the pole of inaccessibility.\n     * @ignore\n     */\n    public abstract getPoleOfInaccessibility2d(): number[];\n\n    /**\n     * Get the polygon pole of inaccessibility, the most\n     * distant internal point from the polygon outline.\n     *\n     * @param transform - The transform of the node related to\n     * the geometry.\n     * @returns {Array<number>} 3D world coordinates for the pole of inaccessibility.\n     * @ignore\n     */\n    public abstract getPoleOfInaccessibility3d(transform: Transform): number[];\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public abstract getVertex2d(index: number): number[];\n\n    /**\n     * Get a vertex from the polygon representation of the 3D coordinates for the\n     * vertices of the geometry.\n     *\n     * @param {number} index - Vertex index.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} Array representing the 3D world coordinates of the vertex.\n     * @ignore\n     */\n    public abstract getVertex3d(index: number, transform: Transform): number[];\n\n    /**\n     * Get a polygon representation of the 2D basic coordinates for the vertices of the geometry.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public abstract getVertices2d(): number[][];\n\n    /**\n     * Get a polygon representation of the 3D world coordinates for the vertices of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public abstract getVertices3d(transform: Transform): number[][];\n\n    /**\n     * Get a flattend array of the 3D world coordinates for the\n     * triangles filling the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} Flattened array of 3D world coordinates of the triangles.\n     * @ignore\n     */\n    public abstract getTriangles3d(transform: Transform): number[];\n\n    /**\n     * Set the value of a vertex in the polygon representation of the geometry.\n     *\n     * @description The polygon is defined to have the first vertex at the\n     * bottom-left corner with the rest of the vertices following in clockwise order.\n     *\n     * @param {number} index - The index of the vertex to be set.\n     * @param {Array<number>} value - The new value of the vertex.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @ignore\n     */\n    public abstract setVertex2d(index: number, value: number[], transform: Transform): void;\n\n    /**\n     * Finds the polygon pole of inaccessibility, the most distant internal\n     * point from the polygon outline.\n     *\n     * @param {Array<Array<number>>} points2d - 2d points of outline to triangulate.\n     * @returns {Array<number>} Point of inaccessibility.\n     * @ignore\n     */\n    protected _getPoleOfInaccessibility2d(points2d: number[][]): number[] {\n        let pole2d: number[] = polylabel([points2d], 3e-2);\n\n        return pole2d;\n    }\n\n    /**\n     * Triangulates a 2d polygon and returns the triangle\n     * representation as a flattened array of 3d points.\n     *\n     * @param {Array<Array<number>>} points2d - 2d points of outline to triangulate.\n     * @param {Array<Array<number>>} points3d - 3d points of outline corresponding to the 2d points.\n     * @param {Array<Array<Array<number>>>} [holes2d] - 2d points of holes to triangulate.\n     * @param {Array<Array<Array<number>>>} [holes3d] - 3d points of holes corresponding to the 2d points.\n     * @returns {Array<number>} Flattened array of 3d points ordered based on the triangles.\n     * @ignore\n     */\n    protected _triangulate(\n        points2d: number[][],\n        points3d: number[][],\n        holes2d?: number[][][],\n        holes3d?: number[][][]): number[] {\n\n        let data: number[][][] = [points2d.slice(0, -1)];\n        for (let hole2d of holes2d != null ? holes2d : []) {\n            data.push(hole2d.slice(0, -1));\n        }\n\n        let points: number[][] = points3d.slice(0, -1);\n        for (let hole3d of holes3d != null ? holes3d : []) {\n            points = points.concat(hole3d.slice(0, -1));\n        }\n\n        let flattened: { vertices: number[], holes: number[], dimensions: number } = earcut.flatten(data);\n        let indices: number[] = earcut(flattened.vertices, flattened.holes, flattened.dimensions);\n        let triangles: number[] = [];\n\n        for (let i: number = 0; i < indices.length; ++i) {\n            let point: number[] = points[indices[i]];\n\n            triangles.push(point[0]);\n            triangles.push(point[1]);\n            triangles.push(point[2]);\n        }\n\n        return triangles;\n    }\n\n    protected _project(points2d: number[][], transform: Transform): number[][] {\n        const camera: THREE.Camera = new THREE.Camera();\n        camera.up.copy(transform.upVector());\n        camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));\n        camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));\n        camera.updateMatrix();\n        camera.updateMatrixWorld(true);\n\n        const projected: number[][] = points2d\n            .map(\n                (point2d: number[]): number[] => {\n                    const pointWorld: number[] = transform.unprojectBasic(point2d, 10000);\n                    const pointCamera: THREE.Vector3 =\n                        new THREE.Vector3(pointWorld[0], pointWorld[1], pointWorld[2])\n                            .applyMatrix4(camera.matrixWorldInverse);\n\n                    return [pointCamera.x / pointCamera.z, pointCamera.y / pointCamera.z];\n                });\n\n        return projected;\n    }\n}\n\nexport default VertexGeometry;\n",
+    "import {GeometryTagError, VertexGeometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PolygonGeometry\n *\n * @classdesc Represents a polygon geometry in the 2D basic image coordinate system.\n * All polygons and holes provided to the constructor needs to be closed.\n *\n * @example\n * ```\n * var basicPolygon = [[0.5, 0.3], [0.7, 0.3], [0.6, 0.5], [0.5, 0.3]];\n * var polygonGeometry = new Mapillary.TagComponent.PolygonGeometry(basicPolygon);\n * ```\n */\nexport class PolygonGeometry extends VertexGeometry {\n    private _polygon: number[][];\n    private _holes: number[][][];\n\n    /**\n     * Create a polygon geometry.\n     *\n     * @constructor\n     * @param {Array<Array<number>>} polygon - Array of polygon vertices. Must be closed.\n     * @param {Array<Array<Array<number>>>} [holes] - Array of arrays of hole vertices.\n     * Each array of holes vertices must be closed.\n     *\n     * @throws {GeometryTagError} Polygon coordinates must be valid basic coordinates.\n     */\n    constructor(polygon: number[][], holes?: number[][][]) {\n        super();\n\n        let polygonLength: number = polygon.length;\n\n        if (polygonLength < 3) {\n            throw new GeometryTagError(\"A polygon must have three or more positions.\");\n        }\n\n        if (polygon[0][0] !== polygon[polygonLength - 1][0] ||\n            polygon[0][1] !== polygon[polygonLength - 1][1]) {\n            throw new GeometryTagError(\"First and last positions must be equivalent.\");\n        }\n\n        this._polygon = [];\n        for (let vertex of polygon) {\n            if (vertex[0] < 0 || vertex[0] > 1 ||\n                vertex[1] < 0 || vertex[1] > 1) {\n                throw new GeometryTagError(\"Basic coordinates of polygon must be on the interval [0, 1].\");\n            }\n\n            this._polygon.push(vertex.slice());\n        }\n\n        this._holes = [];\n\n        if (holes == null) {\n            return;\n        }\n\n        for (let i: number = 0; i < holes.length; i++) {\n            let hole: number[][] = holes[i];\n            let holeLength: number = hole.length;\n\n            if (holeLength < 3) {\n                throw new GeometryTagError(\"A polygon hole must have three or more positions.\");\n            }\n\n            if (hole[0][0] !== hole[holeLength - 1][0] ||\n                hole[0][1] !== hole[holeLength - 1][1]) {\n                throw new GeometryTagError(\"First and last positions of hole must be equivalent.\");\n            }\n\n            this._holes.push([]);\n\n            for (let vertex of hole) {\n                if (vertex[0] < 0 || vertex[0] > 1 ||\n                    vertex[1] < 0 || vertex[1] > 1) {\n                    throw new GeometryTagError(\"Basic coordinates of hole must be on the interval [0, 1].\");\n                }\n\n                this._holes[i].push(vertex.slice());\n            }\n        }\n    }\n\n    /**\n     * Get polygon property.\n     * @returns {Array<Array<number>>} Closed 2d polygon.\n     */\n    public get polygon(): number[][] {\n        return this._polygon;\n    }\n\n    /**\n     * Get holes property.\n     * @returns {Array<Array<Array<number>>>} Holes of 2d polygon.\n     */\n    public get holes(): number[][][] {\n        return this._holes;\n    }\n\n    /**\n     * Add a vertex to the polygon by appending it after the last vertex.\n     *\n     * @param {Array<number>} vertex - Vertex to add.\n     * @ignore\n     */\n    public addVertex2d(vertex: number[]): void {\n        let clamped: number[] = [\n            Math.max(0, Math.min(1, vertex[0])),\n            Math.max(0, Math.min(1, vertex[1])),\n        ];\n\n        this._polygon.splice(this._polygon.length - 1, 0, clamped);\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getVertex2d(index: number): number[] {\n        return this._polygon[index].slice();\n    }\n\n    /**\n     * Remove a vertex from the polygon.\n     *\n     * @param {number} index - The index of the vertex to remove.\n     * @ignore\n     */\n    public removeVertex2d(index: number): void {\n        if (index < 0 ||\n            index >= this._polygon.length ||\n            this._polygon.length < 4) {\n            throw new GeometryTagError(\"Index for removed vertex must be valid.\");\n        }\n\n        if (index > 0 && index < this._polygon.length - 1) {\n            this._polygon.splice(index, 1);\n        } else {\n            this._polygon.splice(0, 1);\n            this._polygon.pop();\n\n            let closing: number[] = this._polygon[0].slice();\n            this._polygon.push(closing);\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        if (index === 0 || index === this._polygon.length - 1) {\n            this._polygon[0] = changed.slice();\n            this._polygon[this._polygon.length - 1] = changed.slice();\n        } else {\n            this._polygon[index] = changed.slice();\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let xs: number[] = this._polygon.map((point: number[]): number => { return point[0]; });\n        let ys: number[] = this._polygon.map((point: number[]): number => { return point[1]; });\n\n        let minX: number = Math.min.apply(Math, xs);\n        let maxX: number = Math.max.apply(Math, xs);\n        let minY: number = Math.min.apply(Math, ys);\n        let maxY: number = Math.max.apply(Math, ys);\n\n        let centroid: number[] = this.getCentroid2d();\n\n        let minTranslationX: number = -minX;\n        let maxTranslationX: number = 1 - maxX;\n        let minTranslationY: number = -minY;\n        let maxTranslationY: number = 1 - maxY;\n\n        let translationX: number = Math.max(minTranslationX, Math.min(maxTranslationX, value[0] - centroid[0]));\n        let translationY: number = Math.max(minTranslationY, Math.min(maxTranslationY, value[1] - centroid[1]));\n\n        for (let point of this._polygon) {\n            point[0] += translationX;\n            point[1] += translationY;\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints3d(\n            this._subsample(this._polygon),\n            transform);\n    }\n\n    /** @ignore */\n    public getVertex3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._polygon[index], 200);\n    }\n\n    /** @ignore */\n    public getVertices2d(): number[][] {\n        return this._polygon.slice();\n    }\n\n    /** @ignore */\n    public getVertices3d(transform: Transform): number[][] {\n        return this._getPoints3d(this._polygon, transform);\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry. Line segments between vertices will possibly be subsampled\n     * resulting in a larger number of points than the total number of vertices.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHolePoints3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(\n                        this._subsample(hole2d),\n                        transform);\n                });\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHoleVertices3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(hole2d, transform);\n                });\n    }\n\n    /** @ignore */\n    public getCentroid2d(): number[] {\n        let polygon: number[][] = this._polygon;\n\n        let area: number = 0;\n        let centroidX: number = 0;\n        let centroidY: number = 0;\n\n        for (let i: number = 0; i < polygon.length - 1; i++) {\n            let xi: number = polygon[i][0];\n            let yi: number = polygon[i][1];\n            let xi1: number = polygon[i + 1][0];\n            let yi1: number = polygon[i + 1][1];\n\n            let a: number = xi * yi1 - xi1 * yi;\n\n            area += a;\n            centroidX += (xi + xi1) * a;\n            centroidY += (yi + yi1) * a;\n        }\n\n        area /= 2;\n\n        centroidX /= 6 * area;\n        centroidY /= 6 * area;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        let centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /** @ignore */\n    public get3dDomainTriangles3d(transform: Transform): number[] {\n        return this._triangulate(\n            this._project(this._polygon, transform),\n            this.getVertices3d(transform),\n            this._holes\n                .map(\n                    (hole2d: number[][]): number[][] => {\n                        return this._project(hole2d, transform);\n                    }),\n            this.getHoleVertices3d(transform));\n    }\n\n    /** @ignore */\n    public getTriangles3d(transform: Transform): number[] {\n        if (transform.fullPano) {\n            return this._triangulatePano(\n                this._polygon.slice(),\n                this.holes.slice(),\n                transform);\n        }\n\n        const points2d: number[][] = this._project(this._subsample(this._polygon), transform);\n        const points3d: number[][] = this.getPoints3d(transform);\n\n        const holes2d: number[][][] = this._holes\n            .map(\n                (hole: number[][]): number[][] => {\n                    return this._project(this._subsample(hole), transform);\n                });\n\n        const holes3d: number[][][] = this.getHolePoints3d(transform);\n\n        return this._triangulate(\n            points2d,\n            points3d,\n            holes2d,\n            holes3d);\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility2d(): number[] {\n        return this._getPoleOfInaccessibility2d(this._polygon.slice());\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility3d(transform: Transform): number[] {\n        let pole2d: number[] = this._getPoleOfInaccessibility2d(this._polygon.slice());\n\n        return transform.unprojectBasic(pole2d, 200);\n    }\n\n    private _getPoints3d(points2d: number[][], transform: Transform): number[][] {\n        return points2d\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n}\n\nexport default PolygonGeometry;\n",
+    "import {GeometryTagError, VertexGeometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class RectGeometry\n *\n * @classdesc Represents a rectangle geometry in the 2D basic image coordinate system.\n *\n * @example\n * ```\n * var basicRect = [0.5, 0.3, 0.7, 0.4];\n * var rectGeometry = new Mapillary.TagComponent.RectGeometry(basicRect);\n * ```\n */\nexport class RectGeometry extends VertexGeometry {\n    private _anchorIndex: number;\n    private _inverted: boolean;\n    private _rect: number[];\n\n    /**\n     * Create a rectangle geometry.\n     *\n     * @constructor\n     * @param {Array<number>} rect - An array representing the top-left and bottom-right\n     * corners of the rectangle in basic coordinates. Ordered according to [x0, y0, x1, y1].\n     *\n     * @throws {GeometryTagError} Rectangle coordinates must be valid basic coordinates.\n     */\n    constructor(rect: number[]) {\n        super();\n\n        if (rect[1] > rect[3]) {\n            throw new GeometryTagError(\"Basic Y coordinates values can not be inverted.\");\n        }\n\n        for (let coord of rect) {\n            if (coord < 0 || coord > 1) {\n                throw new GeometryTagError(\"Basic coordinates must be on the interval [0, 1].\");\n            }\n        }\n\n        this._anchorIndex = undefined;\n        this._rect = rect.slice(0, 4);\n        this._inverted = this._rect[0] > this._rect[2];\n    }\n\n    /**\n     * Get anchor index property.\n     *\n     * @returns {number} Index representing the current anchor property if\n     * achoring indexing has been initialized. If anchor indexing has not been\n     * initialized or has been terminated undefined will be returned.\n     * @ignore\n     */\n    public get anchorIndex(): number {\n        return this._anchorIndex;\n    }\n\n    /**\n     * Get inverted property.\n     *\n     * @returns {boolean} Boolean determining whether the rect geometry is\n     * inverted. For panoramas the rect geometrye may be inverted.\n     * @ignore\n     */\n    public get inverted(): boolean {\n        return this._inverted;\n    }\n\n    /**\n     * Get rect property.\n     *\n     * @returns {Array<number>} Array representing the top-left and bottom-right\n     * corners of the rectangle in basic coordinates.\n     */\n    public get rect(): number[] {\n        return this._rect;\n    }\n\n    /**\n     * Initialize anchor indexing to enable setting opposite vertex.\n     *\n     * @param {number} [index] - The index of the vertex to use as anchor.\n     *\n     * @throws {Error} If anchor indexing has already been initialized.\n     * @throws {Error} If index is not valid (0 to 3).\n     * @ignore\n     */\n    public initializeAnchorIndexing(index?: number): void {\n        if (this._anchorIndex !== undefined) {\n            throw new Error(\"Anchor indexing is already initialized.\");\n        }\n\n        if (index < 0 || index > 3) {\n            throw new Error(`Invalid anchor index: ${index}.`);\n        }\n\n        this._anchorIndex = index === undefined ? 0 : index;\n    }\n\n    /**\n     * Terminate anchor indexing to disable setting pposite vertex.\n     * @ignore\n     */\n    public terminateAnchorIndexing(): void {\n        this._anchorIndex = undefined;\n    }\n\n    /**\n     * Set the value of the vertex opposite to the anchor in the polygon\n     * representation of the rectangle.\n     *\n     * @description Setting the opposite vertex may change the anchor index.\n     *\n     * @param {Array<number>} opposite - The new value of the vertex opposite to the anchor.\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     *\n     * @throws {Error} When anchor indexing has not been initialized.\n     * @ignore\n     */\n    public setOppositeVertex2d(opposite: number[], transform: Transform): void {\n        if (this._anchorIndex === undefined) {\n            throw new Error(\"Anchor indexing needs to be initialized.\");\n        }\n\n        const changed: number[] = [\n            Math.max(0, Math.min(1, opposite[0])),\n            Math.max(0, Math.min(1, opposite[1])),\n        ];\n\n        const original: number[] = this._rect.slice();\n        const anchor: number[] = this._anchorIndex === 0 ? [original[0], original[3]] :\n            this._anchorIndex === 1 ? [original[0], original[1]] :\n            this._anchorIndex === 2 ? [original[2], original[1]] :\n            [original[2], original[3]];\n\n        if (transform.fullPano) {\n            const deltaX: number = this._anchorIndex < 2 ?\n                changed[0] - original[2] :\n                changed[0] - original[0];\n\n            if (!this._inverted && this._anchorIndex < 2 && changed[0] < 0.25 && original[2] > 0.75 && deltaX < -0.5) {\n                // right side passes boundary rightward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (!this._inverted && this._anchorIndex >= 2 && changed[0] < 0.25 && original[2] > 0.75 && deltaX < -0.5) {\n                // left side passes right side and boundary rightward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (this._inverted && this._anchorIndex >= 2 && changed[0] < 0.25 && original[0] > 0.75 && deltaX < -0.5) {\n                this._inverted = false;\n                if (anchor[0] > changed[0]) {\n                    // left side passes boundary rightward\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                } else {\n                    // left side passes right side and boundary rightward\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                }\n            } else if (!this._inverted && this._anchorIndex >= 2 && changed[0] > 0.75 && original[0] < 0.25 && deltaX > 0.5) {\n                // left side passes boundary leftward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (!this._inverted && this._anchorIndex < 2 && changed[0] > 0.75 && original[0] < 0.25 && deltaX > 0.5) {\n                // right side passes left side and boundary leftward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (this._inverted && this._anchorIndex < 2 && changed[0] > 0.75 && original[2] < 0.25 && deltaX > 0.5) {\n                this._inverted = false;\n                if (anchor[0] > changed[0]) {\n                    // right side passes boundary leftward\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                } else {\n                    // right side passes left side and boundary leftward\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                }\n            } else if (this._inverted && this._anchorIndex < 2 && changed[0] > original[0]) {\n                // inverted and right side passes left side completing a loop\n                this._inverted = false;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (this._inverted && this._anchorIndex >= 2 && changed[0] < original[2]) {\n                // inverted and left side passes right side completing a loop\n                this._inverted = false;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (this._inverted) {\n                // if still inverted only top and bottom can switch\n                if (this._anchorIndex < 2) {\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                } else {\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                }\n            } else {\n                // if still not inverted treat as non full pano\n                if (anchor[0] <= changed[0] && anchor[1] > changed[1]) {\n                    this._anchorIndex = 0;\n                } else if (anchor[0] <= changed[0] && anchor[1] <= changed[1]) {\n                    this._anchorIndex = 1;\n                } else if (anchor[0] > changed[0] && anchor[1] <= changed[1]) {\n                    this._anchorIndex = 2;\n                } else {\n                    this._anchorIndex = 3;\n                }\n            }\n\n            const rect: number[] = [];\n            if (this._anchorIndex === 0) {\n                rect[0] = anchor[0];\n                rect[1] = changed[1];\n                rect[2] = changed[0];\n                rect[3] = anchor[1];\n            } else if (this._anchorIndex === 1) {\n                rect[0] = anchor[0];\n                rect[1] = anchor[1];\n                rect[2] = changed[0];\n                rect[3] = changed[1];\n            } else if (this._anchorIndex === 2) {\n                rect[0] = changed[0];\n                rect[1] = anchor[1];\n                rect[2] = anchor[0];\n                rect[3] = changed[1];\n            } else {\n                rect[0] = changed[0];\n                rect[1] = changed[1];\n                rect[2] = anchor[0];\n                rect[3] = anchor[1];\n            }\n\n            if (!this._inverted && rect[0] > rect[2] ||\n                this._inverted && rect[0] < rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n\n            if (rect[1] > rect[3]) {\n                rect[1] = original[1];\n                rect[3] = original[3];\n            }\n\n            this._rect[0] = rect[0];\n            this._rect[1] = rect[1];\n            this._rect[2] = rect[2];\n            this._rect[3] = rect[3];\n        } else {\n            if (anchor[0] <= changed[0] && anchor[1] > changed[1]) {\n                this._anchorIndex = 0;\n            } else if (anchor[0] <= changed[0] && anchor[1] <= changed[1]) {\n                this._anchorIndex = 1;\n            } else if (anchor[0] > changed[0] && anchor[1] <= changed[1]) {\n                this._anchorIndex = 2;\n            } else {\n                this._anchorIndex = 3;\n            }\n\n            const rect: number[] = [];\n            if (this._anchorIndex === 0) {\n                rect[0] = anchor[0];\n                rect[1] = changed[1];\n                rect[2] = changed[0];\n                rect[3] = anchor[1];\n            } else if (this._anchorIndex === 1) {\n                rect[0] = anchor[0];\n                rect[1] = anchor[1];\n                rect[2] = changed[0];\n                rect[3] = changed[1];\n            } else if (this._anchorIndex === 2) {\n                rect[0] = changed[0];\n                rect[1] = anchor[1];\n                rect[2] = anchor[0];\n                rect[3] = changed[1];\n            } else {\n                rect[0] = changed[0];\n                rect[1] = changed[1];\n                rect[2] = anchor[0];\n                rect[3] = anchor[1];\n            }\n\n            if (rect[0] > rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n\n            if (rect[1] > rect[3]) {\n                rect[1] = original[1];\n                rect[3] = original[3];\n            }\n\n            this._rect[0] = rect[0];\n            this._rect[1] = rect[1];\n            this._rect[2] = rect[2];\n            this._rect[3] = rect[3];\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set the value of a vertex in the polygon representation of the rectangle.\n     *\n     * @description The polygon is defined to have the first vertex at the\n     * bottom-left corner with the rest of the vertices following in clockwise order.\n     *\n     * @param {number} index - The index of the vertex to be set.\n     * @param {Array<number>} value - The new value of the vertex.\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     * @ignore\n     */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        let original: number[] = this._rect.slice();\n\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        let rect: number[] = [];\n        if (index === 0) {\n            rect[0] = changed[0];\n            rect[1] = original[1];\n            rect[2] = original[2];\n            rect[3] = changed[1];\n        } else if (index === 1) {\n            rect[0] = changed[0];\n            rect[1] = changed[1];\n            rect[2] = original[2];\n            rect[3] = original[3];\n        } else if (index === 2) {\n            rect[0] = original[0];\n            rect[1] = changed[1];\n            rect[2] = changed[0];\n            rect[3] = original[3];\n        } else if (index === 3) {\n            rect[0] = original[0];\n            rect[1] = original[1];\n            rect[2] = changed[0];\n            rect[3] = changed[1];\n        }\n\n        if (transform.fullPano) {\n            let passingBoundaryLeftward: boolean =\n                index < 2 && changed[0] > 0.75 && original[0] < 0.25 ||\n                index >= 2 && this._inverted && changed[0] > 0.75 && original[2] < 0.25;\n\n            let passingBoundaryRightward: boolean =\n                index < 2 && this._inverted && changed[0] < 0.25 && original[0] > 0.75 ||\n                index >= 2 && changed[0] < 0.25 && original[2] > 0.75;\n\n            if (passingBoundaryLeftward || passingBoundaryRightward) {\n                this._inverted = !this._inverted;\n            } else {\n                if (rect[0] - original[0] < -0.25) {\n                    rect[0] = original[0];\n                }\n\n                if (rect[2] - original[2] > 0.25) {\n                    rect[2] = original[2];\n                }\n            }\n\n            if (!this._inverted && rect[0] > rect[2] ||\n                this._inverted && rect[0] < rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n        } else {\n            if (rect[0] > rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n        }\n\n        if (rect[1] > rect[3]) {\n            rect[1] = original[1];\n            rect[3] = original[3];\n        }\n\n        this._rect[0] = rect[0];\n        this._rect[1] = rect[1];\n        this._rect[2] = rect[2];\n        this._rect[3] = rect[3];\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let original: number[] = this._rect.slice();\n\n        let x0: number = original[0];\n        let x1: number = this._inverted ? original[2] + 1 : original[2];\n\n        let y0: number = original[1];\n        let y1: number = original[3];\n\n        let centerX: number = x0 + (x1 - x0) / 2;\n        let centerY: number = y0 + (y1 - y0) / 2;\n\n        let translationX: number = 0;\n\n        if (transform.gpano != null &&\n            transform.gpano.CroppedAreaImageWidthPixels === transform.gpano.FullPanoWidthPixels) {\n            translationX = this._inverted ? value[0] + 1 - centerX : value[0] - centerX;\n        } else {\n            let minTranslationX: number = -x0;\n            let maxTranslationX: number = 1 - x1;\n\n            translationX = Math.max(minTranslationX, Math.min(maxTranslationX, value[0] - centerX));\n        }\n\n        let minTranslationY: number = -y0;\n        let maxTranslationY: number = 1 - y1;\n\n        let translationY: number = Math.max(minTranslationY, Math.min(maxTranslationY, value[1] - centerY));\n\n        this._rect[0] = original[0] + translationX;\n        this._rect[1] = original[1] + translationY;\n        this._rect[2] = original[2] + translationX;\n        this._rect[3] = original[3] + translationY;\n\n        if (this._rect[0] < 0) {\n            this._rect[0] += 1;\n            this._inverted = !this._inverted;\n        } else if (this._rect[0] > 1) {\n            this._rect[0] -= 1;\n            this._inverted = !this._inverted;\n        }\n\n        if (this._rect[2] < 0) {\n            this._rect[2] += 1;\n            this._inverted = !this._inverted;\n        } else if (this._rect[2] > 1) {\n            this._rect[2] -= 1;\n            this._inverted = !this._inverted;\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the 3D coordinates for the vertices of the rectangle with\n     * interpolated points along the lines.\n     *\n     * @param {Transform} transform - The transform of the node related to\n     * the rectangle.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates\n     * representing the rectangle.\n     * @ignore\n     */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints2d()\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The method shifts the right side\n     * coordinates of the rectangle by one unit to ensure that the vertices are ordered\n     * clockwise.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getVertex2d(index: number): number[] {\n        return this._rectToVertices2d(this._rect)[index];\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The coordinates will not be shifted\n     * so they may not appear in clockwise order when layed out on the plane.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getNonAdjustedVertex2d(index: number): number[] {\n        return this._rectToNonAdjustedVertices2d(this._rect)[index];\n    }\n\n    /**\n     * Get a vertex from the polygon representation of the 3D coordinates for the\n     * vertices of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {number} index - Vertex index.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public getVertex3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._rectToVertices2d(this._rect)[index], 200);\n    }\n\n    /**\n     * Get a polygon representation of the 2D basic coordinates for the vertices of the rectangle.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates representing\n     * the rectangle vertices.\n     * @ignore\n     */\n    public getVertices2d(): number[][] {\n        return this._rectToVertices2d(this._rect);\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of the rectangle.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the rectangle vertices.\n     * @ignore\n     */\n    public getVertices3d(transform: Transform): number[][] {\n        return this._rectToVertices2d(this._rect)\n            .map(\n                (vertex: number[]) => {\n                    return transform.unprojectBasic(vertex, 200);\n                });\n    }\n\n    /** @ignore */\n    public getCentroid2d(): number[] {\n        const rect: number[] = this._rect;\n\n        const x0: number = rect[0];\n        const x1: number = this._inverted ? rect[2] + 1 : rect[2];\n\n        const y0: number = rect[1];\n        const y1: number = rect[3];\n\n        const centroidX: number = (x0 + x1) / 2;\n        const centroidY: number = (y0 + y1) / 2;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        const centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /**\n     * @ignore\n     */\n    public getPoleOfInaccessibility2d(): number[] {\n        return this._getPoleOfInaccessibility2d(this._rectToVertices2d(this._rect));\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility3d(transform: Transform): number[] {\n        let pole2d: number[] = this._getPoleOfInaccessibility2d(this._rectToVertices2d(this._rect));\n\n        return transform.unprojectBasic(pole2d, 200);\n    }\n\n    /** @ignore */\n    public getTriangles3d(transform: Transform): number[] {\n        return transform.fullPano ?\n            [] :\n            this._triangulate(\n                this._project(this._getPoints2d(), transform),\n                this.getPoints3d(transform));\n    }\n\n    /**\n     * Check if a particular bottom-right value is valid according to the current\n     * rectangle coordinates.\n     *\n     * @param {Array<number>} bottomRight - The bottom-right coordinates to validate\n     * @returns {boolean} Value indicating whether the provided bottom-right coordinates\n     * are valid.\n     * @ignore\n     */\n    public validate(bottomRight: number[]): boolean {\n        let rect: number[] = this._rect;\n\n        if (!this._inverted && bottomRight[0] < rect[0] ||\n            bottomRight[0] - rect[2] > 0.25 ||\n            bottomRight[1] < rect[1]) {\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the 2D coordinates for the vertices of the rectangle with\n     * interpolated points along the lines.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates\n     * representing the rectangle.\n     */\n    private _getPoints2d(): number[][] {\n        let vertices2d: number[][] = this._rectToVertices2d(this._rect);\n\n        let sides: number = vertices2d.length - 1;\n        let sections: number = 10;\n\n        let points2d: number[][] = [];\n\n        for (let i: number = 0; i < sides; ++i) {\n            let startX: number = vertices2d[i][0];\n            let startY: number = vertices2d[i][1];\n\n            let endX: number = vertices2d[i + 1][0];\n            let endY: number = vertices2d[i + 1][1];\n\n            let intervalX: number = (endX - startX) / (sections - 1);\n            let intervalY: number = (endY - startY) / (sections - 1);\n\n            for (let j: number = 0; j < sections; ++j) {\n                let point: number[] = [\n                    startX + j * intervalX,\n                    startY + j * intervalY,\n                ];\n\n                points2d.push(point);\n            }\n        }\n\n        return points2d;\n    }\n\n    /**\n     * Convert the top-left, bottom-right representation of a rectangle to a polygon\n     * representation of the vertices starting at the bottom-left corner going\n     * clockwise.\n     *\n     * @description The method shifts the right side coordinates of the rectangle\n     * by one unit to ensure that the vertices are ordered clockwise.\n     *\n     * @param {Array<number>} rect - Top-left, bottom-right representation of a\n     * rectangle.\n     * @returns {Array<Array<number>>} Polygon representation of the vertices of the\n     * rectangle.\n     */\n    private _rectToVertices2d(rect: number[]): number[][] {\n        return [\n            [rect[0], rect[3]],\n            [rect[0], rect[1]],\n            [this._inverted ? rect[2] + 1 : rect[2], rect[1]],\n            [this._inverted ? rect[2] + 1 : rect[2], rect[3]],\n            [rect[0], rect[3]],\n        ];\n    }\n\n    /**\n     * Convert the top-left, bottom-right representation of a rectangle to a polygon\n     * representation of the vertices starting at the bottom-left corner going\n     * clockwise.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The coordinates will not be shifted\n     * to ensure that the vertices are ordered clockwise when layed out on the plane.\n     *\n     * @param {Array<number>} rect - Top-left, bottom-right representation of a\n     * rectangle.\n     * @returns {Array<Array<number>>} Polygon representation of the vertices of the\n     * rectangle.\n     */\n    private _rectToNonAdjustedVertices2d(rect: number[]): number[][] {\n        return [\n            [rect[0], rect[3]],\n            [rect[0], rect[1]],\n            [rect[2], rect[1]],\n            [rect[2], rect[3]],\n            [rect[0], rect[3]],\n        ];\n    }\n}\n\nexport default RectGeometry;\n",
+    "import earcut from \"earcut\";\nimport * as martinez from \"martinez-polygon-clipping\";\nimport * as polylabel from \"@mapbox/polylabel\";\nimport * as THREE from \"three\";\n\nimport {Geometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class VertexGeometry\n * @abstract\n * @classdesc Represents a vertex geometry.\n */\nexport abstract class VertexGeometry extends Geometry {\n\n    private _subsampleThreshold: number;\n\n    /**\n     * Create a vertex geometry.\n     *\n     * @constructor\n     * @ignore\n     */\n    constructor() {\n        super();\n\n        this._subsampleThreshold = 0.005;\n\n    }\n\n    /**\n     * Get the 3D coordinates for the vertices of the geometry with possibly\n     * subsampled points along the lines.\n     *\n     * @param {Transform} transform - The transform of the node related to\n     * the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates\n     * representing the geometry.\n     * @ignore\n     */\n    public abstract getPoints3d(transform: Transform): number[][];\n\n    /**\n     * Get the polygon pole of inaccessibility, the most\n     * distant internal point from the polygon outline.\n     *\n     * @returns {Array<number>} 2D basic coordinates for the pole of inaccessibility.\n     * @ignore\n     */\n    public abstract getPoleOfInaccessibility2d(): number[];\n\n    /**\n     * Get the polygon pole of inaccessibility, the most\n     * distant internal point from the polygon outline.\n     *\n     * @param transform - The transform of the node related to\n     * the geometry.\n     * @returns {Array<number>} 3D world coordinates for the pole of inaccessibility.\n     * @ignore\n     */\n    public abstract getPoleOfInaccessibility3d(transform: Transform): number[];\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public abstract getVertex2d(index: number): number[];\n\n    /**\n     * Get a vertex from the polygon representation of the 3D coordinates for the\n     * vertices of the geometry.\n     *\n     * @param {number} index - Vertex index.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} Array representing the 3D world coordinates of the vertex.\n     * @ignore\n     */\n    public abstract getVertex3d(index: number, transform: Transform): number[];\n\n    /**\n     * Get a polygon representation of the 2D basic coordinates for the vertices of the geometry.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public abstract getVertices2d(): number[][];\n\n    /**\n     * Get a polygon representation of the 3D world coordinates for the vertices of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public abstract getVertices3d(transform: Transform): number[][];\n\n    /**\n     * Get a flattend array of the 3D world coordinates for the\n     * triangles filling the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} Flattened array of 3D world coordinates of the triangles.\n     * @ignore\n     */\n    public abstract getTriangles3d(transform: Transform): number[];\n\n    /**\n     * Set the value of a vertex in the polygon representation of the geometry.\n     *\n     * @description The polygon is defined to have the first vertex at the\n     * bottom-left corner with the rest of the vertices following in clockwise order.\n     *\n     * @param {number} index - The index of the vertex to be set.\n     * @param {Array<number>} value - The new value of the vertex.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @ignore\n     */\n    public abstract setVertex2d(index: number, value: number[], transform: Transform): void;\n\n    /**\n     * Finds the polygon pole of inaccessibility, the most distant internal\n     * point from the polygon outline.\n     *\n     * @param {Array<Array<number>>} points2d - 2d points of outline to triangulate.\n     * @returns {Array<number>} Point of inaccessibility.\n     * @ignore\n     */\n    protected _getPoleOfInaccessibility2d(points2d: number[][]): number[] {\n        let pole2d: number[] = polylabel([points2d], 3e-2);\n\n        return pole2d;\n    }\n\n    protected _project(points2d: number[][], transform: Transform): number[][] {\n        const camera: THREE.Camera = this._createCamera(\n            transform.upVector().toArray(),\n            transform.unprojectSfM([0, 0], 0),\n            transform.unprojectSfM([0, 0], 10));\n\n        return this._deunproject(\n            points2d,\n            transform,\n            camera);\n    }\n\n    protected _subsample(points2d: number[][], threshold: number = this._subsampleThreshold): number[][] {\n        const subsampled: number[][] = [];\n        const length: number = points2d.length;\n\n        for (let index: number = 0; index < length; index++) {\n            const p1: number[] = points2d[index];\n            const p2: number[] = points2d[(index + 1) % length];\n\n            subsampled.push(p1);\n\n            const dist: number = Math.sqrt((p2[0] - p1[0]) ** 2 + (p2[1] - p1[1]) ** 2);\n            const subsamples: number = Math.floor(dist / threshold);\n            const coeff: number = 1 / (subsamples + 1);\n\n            for (let i: number = 1; i <= subsamples; i++) {\n                const alpha: number = i * coeff;\n\n                const subsample: number[] = [\n                    (1 - alpha) * p1[0] + alpha * p2[0],\n                    (1 - alpha) * p1[1] + alpha * p2[1],\n                ];\n\n                subsampled.push(subsample);\n            }\n        }\n\n        return subsampled;\n    }\n\n    /**\n     * Triangulates a 2d polygon and returns the triangle\n     * representation as a flattened array of 3d points.\n     *\n     * @param {Array<Array<number>>} points2d - 2d points of outline to triangulate.\n     * @param {Array<Array<number>>} points3d - 3d points of outline corresponding to the 2d points.\n     * @param {Array<Array<Array<number>>>} [holes2d] - 2d points of holes to triangulate.\n     * @param {Array<Array<Array<number>>>} [holes3d] - 3d points of holes corresponding to the 2d points.\n     * @returns {Array<number>} Flattened array of 3d points ordered based on the triangles.\n     * @ignore\n     */\n    protected _triangulate(\n        points2d: number[][],\n        points3d: number[][],\n        holes2d?: number[][][],\n        holes3d?: number[][][]): number[] {\n\n        let data: number[][][] = [points2d.slice(0, -1)];\n        for (let hole2d of holes2d != null ? holes2d : []) {\n            data.push(hole2d.slice(0, -1));\n        }\n\n        let points: number[][] = points3d.slice(0, -1);\n        for (let hole3d of holes3d != null ? holes3d : []) {\n            points = points.concat(hole3d.slice(0, -1));\n        }\n\n        let flattened: { vertices: number[], holes: number[], dimensions: number } = earcut.flatten(data);\n        let indices: number[] = earcut(flattened.vertices, flattened.holes, flattened.dimensions);\n        let triangles: number[] = [];\n\n        for (let i: number = 0; i < indices.length; ++i) {\n            let point: number[] = points[indices[i]];\n\n            triangles.push(point[0]);\n            triangles.push(point[1]);\n            triangles.push(point[2]);\n        }\n\n        return triangles;\n    }\n\n    protected _triangulatePano(points2d: number[][], holes2d: number[][][], transform: Transform): number[] {\n        const triangles: number[] = [];\n\n        const epsilon: number = 1e-9;\n        const subareasX: number = 3;\n        const subareasY: number = 3;\n\n        for (let x: number = 0; x < subareasX; x++) {\n            for (let y: number = 0; y < subareasY; y++) {\n                const epsilonX0: number = x === 0 ? -epsilon : epsilon;\n                const epsilonY0: number = y === 0 ? -epsilon : epsilon;\n\n                const x0: number = x / subareasX + epsilonX0;\n                const y0: number = y / subareasY + epsilonY0;\n                const x1: number = (x + 1) / subareasX + epsilon;\n                const y1: number = (y + 1) / subareasY + epsilon;\n\n                const bbox2d: number[][] = [\n                    [x0, y0],\n                    [x0, y1],\n                    [x1, y1],\n                    [x1, y0],\n                    [x0, y0],\n                ];\n\n                const lookat2d: number[] = [\n                    (2 * x + 1) / (2 * subareasX),\n                    (2 * y + 1) / (2 * subareasY),\n                ];\n\n                triangles.push(...this._triangulateSubarea(points2d, holes2d, bbox2d, lookat2d, transform));\n            }\n        }\n\n        return triangles;\n    }\n\n    protected _unproject(points2d: number[][], transform: Transform, distance: number = 200): number[][] {\n        return points2d\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, distance);\n                });\n    }\n\n    private _createCamera(upVector: number[], position: number[], lookAt: number[]): THREE.Camera {\n        const camera: THREE.Camera = new THREE.Camera();\n        camera.up.copy(new THREE.Vector3().fromArray(upVector));\n        camera.position.copy(new THREE.Vector3().fromArray(position));\n        camera.lookAt(new THREE.Vector3().fromArray(lookAt));\n        camera.updateMatrix();\n        camera.updateMatrixWorld(true);\n\n        return camera;\n    }\n\n    private _deunproject(points2d: number[][], transform: Transform, camera: THREE.Camera): number[][] {\n        return points2d\n            .map(\n                (point2d: number[]): number[] => {\n                    const pointWorld: number[] = transform.unprojectBasic(point2d, 10000);\n                    const pointCamera: THREE.Vector3 =\n                        new THREE.Vector3(pointWorld[0], pointWorld[1], pointWorld[2])\n                            .applyMatrix4(camera.matrixWorldInverse);\n\n                    return [pointCamera.x / pointCamera.z, pointCamera.y / pointCamera.z];\n                });\n    }\n\n    private _triangulateSubarea(\n        points2d: number[][],\n        holes2d: number[][][],\n        bbox2d: number[][],\n        lookat2d: number[],\n        transform: Transform): number[] {\n\n        const intersections: martinez.MultiPolygon = martinez.intersection([points2d, ...holes2d], [bbox2d]) as martinez.MultiPolygon;\n        if (!intersections) {\n            return [];\n        }\n\n        const triangles: number[] = [];\n        const threshold: number = this._subsampleThreshold;\n        const camera: THREE.Camera = this._createCamera(\n            transform.upVector().toArray(),\n            transform.unprojectSfM([0, 0], 0),\n            transform.unprojectBasic(lookat2d, 10));\n\n        for (const intersection of intersections) {\n            const subsampledPolygon2d: number[][] = this._subsample(intersection[0], threshold);\n\n            const polygon2d: number[][] = this._deunproject(subsampledPolygon2d, transform, camera);\n            const polygon3d: number[][] = this._unproject(subsampledPolygon2d, transform);\n\n            const polygonHoles2d: number[][][] = [];\n            const polygonHoles3d: number[][][] = [];\n            for (let i: number = 1; i < intersection.length; i++) {\n                let subsampledHole2d: number[][] = this._subsample(intersection[i], threshold);\n\n                const hole2d: number[][] = this._deunproject(subsampledHole2d, transform, camera);\n                const hole3d: number[][] = this._unproject(subsampledHole2d, transform);\n\n                polygonHoles2d.push(hole2d);\n                polygonHoles3d.push(hole3d);\n            }\n\n            triangles.push(...this._triangulate(polygon2d, polygon3d, polygonHoles2d, polygonHoles3d));\n        }\n\n        return triangles;\n    }\n}\n\nexport default VertexGeometry;\n",
     "import {map, withLatestFrom} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\nimport {\n    Component,\n    Geometry,\n    ITagConfiguration,\n    TagCreator,\n    TagHandlerBase,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../../Viewer\";\n\nexport abstract class CreateHandlerBase extends TagHandlerBase {\n    protected _tagCreator: TagCreator;\n\n    protected _geometryCreated$: Subject<Geometry>;\n\n    constructor(\n        component: Component<ITagConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        tagCreator: TagCreator) {\n        super(component, container, navigator, viewportCoords);\n\n        this._tagCreator = tagCreator;\n        this._geometryCreated$ = new Subject<Geometry>();\n    }\n\n    public get geometryCreated$(): Observable<Geometry> {\n        return this._geometryCreated$;\n    }\n\n    protected abstract _enableCreate(): void;\n\n    protected abstract _disableCreate(): void;\n\n    protected _enable(): void {\n        this._enableCreate();\n        this._container.element.classList.add(\"component-tag-create\");\n    }\n\n    protected _disable(): void {\n        this._container.element.classList.remove(\"component-tag-create\");\n        this._disableCreate();\n    }\n\n    protected _validateBasic(basic: number[]): boolean {\n        const x: number = basic[0];\n        const y: number = basic[1];\n\n        return 0 <= x && x <= 1 && 0 <= y && y <= 1;\n    }\n\n    protected _mouseEventToBasic$(mouseEvent$: Observable<MouseEvent>): Observable<number[]> {\n        return mouseEvent$.pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([event, camera, transform]: [MouseEvent, RenderCamera, Transform]): number[] => {\n                    return this._mouseEventToBasic(\n                        event,\n                        this._container.element,\n                        camera,\n                        transform);\n                }));\n    }\n}\n\nexport default CreateHandlerBase;\n",
     "import {map, filter} from \"rxjs/operators\";\nimport {Subscription} from \"rxjs\";\n\nimport {\n    CreateHandlerBase,\n    PointGeometry,\n} from \"../../../Component\";\n\nexport class CreatePointHandler extends CreateHandlerBase {\n    private _geometryCreatedSubscription: Subscription;\n\n    protected _enableCreate(): void {\n        this._container.mouseService.deferPixels(this._name, 4);\n\n        this._geometryCreatedSubscription = this._mouseEventToBasic$(this._container.mouseService.proximateClick$).pipe(\n            filter(this._validateBasic),\n            map(\n                (basic: number[]): PointGeometry => {\n                    return new PointGeometry(basic);\n                }))\n            .subscribe(this._geometryCreated$);\n    }\n\n    protected _disableCreate(): void {\n        this._container.mouseService.undeferPixels(this._name);\n\n        this._geometryCreatedSubscription.unsubscribe();\n    }\n\n    protected _getNameExtension(): string {\n        return \"create-point\";\n    }\n}\n\nexport default CreatePointHandler;\n",
     "import {Subject} from \"rxjs\";\n\nimport {\n    CreateVertexHandler,\n    OutlineCreateTag,\n    PolygonGeometry,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\nexport class CreatePolygonHandler extends CreateVertexHandler {\n    protected _addPoint(tag: OutlineCreateTag, basicPoint: number[]): void {\n        tag.addPoint(basicPoint);\n    }\n\n    protected get _create$(): Subject<number[]> {\n        return this._tagCreator.createPolygon$;\n    }\n\n    protected _getNameExtension(): string {\n        return \"create-polygon\";\n    }\n\n    protected _setVertex2d(tag: OutlineCreateTag, basicPoint: number[], transform: Transform): void {\n        tag.geometry.setVertex2d((<PolygonGeometry>tag.geometry).polygon.length - 2, basicPoint, transform);\n    }\n}\n\nexport default CreatePolygonHandler;\n",
     "import {\n    concat as observableConcat,\n    empty as observableEmpty,\n    combineLatest as observableCombineLatest,\n    of as observableOf,\n    merge as observableMerge,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    distinctUntilChanged,\n    share,\n    switchMap,\n    filter,\n    withLatestFrom,\n    first,\n    map,\n    mergeMap,\n} from \"rxjs/operators\";\n\nimport {\n    Component,\n    TagHandlerBase,\n    Geometry,\n    IInteraction,\n    InteractionCursor,\n    ITagConfiguration,\n    RenderTag,\n    Tag,\n    TagOperation,\n    TagSet,\n    VertexGeometry,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../../Viewer\";\n\nexport class EditVertexHandler extends TagHandlerBase {\n    private _tagSet: TagSet;\n\n    private _claimMouseSubscription: Subscription;\n    private _cursorSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _unclaimMouseSubscription: Subscription;\n    private _updateGeometrySubscription: Subscription;\n\n    constructor(\n        component: Component<ITagConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        tagSet: TagSet) {\n        super(component, container, navigator, viewportCoords);\n\n        this._tagSet = tagSet;\n    }\n\n    protected _enable(): void {\n        const interaction$: Observable<IInteraction> = this._tagSet.changed$.pipe(\n            map(\n                (tagSet: TagSet): RenderTag<Tag>[] => {\n                    return tagSet.getAll();\n                }),\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<IInteraction> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<IInteraction> => {\n                                return tag.interact$;\n                            }));\n                }),\n            switchMap(\n                (interaction: IInteraction): Observable<IInteraction> => {\n                    return observableConcat(\n                        observableOf(interaction),\n                        this._container.mouseService.documentMouseUp$.pipe(\n                            map(\n                                (): IInteraction => {\n                                    return { offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: null };\n                                }),\n                            first()));\n                }),\n            share());\n\n        const mouseMove$: Observable<MouseEvent> = observableMerge(\n                this._container.mouseService.mouseMove$,\n                this._container.mouseService.domMouseMove$).pipe(\n            share());\n\n        this._claimMouseSubscription = interaction$.pipe(\n            switchMap(\n                (interaction: IInteraction): Observable<MouseEvent> => {\n                    return !!interaction.tag ? this._container.mouseService.domMouseDragStart$ : observableEmpty();\n                }))\n            .subscribe(\n                (): void => {\n                    this._container.mouseService.claimMouse(this._name, 3);\n                });\n\n        this._cursorSubscription = interaction$.pipe(\n            map(\n                (interaction: IInteraction): string => {\n                    return interaction.cursor;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (cursor: string): void => {\n                    const interactionCursors: InteractionCursor[] = [\"crosshair\", \"move\", \"nesw-resize\", \"nwse-resize\"];\n                    for (const interactionCursor of interactionCursors) {\n                        this._container.element.classList.remove(`component-tag-edit-${interactionCursor}`);\n                    }\n\n                    if (!!cursor) {\n                        this._container.element.classList.add(`component-tag-edit-${cursor}`);\n                    }\n                });\n\n        this._unclaimMouseSubscription = this._container.mouseService\n            .filtered$(this._name, this._container.mouseService.domMouseDragEnd$)\n            .subscribe(\n                (e: MouseEvent): void => {\n                    this._container.mouseService.unclaimMouse(this._name);\n                });\n\n        this._preventDefaultSubscription = interaction$.pipe(\n            switchMap(\n                (interaction: IInteraction): Observable<MouseEvent> => {\n                    return !!interaction.tag ?\n                        this._container.mouseService.documentMouseMove$ :\n                        observableEmpty();\n                }))\n            .subscribe(\n                (event: MouseEvent): void => {\n                    event.preventDefault(); // prevent selection of content outside the viewer\n                });\n\n        this._updateGeometrySubscription = interaction$.pipe(\n            switchMap(\n                (interaction: IInteraction): Observable<[MouseEvent, RenderCamera, IInteraction, Transform]> => {\n                    if (interaction.operation === TagOperation.None || !interaction.tag) {\n                        return observableEmpty();\n                    }\n\n                    const mouseDrag$: Observable<MouseEvent> =\n                        this._container.mouseService\n                            .filtered$(\n                                this._name,\n                                this._container.mouseService.domMouseDrag$).pipe(\n                            filter(\n                                (event: MouseEvent): boolean => {\n                                    return this._viewportCoords.insideElement(event, this._container.element);\n                                }));\n\n                    return observableCombineLatest<MouseEvent, RenderCamera>(\n                            mouseDrag$,\n                            this._container.renderService.renderCamera$).pipe(\n                        withLatestFrom(\n                            observableOf(interaction),\n                            this._navigator.stateService.currentTransform$,\n                            (\n                                [event, render]: [MouseEvent, RenderCamera],\n                                i: IInteraction,\n                                transform: Transform):\n                                [MouseEvent, RenderCamera, IInteraction, Transform] => {\n                                return [event, render, i, transform];\n                            }));\n                }))\n            .subscribe(\n                ([mouseEvent, renderCamera, interaction, transform]: [MouseEvent, RenderCamera, IInteraction, Transform]): void => {\n                    const basic: number[] = this._mouseEventToBasic(\n                        mouseEvent,\n                        this._container.element,\n                        renderCamera,\n                        transform,\n                        interaction.offsetX,\n                        interaction.offsetY);\n\n                    const geometry: Geometry = interaction.tag.geometry;\n                    if (interaction.operation === TagOperation.Centroid) {\n                        geometry.setCentroid2d(basic, transform);\n                    } else if (interaction.operation === TagOperation.Vertex) {\n                        (<VertexGeometry>geometry).setVertex2d(interaction.vertexIndex, basic, transform);\n                    }\n                });\n    }\n\n    protected _disable(): void {\n        this._claimMouseSubscription.unsubscribe();\n        this._cursorSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._unclaimMouseSubscription.unsubscribe();\n        this._updateGeometrySubscription.unsubscribe();\n    }\n\n    protected _getNameExtension(): string {\n        return \"edit-vertex\";\n    }\n}\n\nexport default EditVertexHandler;\n",
     "import {\n    Component,\n    HandlerBase,\n    ITagConfiguration,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../../Viewer\";\n\nexport abstract class TagHandlerBase extends HandlerBase<ITagConfiguration> {\n    protected _name: string;\n\n    protected _viewportCoords: ViewportCoords;\n\n    constructor(\n        component: Component<ITagConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords) {\n        super(component, container, navigator);\n\n        this._name = `${this._component.name}-${this._getNameExtension()}`;\n\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _getConfiguration(enable: boolean): ITagConfiguration {\n        return {};\n    }\n\n    protected abstract _getNameExtension(): string;\n\n    protected _mouseEventToBasic(\n        event: MouseEvent,\n        element: HTMLElement,\n        camera: RenderCamera,\n        transform: Transform,\n        offsetX?: number,\n        offsetY?: number):\n        number[] {\n\n        offsetX = offsetX != null ? offsetX : 0;\n        offsetY = offsetY != null ? offsetY : 0;\n\n        const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n        const basic: number[] =\n            this._viewportCoords.canvasToBasic(\n                canvasX - offsetX,\n                canvasY - offsetY,\n                element,\n                transform,\n                camera.perspective);\n\n        return basic;\n    }\n}\n\nexport default TagHandlerBase;\n",
     "import {map} from \"rxjs/operators\";\nimport * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject, Subscription} from \"rxjs\";\n\nimport {\n    IOutlineCreateTagOptions,\n    PolygonGeometry,\n    RectGeometry,\n    VertexGeometry,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\n\nexport class OutlineCreateTag {\n    private _geometry: VertexGeometry;\n    private _outline: THREE.Line;\n    private _glObjects: THREE.Object3D[];\n    private _options: IOutlineCreateTagOptions;\n    private _transform: Transform;\n    private _viewportCoords: ViewportCoords;\n\n    private _aborted$: Subject<OutlineCreateTag>;\n    private _created$: Subject<OutlineCreateTag>;\n    private _glObjectsChanged$: Subject<OutlineCreateTag>;\n\n    private _geometryChangedSubscription: Subscription;\n\n    constructor(geometry: VertexGeometry, options: IOutlineCreateTagOptions, transform: Transform, viewportCoords?: ViewportCoords) {\n        this._geometry = geometry;\n        this._options = { color: options.color == null ? 0xFFFFFF : options.color };\n        this._transform = transform;\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n\n        this._outline = this._createOutine();\n        this._glObjects = [this._outline];\n\n        this._aborted$ = new Subject<OutlineCreateTag>();\n        this._created$ = new Subject<OutlineCreateTag>();\n        this._glObjectsChanged$ = new Subject<OutlineCreateTag>();\n\n        this._geometryChangedSubscription = this._geometry.changed$\n            .subscribe(\n                (vertexGeometry: VertexGeometry): void => {\n                    this._disposeOutline();\n                    this._outline = this._createOutine();\n                    this._glObjects = [this._outline];\n\n                    this._glObjectsChanged$.next(this);\n                });\n    }\n\n    public get geometry(): VertexGeometry {\n        return this._geometry;\n    }\n\n    public get glObjects(): THREE.Object3D[] {\n        return this._glObjects;\n    }\n\n    public get aborted$(): Observable<OutlineCreateTag> {\n        return this._aborted$;\n    }\n\n    public get created$(): Observable<OutlineCreateTag> {\n        return this._created$;\n    }\n\n    public get glObjectsChanged$(): Observable<OutlineCreateTag> {\n        return this._glObjectsChanged$;\n    }\n\n    public get geometryChanged$(): Observable<OutlineCreateTag> {\n        return this._geometry.changed$.pipe(\n            map(\n                (geometry: VertexGeometry): OutlineCreateTag => {\n                    return this;\n                }));\n    }\n\n    public dispose(): void {\n        this._disposeOutline();\n        this._geometryChangedSubscription.unsubscribe();\n    }\n\n    public getDOMObjects(camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        const abort: (e: MouseEvent) => void = (e: MouseEvent): void => {\n            e.stopPropagation();\n            this._aborted$.next(this);\n        };\n\n        if (this._geometry instanceof RectGeometry) {\n            const anchorIndex: number = (<RectGeometry>this._geometry).anchorIndex;\n            const vertexIndex: number = anchorIndex === undefined ? 1 : anchorIndex;\n            const [basicX, basicY]: number[] = this._geometry.getVertex2d(vertexIndex);\n            const canvasPoint: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    basicX,\n                    basicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (canvasPoint != null) {\n                const background: string = this._colorToBackground(this._options.color);\n                const transform: string = this._canvasToTransform(canvasPoint);\n                const pointProperties: vd.createProperties = {\n                    style: { background: background, transform: transform },\n                };\n\n                const completerProperties: vd.createProperties = {\n                    onclick: abort,\n                    style: { transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagInteractor\", completerProperties, []));\n                vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n            }\n        } else if (this._geometry instanceof PolygonGeometry) {\n            const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._geometry;\n\n            const [firstVertexBasicX, firstVertexBasicY]: number[] = polygonGeometry.getVertex2d(0);\n            const firstVertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    firstVertexBasicX,\n                    firstVertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (firstVertexCanvas != null) {\n                const firstOnclick: (e: MouseEvent) => void = polygonGeometry.polygon.length > 4 ?\n                    (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        polygonGeometry.removeVertex2d(polygonGeometry.polygon.length - 2);\n                        this._created$.next(this);\n                    } :\n                    abort;\n\n                const transform: string = this._canvasToTransform(firstVertexCanvas);\n                const completerProperties: vd.createProperties = {\n                    onclick: firstOnclick,\n                    style: { transform: transform },\n                };\n\n                const firstClass: string = polygonGeometry.polygon.length > 4 ?\n                    \"TagCompleter\" :\n                    \"TagInteractor\";\n\n                vNodes.push(vd.h(\"div.\" + firstClass, completerProperties, []));\n            }\n\n            if (polygonGeometry.polygon.length > 3) {\n                const [lastVertexBasicX, lastVertexBasicY]: number[] = polygonGeometry.getVertex2d(polygonGeometry.polygon.length - 3);\n                const lastVertexCanvas: number[] =\n                    this._viewportCoords.basicToCanvasSafe(\n                        lastVertexBasicX,\n                        lastVertexBasicY,\n                        container,\n                        this._transform,\n                        camera);\n\n                if (lastVertexCanvas != null) {\n                    const remove: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        polygonGeometry.removeVertex2d(polygonGeometry.polygon.length - 3);\n                    };\n\n                    const transform: string = this._canvasToTransform(lastVertexCanvas);\n                    const completerProperties: vd.createProperties = {\n                        onclick: remove,\n                        style: { transform: transform },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagInteractor\", completerProperties, []));\n                }\n            }\n\n            const verticesBasic: number[][] = polygonGeometry.polygon.slice();\n            verticesBasic.splice(-2, 2);\n            for (const vertexBasic of verticesBasic) {\n                const vertexCanvas: number[] =\n                    this._viewportCoords.basicToCanvasSafe(\n                        vertexBasic[0],\n                        vertexBasic[1],\n                        container,\n                        this._transform,\n                        camera);\n\n                if (vertexCanvas != null) {\n                    const background: string = this._colorToBackground(this._options.color);\n                    const transform: string = this._canvasToTransform(vertexCanvas);\n                    const pointProperties: vd.createProperties = {\n                        style: {\n                            background: background,\n                            transform: transform,\n                        },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n                }\n            }\n        }\n\n        return vNodes;\n    }\n\n    public addPoint(point: number[]): void {\n        if (this._geometry instanceof RectGeometry) {\n            const rectGeometry: RectGeometry = <RectGeometry>this._geometry;\n\n            if (!rectGeometry.validate(point)) {\n                return;\n            }\n\n            this._created$.next(this);\n        } else if (this._geometry instanceof PolygonGeometry) {\n            const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._geometry;\n\n            polygonGeometry.addVertex2d(point);\n        }\n    }\n\n    private _canvasToTransform(canvas: number[]): string {\n        const canvasX: number = Math.round(canvas[0]);\n        const canvasY: number = Math.round(canvas[1]);\n        const transform: string = `translate(-50%,-50%) translate(${canvasX}px,${canvasY}px)`;\n\n        return transform;\n    }\n\n    private _colorToBackground(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    private _createOutine(): THREE.Line {\n        const polygon3d: number[][] = this._geometry instanceof RectGeometry ?\n            this._geometry.getPoints3d(this._transform) :\n            (<PolygonGeometry>this._geometry).getVertices3d(this._transform);\n\n        const positions: Float32Array = this._getLinePositions(polygon3d);\n\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        const material: THREE.LineBasicMaterial =\n            new THREE.LineBasicMaterial(\n                {\n                    color: this._options.color,\n                    linewidth: 1,\n                });\n\n        return new THREE.Line(geometry, material);\n    }\n\n    private _disposeOutline(): void {\n        if (this._outline == null) {\n            return;\n        }\n\n        const line: THREE.Line = this._outline;\n        line.geometry.dispose();\n        line.material.dispose();\n        this._outline = null;\n        this._glObjects = [];\n    }\n\n    private _getLinePositions(polygon3d: number[][]): Float32Array {\n        const length: number = polygon3d.length;\n        const positions: Float32Array = new Float32Array(length * 3);\n\n        for (let i: number = 0; i < length; ++i) {\n            const index: number = 3 * i;\n\n            const position: number[] = polygon3d[i];\n\n            positions[index] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        return positions;\n    }\n}\n\nexport default OutlineCreateTag;\n",
-    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    Geometry,\n    InteractionCursor,\n    OutlineTag,\n    PolygonGeometry,\n    RectGeometry,\n    RenderTag,\n    TagDomain,\n    TagOperation,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\n/**\n * @class OutlineRenderTag\n * @classdesc Tag visualizing the properties of an OutlineTag.\n */\nexport class OutlineRenderTag extends RenderTag<OutlineTag> {\n    private _fill: THREE.Mesh;\n    private _holes: THREE.Line[];\n    private _outline: THREE.Line;\n\n    private _changedSubscription: Subscription;\n    private _geometryChangedSubscription: Subscription;\n\n    constructor(tag: OutlineTag, transform: Transform) {\n        super(tag, transform);\n\n        this._fill = !transform.gpano ?\n            this._createFill() :\n            null;\n\n        this._holes = this._tag.lineWidth >= 1 ?\n            this._createHoles() :\n            [];\n\n        this._outline = this._tag.lineWidth >= 1 ?\n            this._createOutline() :\n            null;\n\n        this._geometryChangedSubscription = this._tag.geometry.changed$\n            .subscribe(\n                (geometry: Geometry): void => {\n                    if (this._fill != null) {\n                        this._updateFillGeometry();\n                    }\n\n                    if (this._holes.length > 0) {\n                        this._updateHoleGeometries();\n                    }\n\n                    if (this._outline != null) {\n                        this._updateOulineGeometry();\n                    }\n                });\n\n        this._changedSubscription = this._tag.changed$\n            .subscribe(\n                (changedTag: OutlineTag): void => {\n                    let glObjectsChanged: boolean = false;\n\n                    if (this._fill != null) {\n                        this._updateFillMaterial(<THREE.MeshBasicMaterial>this._fill.material);\n                    }\n\n                    if (this._outline == null) {\n                        if (this._tag.lineWidth >= 1) {\n                            this._holes = this._createHoles();\n                            this._outline = this._createOutline();\n                            glObjectsChanged = true;\n                        }\n                    } else {\n                        this._updateHoleMaterials();\n                        this._updateOutlineMaterial();\n                    }\n\n                    if (glObjectsChanged) {\n                        this._glObjectsChanged$.next(this);\n                    }\n                });\n    }\n\n    public dispose(): void {\n        this._disposeFill();\n        this._disposeHoles();\n        this._disposeOutline();\n\n        this._changedSubscription.unsubscribe();\n        this._geometryChangedSubscription.unsubscribe();\n    }\n\n    public getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const isRect: boolean = this._tag.geometry instanceof RectGeometry;\n        const isPerspective: boolean = !this._transform.gpano;\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        if (this._tag.icon != null && (isRect || isPerspective)) {\n            const [iconBasicX, iconBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(this._tag.iconIndex) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const iconCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    iconBasicX,\n                    iconBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (iconCanvas != null) {\n                const interact: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                if (atlas.loaded) {\n                    const sprite: vd.VNode = atlas.getDOMSprite(this._tag.icon, this._tag.iconFloat);\n                    const iconCanvasX: number = Math.round(iconCanvas[0]);\n                    const iconCanvasY: number = Math.round(iconCanvas[1]);\n                    const transform: string = `translate(${iconCanvasX}px,${iconCanvasY}px)`;\n\n                    const click: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        this._tag.click$.next(this._tag);\n                    };\n\n                    const properties: vd.createProperties = {\n                        onclick: click,\n                        onmousedown: interact,\n                        style: { transform: transform },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagSymbol\", properties, [sprite]));\n                }\n            }\n        } else if (this._tag.text != null && (isRect || isPerspective)) {\n            const [textBasicX, textBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(3) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const textCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    textBasicX,\n                    textBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (textCanvas != null) {\n                const textCanvasX: number = Math.round(textCanvas[0]);\n                const textCanvasY: number = Math.round(textCanvas[1]);\n                const transform: string = this._tag.geometry instanceof RectGeometry ?\n                    `translate(${textCanvasX}px,${textCanvasY}px)` :\n                    `translate(-50%, -50%) translate(${textCanvasX}px,${textCanvasY}px)`;\n\n                const interact: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: {\n                        color: this._colorToCss(this._tag.textColor),\n                        transform: transform,\n                    },\n                    textContent: this._tag.text,\n                };\n\n                vNodes.push(vd.h(\"span.TagSymbol\", properties, []));\n            }\n        }\n\n        if (!this._tag.editable) {\n            return vNodes;\n        }\n\n        const lineColor: string = this._colorToCss(this._tag.lineColor);\n\n        if (this._tag.geometry instanceof RectGeometry) {\n            const [centroidBasicX, centroidBasicY]: number[] = this._tag.geometry.getCentroid2d();\n            const centroidCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    centroidBasicX,\n                    centroidBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (centroidCanvas != null) {\n                const interact: (e: MouseEvent) => void = this._interact(TagOperation.Centroid, \"move\");\n                const centroidCanvasX: number = Math.round(centroidCanvas[0]);\n                const centroidCanvasY: number = Math.round(centroidCanvas[1]);\n                const transform: string = `translate(-50%, -50%) translate(${centroidCanvasX}px,${centroidCanvasY}px)`;\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: { background: lineColor, transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagMover\", properties, []));\n            }\n        }\n\n        const vertices2d: number[][] = this._tag.geometry.getVertices2d();\n\n        for (let i: number = 0; i < vertices2d.length - 1; i++) {\n            if (isRect &&\n                ((this._tag.icon != null && i === this._tag.iconIndex) ||\n                (this._tag.icon == null && this._tag.text != null && i === 3))) {\n                continue;\n            }\n\n            const [vertexBasicX, vertexBasicY]: number[] = vertices2d[i];\n            const vertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    vertexBasicX,\n                    vertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (vertexCanvas == null) {\n                continue;\n            }\n\n            const cursor: InteractionCursor = isRect ?\n                 i % 2 === 0 ? \"nesw-resize\" : \"nwse-resize\" :\n                 \"crosshair\";\n\n            const interact: (e: MouseEvent) => void = this._interact(TagOperation.Vertex, cursor, i);\n            const vertexCanvasX: number = Math.round(vertexCanvas[0]);\n            const vertexCanvasY: number = Math.round(vertexCanvas[1]);\n            const transform: string = `translate(-50%, -50%) translate(${vertexCanvasX}px,${vertexCanvasY}px)`;\n\n            const properties: vd.createProperties = {\n                onmousedown: interact,\n                style: { background: lineColor, transform: transform, cursor: cursor },\n            };\n\n            vNodes.push(vd.h(\"div.TagResizer\", properties, []));\n\n            if (!this._tag.indicateVertices) {\n                continue;\n            }\n\n            const pointProperties: vd.createProperties = {\n                style: { background: lineColor, transform: transform },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        return vNodes;\n    }\n\n    public getGLObjects(): THREE.Object3D[] {\n        const glObjects: THREE.Object3D[] = [];\n\n        if (this._fill != null) {\n            glObjects.push(this._fill);\n        }\n\n        for (const hole of this._holes) {\n            glObjects.push(hole);\n        }\n\n        if (this._outline != null) {\n            glObjects.push(this._outline);\n        }\n\n        return glObjects;\n    }\n\n    public getRetrievableObjects(): THREE.Object3D[] {\n        return this._fill != null ? [this._fill] : [];\n    }\n\n    private _colorToCss(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    private _createFill(): THREE.Mesh {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.MeshBasicMaterial =\n            new THREE.MeshBasicMaterial({ side: THREE.DoubleSide, transparent: true });\n\n        this._updateFillMaterial(material);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createHoles(): THREE.Line[] {\n        let holes: THREE.Line[] = [];\n\n        if (this._tag.geometry instanceof PolygonGeometry) {\n            let holes3d: number[][][] = this._getHoles3d();\n\n            for (let holePoints3d of holes3d) {\n                let hole: THREE.Line = this._createLine(holePoints3d);\n                holes.push(hole);\n            }\n        }\n\n        return holes;\n    }\n\n    private _createLine(points3d: number[][]): THREE.Line {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.LineBasicMaterial = new THREE.LineBasicMaterial();\n        this._updateLineBasicMaterial(material);\n\n        const line: THREE.Line = new THREE.Line(geometry, material);\n        line.renderOrder = 1;\n\n        return line;\n    }\n\n    private _createOutline(): THREE.Line {\n        return this._createLine(this._getPoints3d());\n    }\n\n    private _disposeFill(): void {\n        if (this._fill == null) {\n            return;\n        }\n\n        this._fill.geometry.dispose();\n        (<THREE.Material>this._fill.material).dispose();\n        this._fill = null;\n    }\n\n    private _disposeHoles(): void {\n        for (let hole of this._holes) {\n            hole.geometry.dispose();\n            hole.material.dispose();\n        }\n\n        this._holes = [];\n    }\n\n    private _disposeOutline(): void {\n        if (this._outline == null) {\n            return;\n        }\n\n        this._outline.geometry.dispose();\n        this._outline.material.dispose();\n        this._outline = null;\n    }\n\n    private _getLinePositions(points3d: number[][]): Float32Array {\n        let length: number = points3d.length;\n        let positions: Float32Array = new Float32Array(length * 3);\n\n        for (let i: number = 0; i < length; ++i) {\n            let index: number = 3 * i;\n            let position: number[] = points3d[i];\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        return positions;\n    }\n\n    private _getHoles3d(): number[][][] {\n        const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._tag.geometry;\n\n        return this._in3dDomain() ?\n            polygonGeometry.getHoleVertices3d(this._transform) :\n            polygonGeometry.getHolePoints3d(this._transform);\n    }\n\n    private _getPoints3d(): number[][] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).getVertices3d(this._transform) :\n            this._tag.geometry.getPoints3d(this._transform);\n    }\n\n    private _getTriangles(): number[] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).get3dDomainTriangles3d(this._transform) :\n            this._tag.geometry.getTriangles3d(this._transform);\n    }\n\n    private _in3dDomain(): boolean {\n        return this._tag.geometry instanceof PolygonGeometry && this._tag.domain === TagDomain.ThreeDimensional;\n    }\n\n    private _interact(operation: TagOperation, cursor?: InteractionCursor, vertexIndex?: number): (e: MouseEvent) => void {\n        return (e: MouseEvent): void => {\n            let offsetX: number = e.offsetX - (<HTMLElement>e.target).offsetWidth / 2;\n            let offsetY: number = e.offsetY - (<HTMLElement>e.target).offsetHeight / 2;\n\n            this._interact$.next({\n                cursor: cursor,\n                offsetX: offsetX,\n                offsetY: offsetY,\n                operation: operation,\n                tag: this._tag,\n                vertexIndex: vertexIndex,\n            });\n        };\n    }\n\n    private _updateFillGeometry(): void {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>this._fill.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        if (attribute.array.length === positions.length) {\n            attribute.set(positions);\n            attribute.needsUpdate = true;\n        } else {\n            geometry.removeAttribute(\"position\");\n            geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        }\n\n        geometry.computeBoundingSphere();\n    }\n\n    private _updateFillMaterial(material: THREE.MeshBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.fillColor);\n        material.opacity = this._tag.fillOpacity;\n        material.needsUpdate = true;\n    }\n\n    private _updateHoleGeometries(): void {\n        let holes3d: number[][][] = this._getHoles3d();\n\n        if (holes3d.length !== this._holes.length) {\n            throw new Error(\"Changing the number of holes is not supported.\");\n        }\n\n        for (let i: number = 0; i < this._holes.length; i++) {\n            let holePoints3d: number[][] = holes3d[i];\n            let hole: THREE.Line = this._holes[i];\n\n            this._updateLine(hole, holePoints3d);\n        }\n    }\n\n    private _updateHoleMaterials(): void {\n        for (let hole of this._holes) {\n            let material: THREE.LineBasicMaterial = <THREE.LineBasicMaterial>hole.material;\n\n            this._updateLineBasicMaterial(material);\n        }\n    }\n\n    private _updateLine(line: THREE.Line, points3d: number[][]): void {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>line.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        attribute.set(positions);\n        attribute.needsUpdate = true;\n\n        geometry.computeBoundingSphere();\n    }\n\n    private _updateOulineGeometry(): void {\n        this._updateLine(this._outline, this._getPoints3d());\n    }\n\n    private _updateOutlineMaterial(): void {\n        let material: THREE.LineBasicMaterial = <THREE.LineBasicMaterial>this._outline.material;\n\n        this._updateLineBasicMaterial(material);\n    }\n\n    private _updateLineBasicMaterial(material: THREE.LineBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.lineColor);\n        material.linewidth = Math.max(this._tag.lineWidth, 1);\n        material.visible = this._tag.lineWidth >= 1 && this._tag.lineOpacity > 0;\n        material.opacity = this._tag.lineOpacity;\n        material.transparent = this._tag.lineOpacity < 1;\n        material.needsUpdate = true;\n    }\n}\n",
+    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    InteractionCursor,\n    OutlineTag,\n    PolygonGeometry,\n    RectGeometry,\n    RenderTag,\n    TagDomain,\n    TagOperation,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\n/**\n * @class OutlineRenderTag\n * @classdesc Tag visualizing the properties of an OutlineTag.\n */\nexport class OutlineRenderTag extends RenderTag<OutlineTag> {\n    private _fill: THREE.Mesh;\n    private _holes: THREE.Line[];\n    private _outline: THREE.Line;\n\n    private _changedSubscription: Subscription;\n    private _geometryChangedSubscription: Subscription;\n\n    constructor(tag: OutlineTag, transform: Transform) {\n        super(tag, transform);\n\n        this._fill = !transform.gpano ?\n            this._createFill() :\n            transform.fullPano &&\n            tag.domain === TagDomain.TwoDimensional &&\n            tag.geometry instanceof PolygonGeometry ?\n                this._createFill() :\n                null;\n\n        this._holes = this._tag.lineWidth >= 1 ?\n            this._createHoles() :\n            [];\n\n        this._outline = this._tag.lineWidth >= 1 ?\n            this._createOutline() :\n            null;\n\n        this._geometryChangedSubscription = this._tag.geometry.changed$\n            .subscribe(\n                (): void => {\n                    if (this._fill != null) {\n                        this._updateFillGeometry();\n                    }\n\n                    if (this._holes.length > 0) {\n                        this._updateHoleGeometries();\n                    }\n\n                    if (this._outline != null) {\n                        this._updateOulineGeometry();\n                    }\n                });\n\n        this._changedSubscription = this._tag.changed$\n            .subscribe(\n                (): void => {\n                    let glObjectsChanged: boolean = false;\n\n                    if (this._fill != null) {\n                        this._updateFillMaterial(<THREE.MeshBasicMaterial>this._fill.material);\n                    }\n\n                    if (this._outline == null) {\n                        if (this._tag.lineWidth >= 1) {\n                            this._holes = this._createHoles();\n                            this._outline = this._createOutline();\n                            glObjectsChanged = true;\n                        }\n                    } else {\n                        this._updateHoleMaterials();\n                        this._updateOutlineMaterial();\n                    }\n\n                    if (glObjectsChanged) {\n                        this._glObjectsChanged$.next(this);\n                    }\n                });\n    }\n\n    public dispose(): void {\n        this._disposeFill();\n        this._disposeHoles();\n        this._disposeOutline();\n\n        this._changedSubscription.unsubscribe();\n        this._geometryChangedSubscription.unsubscribe();\n    }\n\n    public getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const isRect: boolean = this._tag.geometry instanceof RectGeometry;\n        const isPerspective: boolean = !this._transform.gpano;\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        if (this._tag.icon != null && (isRect || isPerspective)) {\n            const [iconBasicX, iconBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(this._tag.iconIndex) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const iconCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    iconBasicX,\n                    iconBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (iconCanvas != null) {\n                const interact: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                if (atlas.loaded) {\n                    const sprite: vd.VNode = atlas.getDOMSprite(this._tag.icon, this._tag.iconFloat);\n                    const iconCanvasX: number = Math.round(iconCanvas[0]);\n                    const iconCanvasY: number = Math.round(iconCanvas[1]);\n                    const transform: string = `translate(${iconCanvasX}px,${iconCanvasY}px)`;\n\n                    const click: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        this._tag.click$.next(this._tag);\n                    };\n\n                    const properties: vd.createProperties = {\n                        onclick: click,\n                        onmousedown: interact,\n                        style: { transform: transform },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagSymbol\", properties, [sprite]));\n                }\n            }\n        } else if (this._tag.text != null && (isRect || isPerspective)) {\n            const [textBasicX, textBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(3) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const textCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    textBasicX,\n                    textBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (textCanvas != null) {\n                const textCanvasX: number = Math.round(textCanvas[0]);\n                const textCanvasY: number = Math.round(textCanvas[1]);\n                const transform: string = this._tag.geometry instanceof RectGeometry ?\n                    `translate(${textCanvasX}px,${textCanvasY}px)` :\n                    `translate(-50%, -50%) translate(${textCanvasX}px,${textCanvasY}px)`;\n\n                const interact: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: {\n                        color: this._colorToCss(this._tag.textColor),\n                        transform: transform,\n                    },\n                    textContent: this._tag.text,\n                };\n\n                vNodes.push(vd.h(\"span.TagSymbol\", properties, []));\n            }\n        }\n\n        if (!this._tag.editable) {\n            return vNodes;\n        }\n\n        const lineColor: string = this._colorToCss(this._tag.lineColor);\n\n        if (this._tag.geometry instanceof RectGeometry) {\n            const [centroidBasicX, centroidBasicY]: number[] = this._tag.geometry.getCentroid2d();\n            const centroidCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    centroidBasicX,\n                    centroidBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (centroidCanvas != null) {\n                const interact: (e: MouseEvent) => void = this._interact(TagOperation.Centroid, \"move\");\n                const centroidCanvasX: number = Math.round(centroidCanvas[0]);\n                const centroidCanvasY: number = Math.round(centroidCanvas[1]);\n                const transform: string = `translate(-50%, -50%) translate(${centroidCanvasX}px,${centroidCanvasY}px)`;\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: { background: lineColor, transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagMover\", properties, []));\n            }\n        }\n\n        const vertices2d: number[][] = this._tag.geometry.getVertices2d();\n\n        for (let i: number = 0; i < vertices2d.length - 1; i++) {\n            if (isRect &&\n                ((this._tag.icon != null && i === this._tag.iconIndex) ||\n                (this._tag.icon == null && this._tag.text != null && i === 3))) {\n                continue;\n            }\n\n            const [vertexBasicX, vertexBasicY]: number[] = vertices2d[i];\n            const vertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    vertexBasicX,\n                    vertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (vertexCanvas == null) {\n                continue;\n            }\n\n            const cursor: InteractionCursor = isRect ?\n                 i % 2 === 0 ? \"nesw-resize\" : \"nwse-resize\" :\n                 \"crosshair\";\n\n            const interact: (e: MouseEvent) => void = this._interact(TagOperation.Vertex, cursor, i);\n            const vertexCanvasX: number = Math.round(vertexCanvas[0]);\n            const vertexCanvasY: number = Math.round(vertexCanvas[1]);\n            const transform: string = `translate(-50%, -50%) translate(${vertexCanvasX}px,${vertexCanvasY}px)`;\n\n            const properties: vd.createProperties = {\n                onmousedown: interact,\n                style: { background: lineColor, transform: transform, cursor: cursor },\n            };\n\n            vNodes.push(vd.h(\"div.TagResizer\", properties, []));\n\n            if (!this._tag.indicateVertices) {\n                continue;\n            }\n\n            const pointProperties: vd.createProperties = {\n                style: { background: lineColor, transform: transform },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        return vNodes;\n    }\n\n    public getGLObjects(): THREE.Object3D[] {\n        const glObjects: THREE.Object3D[] = [];\n\n        if (this._fill != null) {\n            glObjects.push(this._fill);\n        }\n\n        for (const hole of this._holes) {\n            glObjects.push(hole);\n        }\n\n        if (this._outline != null) {\n            glObjects.push(this._outline);\n        }\n\n        return glObjects;\n    }\n\n    public getRetrievableObjects(): THREE.Object3D[] {\n        return this._fill != null ? [this._fill] : [];\n    }\n\n    private _colorToCss(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    private _createFill(): THREE.Mesh {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.MeshBasicMaterial =\n            new THREE.MeshBasicMaterial({ side: THREE.DoubleSide, transparent: true });\n\n        this._updateFillMaterial(material);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createHoles(): THREE.Line[] {\n        let holes: THREE.Line[] = [];\n\n        if (this._tag.geometry instanceof PolygonGeometry) {\n            let holes3d: number[][][] = this._getHoles3d();\n\n            for (let holePoints3d of holes3d) {\n                let hole: THREE.Line = this._createLine(holePoints3d);\n                holes.push(hole);\n            }\n        }\n\n        return holes;\n    }\n\n    private _createLine(points3d: number[][]): THREE.Line {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.LineBasicMaterial = new THREE.LineBasicMaterial();\n        this._updateLineBasicMaterial(material);\n\n        const line: THREE.Line = new THREE.Line(geometry, material);\n        line.renderOrder = 1;\n\n        return line;\n    }\n\n    private _createOutline(): THREE.Line {\n        return this._createLine(this._getPoints3d());\n    }\n\n    private _disposeFill(): void {\n        if (this._fill == null) {\n            return;\n        }\n\n        this._fill.geometry.dispose();\n        (<THREE.Material>this._fill.material).dispose();\n        this._fill = null;\n    }\n\n    private _disposeHoles(): void {\n        for (let hole of this._holes) {\n            hole.geometry.dispose();\n            hole.material.dispose();\n        }\n\n        this._holes = [];\n    }\n\n    private _disposeOutline(): void {\n        if (this._outline == null) {\n            return;\n        }\n\n        this._outline.geometry.dispose();\n        this._outline.material.dispose();\n        this._outline = null;\n    }\n\n    private _getLinePositions(points3d: number[][]): Float32Array {\n        let length: number = points3d.length;\n        let positions: Float32Array = new Float32Array(length * 3);\n\n        for (let i: number = 0; i < length; ++i) {\n            let index: number = 3 * i;\n            let position: number[] = points3d[i];\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        return positions;\n    }\n\n    private _getHoles3d(): number[][][] {\n        const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._tag.geometry;\n\n        return this._in3dDomain() ?\n            polygonGeometry.getHoleVertices3d(this._transform) :\n            polygonGeometry.getHolePoints3d(this._transform);\n    }\n\n    private _getPoints3d(): number[][] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).getVertices3d(this._transform) :\n            this._tag.geometry.getPoints3d(this._transform);\n    }\n\n    private _getTriangles(): number[] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).get3dDomainTriangles3d(this._transform) :\n            this._tag.geometry.getTriangles3d(this._transform);\n    }\n\n    private _in3dDomain(): boolean {\n        return this._tag.geometry instanceof PolygonGeometry && this._tag.domain === TagDomain.ThreeDimensional;\n    }\n\n    private _interact(operation: TagOperation, cursor?: InteractionCursor, vertexIndex?: number): (e: MouseEvent) => void {\n        return (e: MouseEvent): void => {\n            let offsetX: number = e.offsetX - (<HTMLElement>e.target).offsetWidth / 2;\n            let offsetY: number = e.offsetY - (<HTMLElement>e.target).offsetHeight / 2;\n\n            this._interact$.next({\n                cursor: cursor,\n                offsetX: offsetX,\n                offsetY: offsetY,\n                operation: operation,\n                tag: this._tag,\n                vertexIndex: vertexIndex,\n            });\n        };\n    }\n\n    private _updateFillGeometry(): void {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>this._fill.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        if (attribute.array.length === positions.length) {\n            attribute.set(positions);\n            attribute.needsUpdate = true;\n        } else {\n            geometry.removeAttribute(\"position\");\n            geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        }\n\n        geometry.computeBoundingSphere();\n    }\n\n    private _updateFillMaterial(material: THREE.MeshBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.fillColor);\n        material.opacity = this._tag.fillOpacity;\n        material.needsUpdate = true;\n    }\n\n    private _updateHoleGeometries(): void {\n        let holes3d: number[][][] = this._getHoles3d();\n\n        if (holes3d.length !== this._holes.length) {\n            throw new Error(\"Changing the number of holes is not supported.\");\n        }\n\n        for (let i: number = 0; i < this._holes.length; i++) {\n            let holePoints3d: number[][] = holes3d[i];\n            let hole: THREE.Line = this._holes[i];\n\n            this._updateLine(hole, holePoints3d);\n        }\n    }\n\n    private _updateHoleMaterials(): void {\n        for (let hole of this._holes) {\n            let material: THREE.LineBasicMaterial = <THREE.LineBasicMaterial>hole.material;\n\n            this._updateLineBasicMaterial(material);\n        }\n    }\n\n    private _updateLine(line: THREE.Line, points3d: number[][]): void {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>line.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        attribute.set(positions);\n        attribute.needsUpdate = true;\n\n        geometry.computeBoundingSphere();\n    }\n\n    private _updateOulineGeometry(): void {\n        this._updateLine(this._outline, this._getPoints3d());\n    }\n\n    private _updateOutlineMaterial(): void {\n        let material: THREE.LineBasicMaterial = <THREE.LineBasicMaterial>this._outline.material;\n\n        this._updateLineBasicMaterial(material);\n    }\n\n    private _updateLineBasicMaterial(material: THREE.LineBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.lineColor);\n        material.linewidth = Math.max(this._tag.lineWidth, 1);\n        material.visible = this._tag.lineWidth >= 1 && this._tag.lineOpacity > 0;\n        material.opacity = this._tag.lineOpacity;\n        material.transparent = this._tag.lineOpacity < 1;\n        material.needsUpdate = true;\n    }\n}\n",
     "import {Subject} from \"rxjs\";\n\nimport {\n    IOutlineTagOptions,\n    PolygonGeometry,\n    RectGeometry,\n    Tag,\n    TagDomain,\n    VertexGeometry,\n} from \"../../../Component\";\nimport {Alignment} from \"../../../Viewer\";\n\n/**\n * @class OutlineTag\n *\n * @classdesc Tag holding properties for visualizing a geometry outline.\n *\n * @example\n * ```\n * var geometry = new Mapillary.TagComponent.RectGeometry([0.3, 0.3, 0.5, 0.4]);\n * var tag = new Mapillary.TagComponent.OutlineTag(\n *     \"id-1\",\n *     geometry\n *     { editable: true, lineColor: 0xff0000 });\n *\n * tagComponent.add([tag]);\n * ```\n */\nexport class OutlineTag extends Tag {\n    /**\n     * Event fired when the icon of the outline tag is clicked.\n     *\n     * @event OutlineTag#click\n     * @type {OutlineTag} The tag instance that was clicked.\n     */\n    public static click: string = \"click\";\n\n    protected _geometry: VertexGeometry;\n\n    private _domain: TagDomain;\n    private _editable: boolean;\n    private _icon: string;\n    private _iconFloat: Alignment;\n    private _iconIndex: number;\n    private _indicateVertices: boolean;\n    private _lineColor: number;\n    private _lineOpacity: number;\n    private _lineWidth: number;\n    private _fillColor: number;\n    private _fillOpacity: number;\n    private _text: string;\n    private _textColor: number;\n\n    private _click$: Subject<OutlineTag>;\n\n    /**\n     * Create an outline tag.\n     *\n     * @override\n     * @constructor\n     * @param {string} id - Unique identifier of the tag.\n     * @param {VertexGeometry} geometry - Geometry defining vertices of tag.\n     * @param {IOutlineTagOptions} options - Options defining the visual appearance and\n     * behavior of the outline tag.\n     */\n    constructor(id: string, geometry: VertexGeometry, options?: IOutlineTagOptions) {\n        super(id, geometry);\n\n        options = !!options ? options : {};\n\n        const domain: TagDomain = options.domain != null && geometry instanceof PolygonGeometry ?\n            options.domain : TagDomain.TwoDimensional;\n\n        const twoDimensionalPolygon: boolean = this._twoDimensionalPolygon(domain, geometry);\n\n        this._domain = domain;\n        this._editable = options.editable == null || twoDimensionalPolygon ? false : options.editable;\n        this._fillColor = options.fillColor == null ? 0xFFFFFF : options.fillColor;\n        this._fillOpacity = options.fillOpacity == null ? 0.0 : options.fillOpacity;\n        this._icon = options.icon === undefined ? null : options.icon;\n        this._iconFloat = options.iconFloat == null ? Alignment.Center : options.iconFloat;\n        this._iconIndex = options.iconIndex == null ? 3 : options.iconIndex;\n        this._indicateVertices = options.indicateVertices == null ? true : options.indicateVertices;\n        this._lineColor = options.lineColor == null ? 0xFFFFFF : options.lineColor;\n        this._lineOpacity = options.lineOpacity == null ? 1 : options.lineOpacity;\n        this._lineWidth = options.lineWidth == null ? 1 : options.lineWidth;\n        this._text = options.text === undefined ? null : options.text;\n        this._textColor = options.textColor == null ? 0xFFFFFF : options.textColor;\n\n        this._click$ = new Subject<OutlineTag>();\n\n        this._click$\n            .subscribe(\n                (t: Tag): void => {\n                    this.fire(OutlineTag.click, this);\n                });\n    }\n\n    /**\n     * Click observable.\n     *\n     * @description An observable emitting the tag when the icon of the\n     * tag has been clicked.\n     *\n     * @returns {Observable<Tag>}\n     */\n    public get click$(): Subject<OutlineTag> {\n        return this._click$;\n    }\n\n    /**\n     * Get domain property.\n     *\n     * @description Readonly property that can only be set in constructor.\n     *\n     * @returns Value indicating the domain of the tag.\n     */\n    public get domain(): TagDomain {\n        return this._domain;\n    }\n\n    /**\n     * Get editable property.\n     * @returns {boolean} Value indicating if tag is editable.\n     */\n    public get editable(): boolean {\n        return this._editable;\n    }\n\n    /**\n     * Set editable property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set editable(value: boolean) {\n        if (this._twoDimensionalPolygon(this._domain, this._geometry)) {\n            return;\n        }\n\n        this._editable = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get fill color property.\n     * @returns {number}\n     */\n    public get fillColor(): number {\n        return this._fillColor;\n    }\n\n    /**\n     * Set fill color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set fillColor(value: number) {\n        this._fillColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get fill opacity property.\n     * @returns {number}\n     */\n    public get fillOpacity(): number {\n        return this._fillOpacity;\n    }\n\n    /**\n     * Set fill opacity property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set fillOpacity(value: number) {\n        this._fillOpacity = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /** @inheritdoc */\n    public get geometry(): VertexGeometry {\n        return this._geometry;\n    }\n\n    /**\n     * Get icon property.\n     * @returns {string}\n     */\n    public get icon(): string {\n        return this._icon;\n    }\n\n    /**\n     * Set icon property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set icon(value: string) {\n        this._icon = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get icon float property.\n     * @returns {Alignment}\n     */\n    public get iconFloat(): Alignment {\n        return this._iconFloat;\n    }\n\n    /**\n     * Set icon float property.\n     * @param {Alignment}\n     *\n     * @fires Tag#changed\n     */\n    public set iconFloat(value: Alignment) {\n        this._iconFloat = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get icon index property.\n     * @returns {number}\n     */\n    public get iconIndex(): number {\n        return this._iconIndex;\n    }\n\n    /**\n     * Set icon index property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set iconIndex(value: number) {\n        this._iconIndex = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get indicate vertices property.\n     * @returns {boolean} Value indicating if vertices should be indicated\n     * when tag is editable.\n     */\n    public get indicateVertices(): boolean {\n        return this._indicateVertices;\n    }\n\n    /**\n     * Set indicate vertices property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set indicateVertices(value: boolean) {\n        this._indicateVertices = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line color property.\n     * @returns {number}\n     */\n    public get lineColor(): number {\n        return this._lineColor;\n    }\n\n    /**\n     * Set line color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineColor(value: number) {\n        this._lineColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line opacity property.\n     * @returns {number}\n     */\n    public get lineOpacity(): number {\n        return this._lineOpacity;\n    }\n\n    /**\n     * Set line opacity property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineOpacity(value: number) {\n        this._lineOpacity = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line width property.\n     * @returns {number}\n     */\n    public get lineWidth(): number {\n        return this._lineWidth;\n    }\n\n    /**\n     * Set line width property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineWidth(value: number) {\n        this._lineWidth = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text property.\n     * @returns {string}\n     */\n    public get text(): string {\n        return this._text;\n    }\n\n    /**\n     * Set text property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set text(value: string) {\n        this._text = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text color property.\n     * @returns {number}\n     */\n    public get textColor(): number {\n        return this._textColor;\n    }\n\n    /**\n     * Set text color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set textColor(value: number) {\n        this._textColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set options for tag.\n     *\n     * @description Sets all the option properties provided and keeps\n     * the rest of the values as is.\n     *\n     * @param {IOutlineTagOptions} options - Outline tag options\n     *\n     * @fires {Tag#changed}\n     */\n    public setOptions(options: IOutlineTagOptions): void {\n        const twoDimensionalPolygon: boolean = this._twoDimensionalPolygon(this._domain, this._geometry);\n\n        this._editable = twoDimensionalPolygon || options.editable == null ? this._editable : options.editable;\n        this._icon = options.icon === undefined ? this._icon : options.icon;\n        this._iconFloat = options.iconFloat == null ? this._iconFloat : options.iconFloat;\n        this._iconIndex = options.iconIndex == null ? this._iconIndex : options.iconIndex;\n        this._indicateVertices = options.indicateVertices == null ? this._indicateVertices : options.indicateVertices;\n        this._lineColor = options.lineColor == null ? this._lineColor : options.lineColor;\n        this._lineWidth = options.lineWidth == null ? this._lineWidth : options.lineWidth;\n        this._fillColor = options.fillColor == null ? this._fillColor : options.fillColor;\n        this._fillOpacity = options.fillOpacity == null ? this._fillOpacity : options.fillOpacity;\n        this._text = options.text === undefined ? this._text : options.text;\n        this._textColor = options.textColor == null ? this._textColor : options.textColor;\n        this._notifyChanged$.next(this);\n    }\n\n    private _twoDimensionalPolygon(domain: TagDomain, geometry: VertexGeometry): boolean {\n        return domain !== TagDomain.ThreeDimensional && geometry instanceof PolygonGeometry;\n    }\n}\n\nexport default OutlineTag;\n",
     "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject} from \"rxjs\";\n\nimport {IInteraction} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\nexport abstract class RenderTag<T> {\n    protected _tag: T;\n    protected _transform: Transform;\n    protected _viewportCoords: ViewportCoords;\n\n    protected _glObjectsChanged$: Subject<RenderTag<T>>;\n    protected _interact$: Subject<IInteraction>;\n\n    constructor(tag: T, transform: Transform, viewportCoords?: ViewportCoords) {\n        this._tag = tag;\n        this._transform = transform;\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n\n        this._glObjectsChanged$ = new Subject<RenderTag<T>>();\n        this._interact$ = new Subject<IInteraction>();\n    }\n\n    public get glObjectsChanged$(): Observable<RenderTag<T>> {\n        return this._glObjectsChanged$;\n    }\n\n    public get interact$(): Observable<IInteraction> {\n        return this._interact$;\n    }\n\n    public get tag(): T {\n        return this._tag;\n    }\n\n    public abstract dispose(): void;\n\n    public abstract getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[];\n\n    public abstract getGLObjects(): THREE.Object3D[];\n\n    public abstract getRetrievableObjects(): THREE.Object3D[];\n}\n\nexport default RenderTag;\n",
     "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    InteractionCursor,\n    RenderTag,\n    SpotTag,\n    Tag,\n    TagOperation,\n} from \"../../../Component\";\nimport {ISize} from \"../../../Render\";\nimport {\n    Alignment,\n    ISpriteAtlas,\n} from \"../../../Viewer\";\n\n/**\n * @class SpotRenderTag\n * @classdesc Tag visualizing the properties of a SpotTag.\n */\nexport class SpotRenderTag extends RenderTag<SpotTag> {\n    public dispose(): void { /* noop */ }\n\n    public getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const tag: SpotTag = this._tag;\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        const vNodes: vd.VNode[] = [];\n        const [centroidBasicX, centroidBasicY]: number[] = tag.geometry.getCentroid2d();\n        const centroidCanvas: number[] =\n            this._viewportCoords.basicToCanvasSafe(\n                centroidBasicX,\n                centroidBasicY,\n                container,\n                this._transform,\n                camera);\n\n        if (centroidCanvas != null) {\n            const interactNone: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: tag });\n            };\n\n            const canvasX: number = Math.round(centroidCanvas[0]);\n            const canvasY: number = Math.round(centroidCanvas[1]);\n\n            if (tag.icon != null) {\n                if (atlas.loaded) {\n                    const sprite: vd.VNode = atlas.getDOMSprite(tag.icon, Alignment.Bottom);\n                    const iconTransform: string = `translate(${canvasX}px,${canvasY + 8}px)`;\n                    const properties: vd.createProperties = {\n                        onmousedown: interactNone,\n                        style: {\n                            pointerEvents: \"all\",\n                            transform: iconTransform,\n                        },\n                    };\n\n                    vNodes.push(vd.h(\"div\", properties, [sprite]));\n                }\n            } else if (tag.text != null) {\n                const textTransform: string = `translate(-50%,0%) translate(${canvasX}px,${canvasY + 8}px)`;\n                const properties: vd.createProperties = {\n                    onmousedown: interactNone,\n                    style: {\n                        color: this._colorToCss(tag.textColor),\n                        transform: textTransform,\n                    },\n                    textContent: tag.text,\n                };\n\n                vNodes.push(vd.h(\"span.TagSymbol\", properties, []));\n            }\n\n            const interact: (e: MouseEvent) => void = this._interact(TagOperation.Centroid, tag, \"move\");\n            const background: string = this._colorToCss(tag.color);\n            const transform: string = `translate(-50%,-50%) translate(${canvasX}px,${canvasY}px)`;\n\n            if (tag.editable) {\n                let interactorProperties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: {\n                        background: background,\n                        transform: transform,\n                    },\n                };\n\n                vNodes.push(vd.h(\"div.TagSpotInteractor\", interactorProperties, []));\n            }\n\n            const pointProperties: vd.createProperties = {\n                style: {\n                    background: background,\n                    transform: transform,\n                },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        return vNodes;\n    }\n\n    public getGLObjects(): THREE.Object3D[] { return []; }\n\n    public getRetrievableObjects(): THREE.Object3D[] { return []; }\n\n    private _colorToCss(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    private _interact(operation: TagOperation, tag: Tag, cursor: InteractionCursor, vertexIndex?: number): (e: MouseEvent) => void {\n        return (e: MouseEvent): void => {\n            const offsetX: number = e.offsetX - (<HTMLElement>e.target).offsetWidth / 2;\n            const offsetY: number = e.offsetY - (<HTMLElement>e.target).offsetHeight / 2;\n\n            this._interact$.next({\n                cursor: cursor,\n                offsetX: offsetX,\n                offsetY: offsetY,\n                operation: operation,\n                tag: tag,\n                vertexIndex: vertexIndex,\n            });\n        };\n    }\n}\n",
     "import {\n    Geometry,\n    ISpotTagOptions,\n    Tag,\n} from \"../../../Component\";\n\n/**\n * @class SpotTag\n *\n * @classdesc Tag holding properties for visualizing the centroid of a geometry.\n *\n * @example\n * ```\n * var geometry = new Mapillary.TagComponent.PointGeometry([0.3, 0.3]);\n * var tag = new Mapillary.TagComponent.SpotTag(\n *     \"id-1\",\n *     geometry\n *     { editable: true, color: 0xff0000 });\n *\n * tagComponent.add([tag]);\n * ```\n */\nexport class SpotTag extends Tag {\n    protected _geometry: Geometry;\n\n    private _color: number;\n    private _editable: boolean;\n    private _icon: string;\n    private _text: string;\n    private _textColor: number;\n\n    /**\n     * Create a spot tag.\n     *\n     * @override\n     * @constructor\n     * @param {string} id\n     * @param {Geometry} geometry\n     * @param {IOutlineTagOptions} options - Options defining the visual appearance and\n     * behavior of the spot tag.\n     */\n    constructor(id: string, geometry: Geometry, options?: ISpotTagOptions) {\n        super(id, geometry);\n\n        options = !!options ? options : {};\n\n        this._color = options.color == null ? 0xFFFFFF : options.color;\n        this._editable = options.editable == null ? false : options.editable;\n        this._icon = options.icon === undefined ? null : options.icon;\n        this._text = options.text === undefined ? null : options.text;\n        this._textColor = options.textColor == null ? 0xFFFFFF : options.textColor;\n    }\n\n    /**\n     * Get color property.\n     * @returns {number} The color of the spot as a hexagonal number;\n     */\n    public get color(): number {\n        return this._color;\n    }\n\n    /**\n     * Set color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set color(value: number) {\n        this._color = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get editable property.\n     * @returns {boolean} Value indicating if tag is editable.\n     */\n    public get editable(): boolean {\n        return this._editable;\n    }\n\n    /**\n     * Set editable property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set editable(value: boolean) {\n        this._editable = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get icon property.\n     * @returns {string}\n     */\n    public get icon(): string {\n        return this._icon;\n    }\n\n    /**\n     * Set icon property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set icon(value: string) {\n        this._icon = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text property.\n     * @returns {string}\n     */\n    public get text(): string {\n        return this._text;\n    }\n\n    /**\n     * Set text property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set text(value: string) {\n        this._text = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text color property.\n     * @returns {number}\n     */\n    public get textColor(): number {\n        return this._textColor;\n    }\n\n    /**\n     * Set text color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set textColor(value: number) {\n        this._textColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set options for tag.\n     *\n     * @description Sets all the option properties provided and keps\n     * the rest of the values as is.\n     *\n     * @param {ISpotTagOptions} options - Spot tag options\n     *\n     * @fires {Tag#changed}\n     */\n    public setOptions(options: ISpotTagOptions): void {\n        this._color = options.color == null ? this._color : options.color;\n        this._editable = options.editable == null ? this._editable : options.editable;\n        this._icon = options.icon === undefined ? this._icon : options.icon;\n        this._text = options.text === undefined ? this._text : options.text;\n        this._textColor = options.textColor == null ? this._textColor : options.textColor;\n        this._notifyChanged$.next(this);\n    }\n}\n\nexport default SpotTag;\n",
     "import {share, map} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\nimport {Geometry} from \"../../../Component\";\nimport {EventEmitter} from \"../../../Utils\";\n\n/**\n * @class Tag\n * @abstract\n * @classdesc Abstract class representing the basic functionality of for a tag.\n */\nexport abstract class Tag extends EventEmitter {\n    /**\n     * Event fired when a property related to the visual appearance of the\n     * tag has changed.\n     *\n     * @event Tag#changed\n     * @type {Tag} The tag instance that has changed.\n     */\n    public static changed: string = \"changed\";\n\n    /**\n     * Event fired when the geometry of the tag has changed.\n     *\n     * @event Tag#geometrychanged\n     * @type {Tag} The tag instance whose geometry has changed.\n     */\n    public static geometrychanged: string = \"geometrychanged\";\n\n    protected _id: string;\n    protected _geometry: Geometry;\n\n    protected _notifyChanged$: Subject<Tag>;\n\n    /**\n     * Create a tag.\n     *\n     * @constructor\n     * @param {string} id\n     * @param {Geometry} geometry\n     */\n    constructor(id: string, geometry: Geometry) {\n        super();\n\n        this._id = id;\n        this._geometry = geometry;\n\n        this._notifyChanged$ = new Subject<Tag>();\n\n        this._notifyChanged$\n            .subscribe(\n                (t: Tag): void => {\n                    this.fire(Tag.changed, this);\n                });\n\n        this._geometry.changed$\n            .subscribe(\n                (g: Geometry): void => {\n                    this.fire(Tag.geometrychanged, this);\n                });\n    }\n\n    /**\n     * Get id property.\n     * @returns {string}\n     */\n    public get id(): string {\n        return this._id;\n    }\n\n    /**\n     * Get geometry property.\n     * @returns {Geometry} The geometry of the tag.\n     */\n    public get geometry(): Geometry {\n        return this._geometry;\n    }\n\n    /**\n     * Get changed observable.\n     * @returns {Observable<Tag>}\n     * @ignore\n     */\n    public get changed$(): Observable<Tag> {\n        return this._notifyChanged$;\n    }\n\n    /**\n     * Get geometry changed observable.\n     * @returns {Observable<Tag>}\n     * @ignore\n     */\n    public get geometryChanged$(): Observable<Tag> {\n        return this._geometry.changed$.pipe(\n            map(\n                (geometry: Geometry): Tag => {\n                    return this;\n                }),\n            share());\n    }\n}\n\nexport default Tag;\n",
     "/**\n * Enumeration for tag domains.\n * @enum {number}\n * @readonly\n * @description Defines where lines between two vertices are treated\n * as straight.\n *\n * Only applicable for polygons. For rectangles lines between\n * vertices are always treated as straight in the distorted 2D\n * projection and bended in the undistorted 3D space.\n */\nexport enum TagDomain {\n    /**\n     * Treats lines between two vertices as straight in the\n     * distorted 2D projection, i.e. on the image. If the image\n     * is distorted this will result in bended lines when rendered\n     * in the undistorted 3D space.\n     */\n    TwoDimensional,\n\n    /**\n     * Treats lines as straight in the undistorted 3D space. If the\n     * image is distorted this will result in bended lines when rendered\n     * on the distorted 2D projection of the image.\n     */\n    ThreeDimensional,\n}\n\nexport default TagDomain;\n",
+    "/**\n * Enumeration for component size.\n * @enum {number}\n * @readonly\n * @description May be used by a component to allow for resizing\n * of the UI elements rendered by the component.\n */\nexport enum ComponentSize {\n    /**\n     * Automatic size. The size of the elements will automatically\n     * change at a predefined threshold.\n     */\n    Automatic,\n\n    /**\n     * Large size. The size of the elements will be fixed until another\n     * component size is configured.\n     */\n    Large,\n\n    /**\n     * Small size. The size of the elements will be fixed until another\n     * component size is configured.\n     */\n    Small,\n}\n\nexport default ComponentSize;\n",
     "import {\n    Component,\n    IComponentConfiguration,\n} from \"../../Component\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport abstract class HandlerBase<TConfiguration extends IComponentConfiguration> {\n    protected _component: Component<TConfiguration>;\n    protected _container: Container;\n    protected _navigator: Navigator;\n\n    protected _enabled: boolean;\n\n    /** @ignore */\n    constructor(component: Component<TConfiguration>, container: Container, navigator: Navigator) {\n        this._component = component;\n        this._container = container;\n        this._navigator = navigator;\n\n        this._enabled = false;\n    }\n\n    /**\n     * Returns a Boolean indicating whether the interaction is enabled.\n     *\n     * @returns {boolean} `true` if the interaction is enabled.\n     */\n    public get isEnabled(): boolean {\n        return this._enabled;\n    }\n\n    /**\n     * Enables the interaction.\n     *\n     * @example ```<component-name>.<handler-name>.enable();```\n     */\n    public enable(): void {\n        if (this._enabled || !this._component.activated) { return; }\n\n        this._enable();\n        this._enabled = true;\n\n        this._component.configure(this._getConfiguration(true));\n    }\n\n    /**\n     * Disables the interaction.\n     *\n     * @example ```<component-name>.<handler-name>.disable();```\n     */\n    public disable(): void {\n        if (!this._enabled) { return; }\n\n        this._disable();\n        this._enabled = false;\n\n        if (this._component.activated) {\n            this._component.configure(this._getConfiguration(false));\n        }\n    }\n\n    protected abstract _enable(): void;\n\n    protected abstract _disable(): void;\n\n    protected abstract _getConfiguration(enable: boolean): TConfiguration;\n}\n\nexport default HandlerBase;\n",
-    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../../API\";\nimport {Transform} from \"../../Geo\";\nimport {Node} from \"../../Graph\";\nimport {Shaders} from \"../../Component\";\n\nexport class MeshFactory {\n    private _imagePlaneDepth: number;\n    private _imageSphereRadius: number;\n\n    constructor(imagePlaneDepth?: number, imageSphereRadius?: number) {\n        this._imagePlaneDepth = imagePlaneDepth != null ? imagePlaneDepth : 200;\n        this._imageSphereRadius = imageSphereRadius != null ? imageSphereRadius : 200;\n    }\n\n    public createMesh(node: Node, transform: Transform): THREE.Mesh {\n        let mesh: THREE.Mesh = node.pano ?\n            this._createImageSphere(node, transform) :\n            this._createImagePlane(node, transform);\n\n        return mesh;\n    }\n\n    public createFlatMesh(\n        node: Node,\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.Mesh {\n\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getFlatImagePlaneGeoFromBasic(transform, basicX0, basicX1, basicY0, basicY1);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    public createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano && !node.fullPano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        return node.pano ?\n            this._createSphereCurtainMesh(node, transform) :\n            this._createCurtainMesh(node, transform);\n    }\n\n    public createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        return this._createDistortedCurtainMesh(node, transform);\n    }\n\n    private _createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        return this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n    }\n\n    private _createImageSphere(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let mesh: THREE.Mesh = this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n\n        return mesh;\n    }\n\n    private _createImagePlane(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangular.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangular.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangularCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangularCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspective.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspective.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspectiveCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistortedCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistortedCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistorted.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistorted.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createTexture(image: HTMLImageElement): THREE.Texture {\n        let texture: THREE.Texture = new THREE.Texture(image);\n        texture.minFilter = THREE.LinearFilter;\n        texture.needsUpdate = true;\n\n        return texture;\n    }\n\n    private _useMesh(transform: Transform, node: Node): boolean {\n        return node.mesh.vertices.length && transform.hasValidScale;\n    }\n\n    private _getImageSphereGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imageSphereRadius * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            let l: number = Math.sqrt(x * x + y * y + z * z);\n            let boundedL: number = Math.max(minZ, Math.min(l, maxZ));\n            let factor: number = boundedL / l;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, z * factor);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getImagePlaneGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        const undistortionMarginFactor: number = 3;\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imagePlaneDepth * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            if (i < 4) {\n                x *= undistortionMarginFactor;\n                y *= undistortionMarginFactor;\n            }\n\n            let boundedZ: number = Math.max(minZ, Math.min(z, maxZ));\n            let factor: number = boundedZ / z;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, boundedZ);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getFlatImageSphereGeo(transform: Transform): THREE.Geometry {\n        let gpano: IGPano = transform.gpano;\n        let phiStart: number = 2 * Math.PI * gpano.CroppedAreaLeftPixels / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n        let thetaStart: number = Math.PI *\n            (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels - gpano.CroppedAreaTopPixels) /\n            gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n        let geometry: THREE.SphereGeometry = new THREE.SphereGeometry(\n            this._imageSphereRadius,\n            20,\n            40,\n            phiStart - Math.PI / 2,\n            phiLength,\n            thetaStart,\n            thetaLength);\n\n        geometry.applyMatrix(new THREE.Matrix4().getInverse(transform.rt));\n\n        return geometry;\n    }\n\n    private _getRegularFlatImagePlaneGeo(transform: Transform): THREE.BufferGeometry {\n        let width: number = transform.width;\n        let height: number = transform.height;\n        let size: number = Math.max(width, height);\n        let dx: number = width / 2.0 / size;\n        let dy: number = height / 2.0 / size;\n\n        return this._getFlatImagePlaneGeo(transform, dx, dy);\n    }\n\n    private _getFlatImagePlaneGeo(transform: Transform, dx: number, dy: number): THREE.BufferGeometry {\n        let vertices: number[][] = [];\n        vertices.push(transform.unprojectSfM([-dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _getFlatImagePlaneGeoFromBasic(\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.BufferGeometry {\n\n        let vertices: number[][] = [];\n\n        vertices.push(transform.unprojectBasic([basicX0, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY1], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX0, basicY1], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _createFlatGeometry(vertices: number[][]): THREE.BufferGeometry {\n        let positions: Float32Array = new Float32Array(12);\n        for (let i: number = 0; i < vertices.length; i++) {\n            let index: number = 3 * i;\n            positions[index + 0] = vertices[i][0];\n            positions[index + 1] = vertices[i][1];\n            positions[index + 2] = vertices[i][2];\n        }\n\n        let indices: Uint16Array = new Uint16Array(6);\n        indices[0] = 0;\n        indices[1] = 1;\n        indices[2] = 3;\n        indices[3] = 1;\n        indices[4] = 2;\n        indices[5] = 3;\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n}\n\nexport default MeshFactory;\n",
-    "import * as THREE from \"three\";\n\nimport {IShaderMaterial} from \"../../Component\";\n\nexport class MeshScene {\n    public scene: THREE.Scene;\n    public sceneOld: THREE.Scene;\n\n    public imagePlanes: THREE.Mesh[];\n    public imagePlanesOld: THREE.Mesh[];\n\n    constructor() {\n        this.scene = new THREE.Scene();\n        this.sceneOld = new THREE.Scene();\n\n        this.imagePlanes = [];\n        this.imagePlanesOld = [];\n    }\n\n    public updateImagePlanes(planes: THREE.Mesh[]): void {\n        this._dispose(this.imagePlanesOld, this.sceneOld);\n\n        for (let plane of this.imagePlanes) {\n            this.scene.remove(plane);\n            this.sceneOld.add(plane);\n        }\n\n        for (let plane of planes) {\n            this.scene.add(plane);\n        }\n\n        this.imagePlanesOld = this.imagePlanes;\n        this.imagePlanes = planes;\n    }\n\n    public addImagePlanes(planes: THREE.Mesh[]): void {\n        for (let plane of planes) {\n            this.scene.add(plane);\n            this.imagePlanes.push(plane);\n        }\n    }\n\n    public addImagePlanesOld(planes: THREE.Mesh[]): void {\n        for (let plane of planes) {\n            this.sceneOld.add(plane);\n            this.imagePlanesOld.push(plane);\n        }\n    }\n\n    public setImagePlanes(planes: THREE.Mesh[]): void {\n        this._clear();\n        this.addImagePlanes(planes);\n    }\n\n    public setImagePlanesOld(planes: THREE.Mesh[]): void {\n        this._clearOld();\n        this.addImagePlanesOld(planes);\n    }\n\n    public clear(): void {\n        this._clear();\n        this._clearOld();\n    }\n\n    private _clear(): void {\n        this._dispose(this.imagePlanes, this.scene);\n        this.imagePlanes.length = 0;\n    }\n\n    private _clearOld(): void {\n        this._dispose(this.imagePlanesOld, this.sceneOld);\n        this.imagePlanesOld.length = 0;\n    }\n\n    private _dispose(planes: THREE.Mesh[], scene: THREE.Scene): void {\n        for (let plane of planes) {\n            scene.remove(plane);\n            plane.geometry.dispose();\n            (<THREE.Material>plane.material).dispose();\n            let texture: THREE.Texture = (<IShaderMaterial>plane.material).uniforms.projectorTex.value;\n            if (texture != null) {\n                texture.dispose();\n            }\n        }\n    }\n}\n\nexport default MeshScene;\n",
+    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../../API\";\nimport {Transform} from \"../../Geo\";\nimport {Node} from \"../../Graph\";\nimport {Shaders} from \"../../Component\";\n\nexport class MeshFactory {\n    private _imagePlaneDepth: number;\n    private _imageSphereRadius: number;\n\n    constructor(imagePlaneDepth?: number, imageSphereRadius?: number) {\n        this._imagePlaneDepth = imagePlaneDepth != null ? imagePlaneDepth : 200;\n        this._imageSphereRadius = imageSphereRadius != null ? imageSphereRadius : 200;\n    }\n\n    public createMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano) {\n            return this._createImageSphere(node, transform);\n        } else if (transform.cameraProjection === \"fisheye\") {\n            return this._createImagePlaneFisheye(node, transform);\n        } else {\n            return this._createImagePlane(node, transform);\n        }\n    }\n\n    public createFlatMesh(\n        node: Node,\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.Mesh {\n\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getFlatImagePlaneGeoFromBasic(transform, basicX0, basicX1, basicY0, basicY1);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    public createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano && !node.fullPano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        if (node.pano) {\n            return this._createSphereCurtainMesh(node, transform);\n        } else if (transform.cameraProjection === \"fisheye\") {\n            return this._createCurtainMeshFisheye(node, transform);\n        } else {\n            return this._createCurtainMesh(node, transform);\n        }\n    }\n\n    public createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        return this._createDistortedCurtainMesh(node, transform);\n    }\n\n    private _createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createCurtainMeshFisheye(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainPlaneMaterialParametersFisheye(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeoFisheye(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        return this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n    }\n\n    private _createImageSphere(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let mesh: THREE.Mesh = this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n\n        return mesh;\n    }\n\n    private _createImagePlane(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createImagePlaneFisheye(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createPlaneMaterialParametersFisheye(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeoFisheye(transform, node) :\n            this._getRegularFlatImagePlaneGeoFisheye(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangular.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangular.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangularCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangularCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspective.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspective.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createPlaneMaterialParametersFisheye(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.fisheye.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.fisheye.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainPlaneMaterialParametersFisheye(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.fisheyeCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.fisheyeCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspectiveCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistortedCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistortedCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistorted.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistorted.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createTexture(image: HTMLImageElement): THREE.Texture {\n        let texture: THREE.Texture = new THREE.Texture(image);\n        texture.minFilter = THREE.LinearFilter;\n        texture.needsUpdate = true;\n\n        return texture;\n    }\n\n    private _useMesh(transform: Transform, node: Node): boolean {\n        return node.mesh.vertices.length && transform.hasValidScale;\n    }\n\n    private _getImageSphereGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imageSphereRadius * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            let l: number = Math.sqrt(x * x + y * y + z * z);\n            let boundedL: number = Math.max(minZ, Math.min(l, maxZ));\n            let factor: number = boundedL / l;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, z * factor);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getImagePlaneGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        const undistortionMarginFactor: number = 3;\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imagePlaneDepth * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            if (i < 4) {\n                x *= undistortionMarginFactor;\n                y *= undistortionMarginFactor;\n            }\n\n            let boundedZ: number = Math.max(minZ, Math.min(z, maxZ));\n            let factor: number = boundedZ / z;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, boundedZ);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getImagePlaneGeoFisheye(transform: Transform, node: Node): THREE.BufferGeometry {\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imagePlaneDepth * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            let l: number = Math.sqrt(x * x + y * y + z * z);\n            let boundedL: number = Math.max(minZ, Math.min(l, maxZ));\n            let factor: number = boundedL / l;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, z * factor);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getFlatImageSphereGeo(transform: Transform): THREE.Geometry {\n        let gpano: IGPano = transform.gpano;\n        let phiStart: number = 2 * Math.PI * gpano.CroppedAreaLeftPixels / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n        let thetaStart: number = Math.PI *\n            (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels - gpano.CroppedAreaTopPixels) /\n            gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n        let geometry: THREE.SphereGeometry = new THREE.SphereGeometry(\n            this._imageSphereRadius,\n            20,\n            40,\n            phiStart - Math.PI / 2,\n            phiLength,\n            thetaStart,\n            thetaLength);\n\n        geometry.applyMatrix(new THREE.Matrix4().getInverse(transform.rt));\n\n        return geometry;\n    }\n\n    private _getRegularFlatImagePlaneGeo(transform: Transform): THREE.BufferGeometry {\n        let width: number = transform.width;\n        let height: number = transform.height;\n        let size: number = Math.max(width, height);\n        let dx: number = width / 2.0 / size;\n        let dy: number = height / 2.0 / size;\n\n        return this._getFlatImagePlaneGeo(transform, dx, dy);\n    }\n\n    private _getFlatImagePlaneGeo(transform: Transform, dx: number, dy: number): THREE.BufferGeometry {\n        let vertices: number[][] = [];\n        vertices.push(transform.unprojectSfM([-dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _getRegularFlatImagePlaneGeoFisheye(transform: Transform): THREE.BufferGeometry {\n        let width: number = transform.width;\n        let height: number = transform.height;\n        let size: number = Math.max(width, height);\n        let dx: number = width / 2.0 / size;\n        let dy: number = height / 2.0 / size;\n\n        return this._getFlatImagePlaneGeoFisheye(transform, dx, dy);\n    }\n\n    private _getFlatImagePlaneGeoFisheye(transform: Transform, dx: number, dy: number): THREE.BufferGeometry {\n        let vertices: number[][] = [];\n        vertices.push(transform.unprojectSfM([-dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _getFlatImagePlaneGeoFromBasic(\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.BufferGeometry {\n\n        let vertices: number[][] = [];\n\n        vertices.push(transform.unprojectBasic([basicX0, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY1], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX0, basicY1], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _createFlatGeometry(vertices: number[][]): THREE.BufferGeometry {\n        let positions: Float32Array = new Float32Array(12);\n        for (let i: number = 0; i < vertices.length; i++) {\n            let index: number = 3 * i;\n            positions[index + 0] = vertices[i][0];\n            positions[index + 1] = vertices[i][1];\n            positions[index + 2] = vertices[i][2];\n        }\n\n        let indices: Uint16Array = new Uint16Array(6);\n        indices[0] = 0;\n        indices[1] = 1;\n        indices[2] = 3;\n        indices[3] = 1;\n        indices[4] = 2;\n        indices[5] = 3;\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n}\n\nexport default MeshFactory;\n",
+    "import * as THREE from \"three\";\n\nimport {IShaderMaterial} from \"../../Component\";\n\nexport class MeshScene {\n    private _planes: { [key: string]: THREE.Mesh };\n    private _planesOld: { [key: string]: THREE.Mesh };\n    private _planesPeriphery: { [key: string]: THREE.Mesh };\n\n    private _scene: THREE.Scene;\n    private _sceneOld: THREE.Scene;\n    private _scenePeriphery: THREE.Scene;\n\n    constructor() {\n        this._planes = {};\n        this._planesOld = {};\n        this._planesPeriphery = {};\n\n        this._scene = new THREE.Scene();\n        this._sceneOld = new THREE.Scene();\n        this._scenePeriphery = new THREE.Scene();\n    }\n\n    public get planes(): { [key: string]: THREE.Mesh } {\n        return this._planes;\n    }\n\n    public get planesOld(): { [key: string]: THREE.Mesh } {\n        return this._planesOld;\n    }\n\n    public get planesPeriphery(): { [key: string]: THREE.Mesh } {\n        return this._planesPeriphery;\n    }\n\n    public get scene(): THREE.Scene {\n        return this._scene;\n    }\n\n    public get sceneOld(): THREE.Scene {\n        return this._sceneOld;\n    }\n\n    public get scenePeriphery(): THREE.Scene {\n        return this._scenePeriphery;\n    }\n\n    public updateImagePlanes(planes: { [key: string]: THREE.Mesh }): void {\n        this._dispose(this._planesOld, this.sceneOld);\n\n        for (const key in this._planes) {\n            if (!this._planes.hasOwnProperty(key)) {\n                continue;\n\n            }\n\n            const plane: THREE.Mesh = this._planes[key];\n            this._scene.remove(plane);\n            this._sceneOld.add(plane);\n        }\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._scene.add(planes[key]);\n        }\n\n        this._planesOld = this._planes;\n        this._planes = planes;\n    }\n\n    public addImagePlanes(planes: { [key: string]: THREE.Mesh }): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            this._scene.add(plane);\n            this._planes[key] = plane;\n        }\n    }\n\n    public addImagePlanesOld(planes: { [key: string]: THREE.Mesh }): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            this._sceneOld.add(plane);\n            this._planesOld[key] = plane;\n        }\n    }\n\n    public setImagePlanes(planes: { [key: string]: THREE.Mesh }): void {\n        this._clear();\n        this.addImagePlanes(planes);\n    }\n\n    public addPeripheryPlanes(planes: { [key: string]: THREE.Mesh }): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            this._scenePeriphery.add(plane);\n            this._planesPeriphery[key] = plane;\n        }\n    }\n\n    public setPeripheryPlanes(planes: { [key: string]: THREE.Mesh }): void {\n        this._clearPeriphery();\n        this.addPeripheryPlanes(planes);\n    }\n\n    public setImagePlanesOld(planes: { [key: string]: THREE.Mesh }): void {\n        this._clearOld();\n        this.addImagePlanesOld(planes);\n    }\n\n    public clear(): void {\n        this._clear();\n        this._clearOld();\n    }\n\n    private _clear(): void {\n        this._dispose(this._planes, this._scene);\n        this._planes = {};\n    }\n\n    private _clearOld(): void {\n        this._dispose(this._planesOld, this._sceneOld);\n        this._planesOld = {};\n    }\n\n    private _clearPeriphery(): void {\n        this._dispose(this._planesPeriphery, this._scenePeriphery);\n        this._planesPeriphery = {};\n    }\n\n    private _dispose(planes: { [key: string]: THREE.Mesh }, scene: THREE.Scene): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            scene.remove(plane);\n            plane.geometry.dispose();\n            (<THREE.Material>plane.material).dispose();\n            let texture: THREE.Texture = (<IShaderMaterial>plane.material).uniforms.projectorTex.value;\n            if (texture != null) {\n                texture.dispose();\n            }\n        }\n    }\n}\n\nexport default MeshScene;\n",
     "import {\n    concat as observableConcat,\n    merge as observableMerge,\n    of as observableOf,\n    Observable,\n} from \"rxjs\";\n\nimport {\n    map,\n    filter,\n    pairwise,\n    startWith,\n    switchMap,\n    takeWhile,\n} from \"rxjs/operators\";\n\nimport {MouseService} from \"../../Viewer\";\n\nexport class MouseOperator {\n    public static filteredPairwiseMouseDrag$(\n        name: string,\n        mouseService: MouseService): Observable<[MouseEvent, MouseEvent]> {\n\n        return mouseService\n            .filtered$(name, mouseService.mouseDragStart$).pipe(\n            switchMap(\n                (mouseDragStart: MouseEvent): Observable<MouseEvent> => {\n                    const mouseDragging$: Observable<MouseEvent> = observableConcat(\n                        observableOf(mouseDragStart),\n                        mouseService\n                            .filtered$(name, mouseService.mouseDrag$));\n\n                    const mouseDragEnd$: Observable<MouseEvent> = mouseService\n                        .filtered$(name, mouseService.mouseDragEnd$).pipe(\n                        map(\n                            (): MouseEvent => {\n                                return null;\n                            }));\n\n                    return observableMerge(mouseDragging$, mouseDragEnd$).pipe(\n                        takeWhile(\n                            (e: MouseEvent): boolean => {\n                                return !!e;\n                            }),\n                        startWith(null));\n                }),\n            pairwise(),\n            filter(\n                (pair: [MouseEvent, MouseEvent]): boolean => {\n                    return pair[0] != null && pair[1] != null;\n                }));\n    }\n}\n\nexport default MouseOperator;\n",
-    "import {combineLatest as observableCombineLatest, Observable, Subject, Subscription} from \"rxjs\";\n\nimport {withLatestFrom, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport class ZoomComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"zoom\";\n\n    private _viewportCoords: ViewportCoords;\n\n    private _zoomDelta$: Subject<number>;\n\n    private _renderSubscription: Subscription;\n    private _zoomSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._viewportCoords = new ViewportCoords();\n\n        this._zoomDelta$ = new Subject<number>();\n    }\n\n    protected _activate(): void {\n        this._renderSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                this._navigator.stateService.state$).pipe(\n            map(\n                ([frame, state]: [IFrame, State]): [number, State] => {\n                    return [frame.state.zoom, state];\n                }),\n            map(\n                ([zoom, state]: [number, State]): IVNodeHash => {\n                    const zoomInIcon: vd.VNode = vd.h(\"div.ZoomInIcon\", []);\n                    const zoomInButton: vd.VNode = zoom >= 3 || state === State.Waiting ?\n                        vd.h(\"div.ZoomInButtonDisabled\", [zoomInIcon]) :\n                        vd.h(\"div.ZoomInButton\", { onclick: (): void => { this._zoomDelta$.next(1); } }, [zoomInIcon]);\n\n                    const zoomOutIcon: vd.VNode = vd.h(\"div.ZoomOutIcon\", []);\n                    const zoomOutButton: vd.VNode = zoom <= 0 || state === State.Waiting ?\n                        vd.h(\"div.ZoomOutButtonDisabled\", [zoomOutIcon]) :\n                        vd.h(\"div.ZoomOutButton\", { onclick: (): void => { this._zoomDelta$.next(-1); } }, [zoomOutIcon]);\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.ZoomContainer\",\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [zoomInButton, zoomOutButton]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._zoomSubscription = this._zoomDelta$.pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$))\n            .subscribe(\n                ([zoomDelta, render, transform]: [number, RenderCamera, Transform]): void => {\n                    const unprojected: THREE.Vector3 = this._viewportCoords.unprojectFromViewport(0, 0, render.perspective);\n                    const reference: number[] = transform.projectBasic(unprojected.toArray());\n\n                    this._navigator.stateService.zoomIn(zoomDelta, reference);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._zoomSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n}\n\nComponentService.register(ZoomComponent);\nexport default ZoomComponent;\n",
+    "import {combineLatest as observableCombineLatest, Subject, Subscription} from \"rxjs\";\n\nimport {withLatestFrom, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    ComponentService,\n    Component,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport IZoomConfiguration from \"../interfaces/IZoomConfiguration\";\nimport ISize from \"../../render/interfaces/ISize\";\nimport ComponentSize from \"../utils/ComponentSize\";\n\n/**\n * @class ZoomComponent\n *\n * @classdesc Component rendering UI elements used for zooming.\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * var zoomComponent = viewer.getComponent(\"zoom\");\n * zoomComponent.configure({ size: Mapillary.ComponentSize.Small });\n * ```\n */\nexport class ZoomComponent extends Component<IZoomConfiguration> {\n    public static componentName: string = \"zoom\";\n\n    private _viewportCoords: ViewportCoords;\n\n    private _zoomDelta$: Subject<number>;\n\n    private _renderSubscription: Subscription;\n    private _zoomSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._viewportCoords = new ViewportCoords();\n\n        this._zoomDelta$ = new Subject<number>();\n    }\n\n    protected _activate(): void {\n        this._renderSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                this._navigator.stateService.state$,\n                this._configuration$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([frame, state, configuration, size]: [IFrame, State, IZoomConfiguration, ISize]): IVNodeHash => {\n                    const zoom: number = frame.state.zoom;\n\n                    const zoomInIcon: vd.VNode = vd.h(\"div.ZoomInIcon\", []);\n                    const zoomInButton: vd.VNode = zoom >= 3 || state === State.Waiting ?\n                        vd.h(\"div.ZoomInButtonDisabled\", [zoomInIcon]) :\n                        vd.h(\"div.ZoomInButton\", { onclick: (): void => { this._zoomDelta$.next(1); } }, [zoomInIcon]);\n\n                    const zoomOutIcon: vd.VNode = vd.h(\"div.ZoomOutIcon\", []);\n                    const zoomOutButton: vd.VNode = zoom <= 0 || state === State.Waiting ?\n                        vd.h(\"div.ZoomOutButtonDisabled\", [zoomOutIcon]) :\n                        vd.h(\"div.ZoomOutButton\", { onclick: (): void => { this._zoomDelta$.next(-1); } }, [zoomOutIcon]);\n\n                    const compact: string = configuration.size === ComponentSize.Small ||\n                        configuration.size === ComponentSize.Automatic && size.width < 640 ?\n                        \".ZoomCompact\" : \"\";\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.ZoomContainer\" + compact,\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [zoomInButton, zoomOutButton]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._zoomSubscription = this._zoomDelta$.pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$))\n            .subscribe(\n                ([zoomDelta, render, transform]: [number, RenderCamera, Transform]): void => {\n                    const unprojected: THREE.Vector3 = this._viewportCoords.unprojectFromViewport(0, 0, render.perspective);\n                    const reference: number[] = transform.projectBasic(unprojected.toArray());\n\n                    this._navigator.stateService.zoomIn(zoomDelta, reference);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._zoomSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IZoomConfiguration {\n        return { size: ComponentSize.Automatic };\n    }\n}\n\nComponentService.register(ZoomComponent);\nexport default ZoomComponent;\n",
     "import {MapillaryError} from \"./MapillaryError\";\n\n/**\n * @class AbortMapillaryError\n *\n * @classdesc Error thrown when a move to request has been\n * aborted before completing because of a subsequent request.\n */\nexport class AbortMapillaryError extends MapillaryError {\n    constructor (message?: string) {\n        super(message != null ? message : \"The request was aborted.\");\n\n        Object.setPrototypeOf(this, AbortMapillaryError.prototype);\n\n        this.name = \"AbortMapillaryError\";\n    }\n}\n\nexport default AbortMapillaryError;\n",
     "import {MapillaryError} from \"./MapillaryError\";\n\nexport class ArgumentMapillaryError extends MapillaryError {\n    constructor (message?: string) {\n        super(message != null ? message : \"The argument is not valid.\");\n\n        Object.setPrototypeOf(this, ArgumentMapillaryError.prototype);\n\n        this.name = \"ArgumentMapillaryError\";\n    }\n}\n\nexport default ArgumentMapillaryError;\n",
     "import {MapillaryError} from \"./MapillaryError\";\n\nexport class GraphMapillaryError extends MapillaryError {\n    constructor (message: string) {\n        super(message);\n\n        Object.setPrototypeOf(this, GraphMapillaryError.prototype);\n\n        this.name = \"GraphMapillaryError\";\n    }\n}\n\nexport default GraphMapillaryError;\n",
     "export class MapillaryError extends Error {\n    constructor (message?: string) {\n        super(message);\n\n        Object.setPrototypeOf(this, MapillaryError.prototype);\n\n        this.name = \"MapillaryError\";\n    }\n}\n\nexport default MapillaryError;\n",
     "import * as THREE from \"three\";\n\nimport {Transform} from \"../Geo\";\n\n/**\n * @class Camera\n *\n * @classdesc Holds information about a camera.\n */\nexport class Camera {\n    private _position: THREE.Vector3;\n    private _lookat: THREE.Vector3;\n    private _up: THREE.Vector3;\n    private _focal: number;\n\n    /**\n     * Create a new camera instance.\n     * @param {Transform} [transform] - Optional transform instance.\n     */\n    constructor(transform?: Transform) {\n        if (transform != null) {\n            this._position = new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0));\n            this._lookat = new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10));\n            this._up = transform.upVector();\n            this._focal = this._getFocal(transform);\n        } else {\n            this._position = new THREE.Vector3(0, 0, 0);\n            this._lookat = new THREE.Vector3(0, 0, 1);\n            this._up = new THREE.Vector3(0, -1, 0);\n            this._focal = 1;\n        }\n    }\n\n   /**\n    * Get position.\n    * @returns {THREE.Vector3} The position vector.\n    */\n    public get position(): THREE.Vector3 {\n        return this._position;\n    }\n\n   /**\n    * Get lookat.\n    * @returns {THREE.Vector3} The lookat vector.\n    */\n    public get lookat(): THREE.Vector3 {\n        return this._lookat;\n    }\n\n   /**\n    * Get up.\n    * @returns {THREE.Vector3} The up vector.\n    */\n    public get up(): THREE.Vector3 {\n        return this._up;\n    }\n\n   /**\n    * Get focal.\n    * @returns {number} The focal length.\n    */\n    public get focal(): number {\n        return this._focal;\n    }\n\n   /**\n    * Set focal.\n    */\n    public set focal(value: number) {\n        this._focal = value;\n    }\n\n    /**\n     * Update this camera to the linearly interpolated value of two other cameras.\n     *\n     * @param {Camera} a - First camera.\n     * @param {Camera} b - Second camera.\n     * @param {number} alpha - Interpolation value on the interval [0, 1].\n     */\n    public lerpCameras(a: Camera, b: Camera, alpha: number): void {\n      this._position.subVectors(b.position, a.position).multiplyScalar(alpha).add(a.position);\n      this._lookat.subVectors(b.lookat, a.lookat).multiplyScalar(alpha).add(a.lookat);\n      this._up.subVectors(b.up, a.up).multiplyScalar(alpha).add(a.up);\n      this._focal = (1 - alpha) * a.focal + alpha * b.focal;\n    }\n\n    /**\n     * Copy the properties of another camera to this camera.\n     *\n     * @param {Camera} other - Another camera.\n     */\n    public copy(other: Camera): void {\n        this._position.copy(other.position);\n        this._lookat.copy(other.lookat);\n        this._up.copy(other.up);\n        this._focal = other.focal;\n    }\n\n    /**\n     * Clone this camera.\n     *\n     * @returns {Camera} A camera with cloned properties equal to this camera.\n     */\n    public clone(): Camera {\n        let camera: Camera = new Camera();\n\n        camera.position.copy(this._position);\n        camera.lookat.copy(this._lookat);\n        camera.up.copy(this._up);\n        camera.focal = this._focal;\n\n        return camera;\n    }\n\n    /**\n     * Determine the distance between this camera and another camera.\n     *\n     * @param {Camera} other - Another camera.\n     * @returns {number} The distance between the cameras.\n     */\n    public diff(other: Camera): number {\n        let pd: number = this._position.distanceToSquared(other.position);\n        let ld: number = this._lookat.distanceToSquared(other.lookat);\n        let ud: number = this._up.distanceToSquared(other.up);\n        let fd: number = 100 * Math.abs(this._focal - other.focal);\n\n        return Math.max(pd, ld, ud, fd);\n    }\n\n    /**\n     * Get the focal length based on the transform.\n     *\n     * @description Returns the focal length of the transform if gpano info is not available.\n     * Returns a focal length corresponding to a vertical fov clamped to [45, 90] degrees based on\n     * the gpano information if available.\n     *\n     * @returns {number} Focal length.\n     */\n    private _getFocal(transform: Transform): number {\n        if (transform.gpano == null) {\n            return transform.focal;\n        }\n\n        let vFov: number = Math.PI * transform.gpano.CroppedAreaImageHeightPixels / transform.gpano.FullPanoHeightPixels;\n        let focal: number = 0.5 / Math.tan(vFov / 2);\n\n        return Math.min(1 / (2 * (Math.sqrt(2) - 1)), Math.max(0.5, focal));\n    }\n}\n",
-    "import * as THREE from \"three\";\n\nimport {\n    GeoCoords,\n    ILatLonAlt,\n    Spatial,\n} from \"../Geo\";\n\nconst geoCoords: GeoCoords = new GeoCoords();\nconst spatial: Spatial = new Spatial();\n\nexport function computeTranslation(position: ILatLonAlt, rotation: number[], reference: ILatLonAlt): number[] {\n    const C: number[] = geoCoords.geodeticToEnu(\n        position.lat,\n        position.lon,\n        position.alt,\n        reference.lat,\n        reference.lon,\n        reference.alt);\n\n    const RC: THREE.Vector3 = spatial.rotate(C, rotation);\n    const translation: number[] = [-RC.x, -RC.y, -RC.z];\n\n    return translation;\n}\n",
+    "import * as THREE from \"three\";\n\nimport {\n    GeoCoords,\n    ILatLonAlt,\n    Spatial,\n    Transform,\n} from \"../Geo\";\nimport ViewportCoords from \"./ViewportCoords\";\n\nconst geoCoords: GeoCoords = new GeoCoords();\nconst spatial: Spatial = new Spatial();\n\nexport function computeTranslation(position: ILatLonAlt, rotation: number[], reference: ILatLonAlt): number[] {\n    const C: number[] = geoCoords.geodeticToEnu(\n        position.lat,\n        position.lon,\n        position.alt,\n        reference.lat,\n        reference.lon,\n        reference.alt);\n\n    const RC: THREE.Vector3 = spatial.rotate(C, rotation);\n    const translation: number[] = [-RC.x, -RC.y, -RC.z];\n\n    return translation;\n}\n\nexport function computeProjectedPoints(\n    transform: Transform,\n    basicVertices: number[][],\n    basicDirections: number[][],\n    pointsPerLine: number,\n    viewportCoords: ViewportCoords): number[][] {\n\n    const basicPoints: number[][] = [];\n\n    for (let side: number = 0; side < basicVertices.length; ++side) {\n        const v: number[] = basicVertices[side];\n        const d: number[] = basicDirections[side];\n\n        for (let i: number = 0; i <= pointsPerLine; ++i) {\n            basicPoints.push([v[0] + d[0] * i / pointsPerLine,\n                            v[1] + d[1] * i / pointsPerLine]);\n        }\n    }\n\n    const camera: THREE.Camera = new THREE.Camera();\n    camera.up.copy(transform.upVector());\n    camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));\n    camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));\n    camera.updateMatrix();\n    camera.updateMatrixWorld(true);\n\n    const projectedPoints: number[][] = basicPoints\n        .map(\n            (basicPoint: number[]): number[] => {\n                const worldPoint: number[] = transform.unprojectBasic(basicPoint, 10000);\n                const cameraPoint: number[] = viewportCoords.worldToCamera(worldPoint, camera);\n\n                return [\n                    Math.abs(cameraPoint[0] / cameraPoint[2]),\n                    Math.abs(cameraPoint[1] / cameraPoint[2]),\n                ];\n            });\n\n    return projectedPoints;\n}\n",
     "/**\n * @class GeoCoords\n *\n * @classdesc Converts coordinates between the geodetic (WGS84),\n * Earth-Centered, Earth-Fixed (ECEF) and local topocentric\n * East, North, Up (ENU) reference frames.\n *\n * The WGS84 has latitude (degrees), longitude (degrees) and\n * altitude (meters) values.\n *\n * The ECEF Z-axis pierces the north pole and the\n * XY-axis defines the equatorial plane. The X-axis extends\n * from the geocenter to the intersection of the Equator and\n * the Greenwich Meridian. All values in meters.\n *\n * The WGS84 parameters are:\n *\n * a = 6378137\n * b = a * (1 - f)\n * f = 1 / 298.257223563\n * e = Math.sqrt((a^2 - b^2) / a^2)\n * e' = Math.sqrt((a^2 - b^2) / b^2)\n *\n * The WGS84 to ECEF conversion is performed using the following:\n *\n * X = (N - h) * cos(phi) * cos(lambda)\n * Y = (N + h) * cos(phi) * sin(lambda)\n * Z = (b^2 * N / a^2 + h) * sin(phi)\n *\n * where\n *\n * phi = latitude\n * lambda = longitude\n * h = height above ellipsoid (altitude)\n * N = Radius of curvature (meters)\n *   = a / Math.sqrt(1 - e^2 * sin(phi)^2)\n *\n * The ECEF to WGS84 conversion is performed using the following:\n *\n * phi = arctan((Z + e'^2 * b * sin(theta)^3) / (p - e^2 * a * cos(theta)^3))\n * lambda = arctan(Y / X)\n * h = p / cos(phi) - N\n *\n * where\n *\n * p = Math.sqrt(X^2 + Y^2)\n * theta = arctan(Z * a / p * b)\n *\n * In the ENU reference frame the x-axis points to the\n * East, the y-axis to the North and the z-axis Up. All values\n * in meters.\n *\n * The ECEF to ENU conversion is performed using the following:\n *\n * | x |   |       -sin(lambda_r)                cos(lambda_r)             0      | | X - X_r |\n * | y | = | -sin(phi_r) * cos(lambda_r)  -sin(phi_r) * sin(lambda_r)  cos(phi_r) | | Y - Y_r |\n * | z |   |  cos(phi_r) * cos(lambda_r)   cos(phi_r) * sin(lambda_r)  sin(phi_r) | | Z - Z_r |\n *\n * where\n *\n * phi_r = latitude of reference\n * lambda_r = longitude of reference\n * X_r, Y_r, Z_r = ECEF coordinates of reference\n *\n * The ENU to ECEF conversion is performed by solving the above equation for X, Y, Z.\n *\n * WGS84 to ENU and ENU to WGS84 are two step conversions with ECEF calculated in\n * the first step for both conversions.\n */\nexport class GeoCoords {\n    private _wgs84a: number = 6378137.0;\n    private _wgs84b: number = 6356752.31424518;\n\n    /**\n     * Convert coordinates from geodetic (WGS84) reference to local topocentric\n     * (ENU) reference.\n     *\n     * @param {number} lat Latitude in degrees.\n     * @param {number} lon Longitude in degrees.\n     * @param {number} alt Altitude in meters.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The x, y, z local topocentric ENU coordinates.\n     */\n    public geodeticToEnu(\n        lat: number,\n        lon: number,\n        alt: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let ecef: number[] = this.geodeticToEcef(lat, lon, alt);\n\n        return this.ecefToEnu(ecef[0], ecef[1], ecef[2], refLat, refLon, refAlt);\n    }\n\n    /**\n     * Convert coordinates from local topocentric (ENU) reference to\n     * geodetic (WGS84) reference.\n     *\n     * @param {number} x Topocentric ENU coordinate in East direction.\n     * @param {number} y Topocentric ENU coordinate in North direction.\n     * @param {number} z Topocentric ENU coordinate in Up direction.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The latitude and longitude in degrees\n     *                          as well as altitude in meters.\n     */\n    public enuToGeodetic(\n        x: number,\n        y: number,\n        z: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let ecef: number[] = this.enuToEcef(x, y, z, refLat, refLon, refAlt);\n\n        return this.ecefToGeodetic(ecef[0], ecef[1], ecef[2]);\n    }\n\n    /**\n     * Convert coordinates from Earth-Centered, Earth-Fixed (ECEF) reference\n     * to local topocentric (ENU) reference.\n     *\n     * @param {number} X ECEF X-value.\n     * @param {number} Y ECEF Y-value.\n     * @param {number} Z ECEF Z-value.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The x, y, z topocentric ENU coordinates in East, North\n     * and Up directions respectively.\n     */\n    public ecefToEnu(\n        X: number,\n        Y: number,\n        Z: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let refEcef: number[] = this.geodeticToEcef(refLat, refLon, refAlt);\n\n        let V: number[] = [X - refEcef[0], Y - refEcef[1], Z - refEcef[2]];\n\n        refLat = refLat * Math.PI / 180.0;\n        refLon = refLon * Math.PI / 180.0;\n\n        let cosLat: number = Math.cos(refLat);\n        let sinLat: number = Math.sin(refLat);\n        let cosLon: number = Math.cos(refLon);\n        let sinLon: number = Math.sin(refLon);\n\n        let x: number = -sinLon * V[0] + cosLon * V[1];\n        let y: number = -sinLat * cosLon * V[0] - sinLat * sinLon * V[1] + cosLat * V[2];\n        let z: number = cosLat * cosLon * V[0] + cosLat * sinLon * V[1] + sinLat * V[2];\n\n        return [x, y, z];\n    }\n\n    /**\n     * Convert coordinates from local topocentric (ENU) reference\n     * to Earth-Centered, Earth-Fixed (ECEF) reference.\n     *\n     * @param {number} x Topocentric ENU coordinate in East direction.\n     * @param {number} y Topocentric ENU coordinate in North direction.\n     * @param {number} z Topocentric ENU coordinate in Up direction.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The X, Y, Z ECEF coordinates.\n     */\n    public enuToEcef(\n        x: number,\n        y: number,\n        z: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let refEcef: number[] = this.geodeticToEcef(refLat, refLon, refAlt);\n\n        refLat = refLat * Math.PI / 180.0;\n        refLon = refLon * Math.PI / 180.0;\n\n        let cosLat: number = Math.cos(refLat);\n        let sinLat: number = Math.sin(refLat);\n        let cosLon: number = Math.cos(refLon);\n        let sinLon: number = Math.sin(refLon);\n\n        let X: number = -sinLon * x - sinLat * cosLon * y + cosLat * cosLon * z + refEcef[0];\n        let Y: number = cosLon * x - sinLat * sinLon * y + cosLat * sinLon * z + refEcef[1];\n        let Z: number = cosLat * y + sinLat * z + refEcef[2];\n\n        return [X, Y, Z];\n    }\n\n    /**\n     * Convert coordinates from geodetic reference (WGS84) to Earth-Centered,\n     * Earth-Fixed (ECEF) reference.\n     *\n     * @param {number} lat Latitude in degrees.\n     * @param {number} lon Longitude in degrees.\n     * @param {number} alt Altitude in meters.\n     * @returns {Array<number>} The X, Y, Z ECEF coordinates.\n     */\n    public geodeticToEcef(lat: number, lon: number, alt: number): number[] {\n        let a: number = this._wgs84a;\n        let b: number = this._wgs84b;\n\n        lat = lat * Math.PI / 180.0;\n        lon = lon * Math.PI / 180.0;\n\n        let cosLat: number = Math.cos(lat);\n        let sinLat: number = Math.sin(lat);\n        let cosLon: number = Math.cos(lon);\n        let sinLon: number = Math.sin(lon);\n\n        let a2: number = a * a;\n        let b2: number = b * b;\n\n        let L: number = 1.0 / Math.sqrt(a2 * cosLat * cosLat + b2 * sinLat * sinLat);\n\n        let nhcl: number = (a2 * L + alt) * cosLat;\n\n        let X: number = nhcl * cosLon;\n        let Y: number = nhcl * sinLon;\n        let Z: number = (b2 * L + alt) * sinLat;\n\n        return [X, Y, Z];\n    }\n\n    /**\n     * Convert coordinates from Earth-Centered, Earth-Fixed (ECEF) reference\n     * to geodetic reference (WGS84).\n     *\n     * @param {number} X ECEF X-value.\n     * @param {number} Y ECEF Y-value.\n     * @param {number} Z ECEF Z-value.\n     * @returns {Array<number>} The latitude and longitude in degrees\n     *                          as well as altitude in meters.\n     */\n    public ecefToGeodetic(X: number, Y: number, Z: number): number[] {\n        let a: number = this._wgs84a;\n        let b: number = this._wgs84b;\n\n        let a2: number = a * a;\n        let b2: number = b * b;\n\n        let a2mb2: number = a2 - b2;\n\n        let ea: number = Math.sqrt(a2mb2 / a2);\n        let eb: number = Math.sqrt(a2mb2 / b2);\n\n        let p: number = Math.sqrt(X * X + Y * Y);\n        let theta: number = Math.atan2(Z * a, p * b);\n\n        let sinTheta: number = Math.sin(theta);\n        let cosTheta: number = Math.cos(theta);\n\n        let lon: number = Math.atan2(Y, X);\n        let lat: number =\n            Math.atan2(Z + eb * eb * b * sinTheta * sinTheta * sinTheta,\n                       p - ea * ea * a * cosTheta * cosTheta * cosTheta);\n\n        let sinLat: number = Math.sin(lat);\n        let cosLat: number = Math.cos(lat);\n\n        let N: number = a / Math.sqrt(1 - ea * ea * sinLat * sinLat);\n        let alt: number = p / cosLat - N;\n\n        return [lat * 180.0 / Math.PI, lon * 180.0 / Math.PI, alt];\n    }\n}\n\nexport default GeoCoords;\n",
     "export type Point = { x: number, y: number };\n\nexport type Segment = { p1: Point, p2: Point };\n\nfunction sign(n: number): number {\n    return n > 0 ? 1 : n < 0 ? -1 : 0;\n}\n\nfunction colinearPointOnSegment(p: Point, s: Segment): boolean {\n    return p.x <= Math.max(s.p1.x, s.p2.x) &&\n        p.x >= Math.min(s.p1.x, s.p2.x) &&\n        p.y >= Math.max(s.p1.y, s.p2.y) &&\n        p.y >= Math.min(s.p1.y, s.p2.y);\n}\n\nfunction parallel(s1: Segment, s2: Segment): boolean {\n    const ux: number = s1.p2.x - s1.p1.x;\n    const uy: number = s1.p2.y - s1.p1.y;\n    const vx: number = s2.p2.x - s2.p1.x;\n    const vy: number = s2.p2.y - s2.p1.y;\n\n    const cross: number = ux * vy - uy * vx;\n    const u2: number = ux * ux + uy * uy;\n    const v2: number = vx * vx + vy * vy;\n\n    const epsilon2: number = 1e-10;\n\n    return cross * cross < epsilon2 * u2 * v2;\n}\n\nfunction tripletOrientation(p1: Point, p2: Point, p3: Point): number {\n    const orientation: number =\n        (p2.y - p1.y) * (p3.x - p2.x) -\n        (p3.y - p2.y) * (p2.x - p1.x);\n\n    return sign(orientation);\n}\n\nexport function segmentsIntersect(s1: Segment, s2: Segment): boolean {\n    if (parallel(s1, s2)) {\n        return false;\n    }\n\n    const o1: number = tripletOrientation(s1.p1, s1.p2, s2.p1);\n    const o2: number = tripletOrientation(s1.p1, s1.p2, s2.p2);\n    const o3: number = tripletOrientation(s2.p1, s2.p2, s1.p1);\n    const o4: number = tripletOrientation(s2.p1, s2.p2, s1.p2);\n\n    if (o1 !== o2 && o3 !== o4) {\n        return true;\n    }\n\n    if (o1 === 0 && colinearPointOnSegment(s2.p1, s1)) {\n        return true;\n    }\n\n    if (o2 === 0 && colinearPointOnSegment(s2.p2, s1)) {\n        return true;\n    }\n\n    if (o3 === 0 && colinearPointOnSegment(s1.p1, s2)) {\n        return true;\n    }\n\n    if (o4 === 0 && colinearPointOnSegment(s1.p2, s2)) {\n        return true;\n    }\n\n    return false;\n}\n\nexport function segmentIntersection(s1: Segment, s2: Segment): Point {\n    if (parallel(s1, s2)) {\n        return undefined;\n    }\n\n    const x1: number = s1.p1.x;\n    const x2: number = s1.p2.x;\n    const y1: number = s1.p1.y;\n    const y2: number = s1.p2.y;\n\n    const x3: number = s2.p1.x;\n    const x4: number = s2.p2.x;\n    const y3: number = s2.p1.y;\n    const y4: number = s2.p2.y;\n\n    const den: number = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n    const xNum: number = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n    const yNum: number = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n\n    return { x: xNum / den, y: yNum / den };\n}\n",
-    "import * as THREE from \"three\";\n\n/**\n * @class Spatial\n *\n * @classdesc Provides methods for scalar, vector and matrix calculations.\n */\nexport class Spatial {\n    private _epsilon: number = 1e-9;\n\n    /**\n     * Converts azimuthal phi rotation (counter-clockwise with origin on X-axis) to\n     * bearing (clockwise with origin at north or Y-axis).\n     *\n     * @param {number} phi - Azimuthal phi angle in radians.\n     * @returns {number} Bearing in radians.\n     */\n    public azimuthalToBearing(phi: number): number {\n         return -phi + Math.PI / 2;\n    }\n\n    /**\n     * Converts degrees to radians.\n     *\n     * @param {number} deg - Degrees.\n     * @returns {number} Radians.\n     */\n    public degToRad(deg: number): number {\n        return Math.PI * deg / 180;\n    }\n\n    /**\n     * Converts radians to degrees.\n     *\n     * @param {number} rad - Radians.\n     * @returns {number} Degrees.\n     */\n    public radToDeg(rad: number): number {\n        return 180 * rad / Math.PI;\n    }\n\n    /**\n     * Creates a rotation matrix from an angle-axis vector.\n     *\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Matrix4} Rotation matrix.\n     */\n    public rotationMatrix(angleAxis: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 =\n            new THREE.Vector3(angleAxis[0], angleAxis[1], angleAxis[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        return new THREE.Matrix4().makeRotationAxis(axis, angle);\n    }\n\n    /**\n     * Rotates a vector according to a angle-axis rotation vector.\n     *\n     * @param {Array<number>} vector - Vector to rotate.\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Rotated vector.\n     */\n    public rotate(vector: number[], angleAxis: number[]): THREE.Vector3 {\n        let v: THREE.Vector3 = new THREE.Vector3(vector[0], vector[1], vector[2]);\n        let rotationMatrix: THREE.Matrix4 = this.rotationMatrix(angleAxis);\n        v.applyMatrix4(rotationMatrix);\n\n        return v;\n    }\n\n    /**\n     * Calculates the optical center from a rotation vector\n     * on the angle-axis representation and a translation vector\n     * according to C = -R^T t.\n     *\n     * @param {Array<number>} rotation - Angle-axis representation of a rotation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Vector3} Optical center.\n     */\n    public opticalCenter(rotation: number[], translation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n        let vector: number[] = [-translation[0], -translation[1], -translation[2]];\n\n        return this.rotate(vector, angleAxis);\n    }\n\n    /**\n     * Calculates the viewing direction from a rotation vector\n     * on the angle-axis representation.\n     *\n     * @param {number[]} rotation - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Viewing direction.\n     */\n    public viewingDirection(rotation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n\n        return this.rotate([0, 0, 1], angleAxis);\n    }\n\n    /**\n     * Wrap a number on the interval [min, max].\n     *\n     * @param {number} value - Value to wrap.\n     * @param {number} min - Lower endpoint of interval.\n     * @param {number} max - Upper endpoint of interval.\n     * @returns {number} The wrapped number.\n     */\n    public wrap(value: number, min: number, max: number): number {\n        if (max < min) {\n            throw new Error(\"Invalid arguments: max must be larger than min.\");\n        }\n\n        let interval: number = (max - min);\n\n        while (value > max || value < min) {\n            if (value > max) {\n                value = value - interval;\n            } else if (value < min) {\n                value = value + interval;\n            }\n        }\n\n        return value;\n    }\n\n    /**\n     * Wrap an angle on the interval [-Pi, Pi].\n     *\n     * @param {number} angle - Value to wrap.\n     * @returns {number} Wrapped angle.\n     */\n    public wrapAngle(angle: number): number {\n        return this.wrap(angle, -Math.PI, Math.PI);\n    }\n\n    /**\n     * Limit the value to the interval [min, max] by changing the value to\n     * the nearest available one when it is outside the interval.\n     *\n     * @param {number} value - Value to clamp.\n     * @param {number} min - Minimum of the interval.\n     * @param {number} max - Maximum of the interval.\n     * @returns {number} Clamped value.\n     */\n    public clamp(value: number, min: number, max: number): number {\n        if (value < min) {\n            return min;\n        }\n\n        if (value > max) {\n            return max;\n        }\n\n        return value;\n    }\n\n    /**\n     * Calculates the counter-clockwise angle from the first\n     * vector (x1, y1)^T to the second (x2, y2)^T.\n     *\n     * @param {number} x1 - X coordinate of first vector.\n     * @param {number} y1 - Y coordinate of first vector.\n     * @param {number} x2 - X coordinate of second vector.\n     * @param {number} y2 - Y coordinate of second vector.\n     * @returns {number} Counter clockwise angle between the vectors.\n     */\n    public angleBetweenVector2(x1: number, y1: number, x2: number, y2: number): number {\n        let angle: number = Math.atan2(y2, x2) - Math.atan2(y1, x1);\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the minimum (absolute) angle change for rotation\n     * from one angle to another on the [-Pi, Pi] interval.\n     *\n     * @param {number} angle1 - Start angle.\n     * @param {number} angle2 - Destination angle.\n     * @returns {number} Absolute angle change between angles.\n     */\n    public angleDifference(angle1: number, angle2: number): number {\n        let angle: number = angle2 - angle1;\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the relative rotation angle between two\n     * angle-axis vectors.\n     *\n     * @param {number} rotation1 - First angle-axis vector.\n     * @param {number} rotation2 - Second angle-axis vector.\n     * @returns {number} Relative rotation angle.\n     */\n    public relativeRotationAngle(rotation1: number[], rotation2: number[]): number {\n        let R1T: THREE.Matrix4 = this.rotationMatrix(\n            [-rotation1[0], -rotation1[1], -rotation1[2]]);\n        let R2: THREE.Matrix4 = this.rotationMatrix(rotation2);\n\n        let R: THREE.Matrix4 = R1T.multiply(R2);\n        let elements: Float32Array = R.elements;\n\n        // from Tr(R) = 1 + 2 * cos(theta)\n        let tr: number = elements[0] + elements[5] + elements[10];\n        let theta: number = Math.acos(Math.max(Math.min((tr - 1) / 2, 1), -1));\n\n        return theta;\n    }\n\n    /**\n     * Calculates the angle from a vector to a plane.\n     *\n     * @param {Array<number>} vector - The vector.\n     * @param {Array<number>} planeNormal - Normal of the plane.\n     * @returns {number} Angle from between plane and vector.\n     */\n    public angleToPlane(vector: number[], planeNormal: number[]): number {\n        let v: THREE.Vector3 = new THREE.Vector3().fromArray(vector);\n        let norm: number = v.length();\n\n        if (norm < this._epsilon) {\n            return 0;\n        }\n\n        let projection: number = v.dot(new THREE.Vector3().fromArray(planeNormal));\n\n        return Math.asin(projection / norm);\n    }\n\n    /**\n     * Calculates the distance between two coordinates\n     * (latitude longitude pairs) in meters according to\n     * the haversine formula.\n     *\n     * @param {number} lat1 - Latitude of the first coordinate in degrees.\n     * @param {number} lon1 - Longitude of the first coordinate in degrees.\n     * @param {number} lat2 - Latitude of the second coordinate in degrees.\n     * @param {number} lon2 - Longitude of the second coordinate in degrees.\n     * @returns {number} Distance between lat lon positions in meters.\n     */\n    public distanceFromLatLon(lat1: number, lon1: number, lat2: number, lon2: number): number {\n        let r: number = 6371000;\n        let dLat: number = this.degToRad(lat2 - lat1);\n        let dLon: number = this.degToRad(lon2 - lon1);\n\n        let hav: number =\n            Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n            Math.cos(this.degToRad(lat1)) * Math.cos(this.degToRad(lat2)) *\n            Math.sin(dLon / 2) * Math.sin(dLon / 2);\n\n        let d: number = 2 * r * Math.atan2(Math.sqrt(hav), Math.sqrt(1 - hav));\n\n        return d;\n    }\n}\n\nexport default Spatial;\n",
-    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../API\";\n\n/**\n * @class Transform\n *\n * @classdesc Class used for calculating coordinate transformations\n * and projections.\n */\nexport class Transform {\n    private _width: number;\n    private _height: number;\n    private _focal: number;\n    private _orientation: number;\n    private _scale: number;\n    private _basicWidth: number;\n    private _basicHeight: number;\n    private _basicAspect: number;\n\n    private _gpano: IGPano;\n\n    private _rt: THREE.Matrix4;\n    private _srt: THREE.Matrix4;\n\n    private _basicRt: THREE.Matrix4;\n\n    private _textureScale: number[];\n\n    private _ck1: number;\n    private _ck2: number;\n\n    private _radialPeak: number;\n\n    /**\n     * Create a new transform instance.\n     * @param {number} orientation - Image orientation.\n     * @param {number} width - Image height.\n     * @param {number} height - Image width.\n     * @param {number} focal - Focal length.\n     * @param {number} scale - Atomic scale.\n     * @param {IGPano} gpano - Panorama properties.\n     * @param {Array<number>} rotation - Rotation vector in three dimensions.\n     * @param {Array<number>} translation - Translation vector in three dimensions.\n     * @param {HTMLImageElement} image - Image for fallback size calculations.\n     */\n    constructor(\n        orientation: number,\n        width: number,\n        height: number,\n        focal: number,\n        scale: number,\n        gpano: IGPano,\n        rotation: number[],\n        translation: number[],\n        image: HTMLImageElement,\n        textureScale?: number[],\n        ck1?: number,\n        ck2?: number) {\n\n        this._orientation = this._getValue(orientation, 1);\n\n        let imageWidth: number = image != null ? image.width : 4;\n        let imageHeight: number = image != null ? image.height : 3;\n        let keepOrientation: boolean = this._orientation < 5;\n\n        this._width = this._getValue(width, keepOrientation ? imageWidth : imageHeight);\n        this._height = this._getValue(height, keepOrientation ? imageHeight : imageWidth);\n\n        this._basicAspect = keepOrientation ?\n             this._width / this._height :\n             this._height / this._width;\n\n        this._basicWidth = keepOrientation ? width : height;\n        this._basicHeight = keepOrientation ? height : width;\n\n        this._focal = this._getValue(focal, 1);\n        this._scale = this._getValue(scale, 0);\n\n        this._gpano = gpano != null ? gpano : null;\n\n        this._rt = this._getRt(rotation, translation);\n        this._srt = this._getSrt(this._rt, this._scale);\n\n        this._basicRt = this._getBasicRt(this._rt, orientation);\n\n        this._textureScale = !!textureScale ? textureScale : [1, 1];\n\n        this._ck1 = !!ck1 ? ck1 : 0;\n        this._ck2 = !!ck2 ? ck2 : 0;\n\n        this._radialPeak = this._getRadialPeak(this._ck1, this._ck2);\n    }\n\n    public get ck1(): number {\n        return this._ck1;\n    }\n\n    public get ck2(): number {\n        return this._ck2;\n    }\n\n    /**\n     * Get basic aspect.\n     * @returns {number} The orientation adjusted aspect ratio.\n     */\n    public get basicAspect(): number {\n        return this._basicAspect;\n    }\n\n    /**\n     * Get basic height.\n     *\n     * @description Does not fall back to node image height but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The height of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicHeight(): number {\n        return this._basicHeight;\n    }\n\n    public get basicRt(): THREE.Matrix4 {\n        return this._basicRt;\n    }\n\n    /**\n     * Get basic width.\n     *\n     * @description Does not fall back to node image width but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The width of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicWidth(): number {\n        return this._basicWidth;\n    }\n\n    /**\n     * Get focal.\n     * @returns {number} The node focal length.\n     */\n    public get focal(): number {\n        return this._focal;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._gpano != null &&\n            this._gpano.CroppedAreaLeftPixels === 0 &&\n            this._gpano.CroppedAreaTopPixels === 0 &&\n            this._gpano.CroppedAreaImageWidthPixels === this._gpano.FullPanoWidthPixels &&\n            this._gpano.CroppedAreaImageHeightPixels === this._gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     * @returns {number} The node gpano information.\n     */\n    public get gpano(): IGPano {\n        return this._gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @description Falls back to the node image height if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image height.\n     */\n    public get height(): number {\n        return this._height;\n    }\n\n    /**\n     * Get orientation.\n     * @returns {number} The image orientation.\n     */\n    public get orientation(): number {\n        return this._orientation;\n    }\n\n    /**\n     * Get rt.\n     * @returns {THREE.Matrix4} The extrinsic camera matrix.\n     */\n    public get rt(): THREE.Matrix4 {\n        return this._rt;\n    }\n\n    /**\n     * Get srt.\n     * @returns {THREE.Matrix4} The scaled extrinsic camera matrix.\n     */\n    public get srt(): THREE.Matrix4 {\n        return this._srt;\n    }\n\n    /**\n     * Get scale.\n     * @returns {number} The node atomic reconstruction scale.\n     */\n    public get scale(): number {\n        return this._scale;\n    }\n\n    /**\n     * Get has valid scale.\n     * @returns {boolean} Value indicating if the scale of the transform is valid.\n     */\n    public get hasValidScale(): boolean {\n        return this._scale > 1e-2 && this._scale < 50;\n    }\n\n    /**\n     * Get radial peak.\n     * @returns {number} Value indicating the radius where the radial\n     * undistortion function peaks.\n     */\n    public get radialPeak(): number {\n        return this._radialPeak;\n    }\n\n    /**\n     * Get width.\n     *\n     * @description Falls back to the node image width if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image width.\n     */\n    public get width(): number {\n        return this._width;\n    }\n\n    /**\n     * Calculate the up vector for the node transform.\n     *\n     * @returns {THREE.Vector3} Normalized and orientation adjusted up vector.\n     */\n    public upVector(): THREE.Vector3 {\n        let rte: Float32Array = this._rt.elements;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n            case 3:\n                return new THREE.Vector3(rte[1],  rte[5],  rte[9]);\n            case 6:\n                return new THREE.Vector3(-rte[0], -rte[4], -rte[8]);\n            case 8:\n                return new THREE.Vector3(rte[0],  rte[4],  rte[8]);\n            default:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n        }\n    }\n\n    /**\n     * Calculate projector matrix for projecting 3D points to texture map\n     * coordinates (u and v).\n     *\n     * @returns {THREE.Matrix4} Projection matrix for 3D point to texture\n     * map coordinate calculations.\n     */\n    public projectorMatrix(): THREE.Matrix4 {\n        let projector: THREE.Matrix4 = this._normalizedToTextureMatrix();\n\n        let f: number = this._focal;\n        let projection: THREE.Matrix4 = new THREE.Matrix4().set(\n            f, 0, 0, 0,\n            0, f, 0, 0,\n            0, 0, 0, 0,\n            0, 0, 1, 0);\n\n        projector.multiply(projection);\n        projector.multiply(this._rt);\n\n        return projector;\n    }\n\n    /**\n     * Project 3D world coordinates to basic coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D basic coordinates.\n     */\n    public projectBasic(point3d: number[]): number[] {\n        let sfm: number[] = this.projectSfM(point3d);\n        return this._sfmToBasic(sfm);\n    }\n\n    /**\n     * Unproject basic coordinates to 3D world coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectBasic(basic: number[], distance: number, depth?: boolean): number[] {\n        let sfm: number[] = this._basicToSfm(basic);\n        return this.unprojectSfM(sfm, distance, depth);\n    }\n\n    /**\n     * Project 3D world coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D SfM coordinates.\n     */\n    public projectSfM(point3d: number[]): number[] {\n        let v: THREE.Vector4 = new THREE.Vector4(point3d[0], point3d[1], point3d[2], 1);\n        v.applyMatrix4(this._rt);\n        return this._bearingToSfm([v.x, v.y, v.z]);\n    }\n\n    /**\n     * Unproject SfM coordinates to a 3D world coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectSfM(sfm: number[], distance: number, depth?: boolean): number[] {\n        let bearing: number[] = this._sfmToBearing(sfm);\n\n        const v: THREE.Vector4 = depth && !this.gpano ?\n            new THREE.Vector4(\n                distance * bearing[0] / bearing[2],\n                distance * bearing[1] / bearing[2],\n                distance,\n                1) :\n            new THREE.Vector4(\n                distance * bearing[0],\n                distance * bearing[1],\n                distance * bearing[2],\n                1);\n\n        v.applyMatrix4(new THREE.Matrix4().getInverse(this._rt));\n        return [v.x / v.w, v.y / v.w, v.z / v.w];\n    }\n\n    /**\n     * Transform SfM coordinates to bearing vector (3D cartesian\n     * coordinates on the unit sphere).\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} Bearing vector (3D cartesian coordinates\n     * on the unit sphere).\n     */\n    private _sfmToBearing(sfm: number[]): number[] {\n        if (this._fullPano()) {\n            let lon: number = sfm[0] * 2 * Math.PI;\n            let lat: number = -sfm[1] * 2 * Math.PI;\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else if (this._gpano) {\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            let fullPanoPixel: number[] = [\n                sfm[0] * size + this.gpano.CroppedAreaImageWidthPixels / 2 + this.gpano.CroppedAreaLeftPixels,\n                sfm[1] * size + this.gpano.CroppedAreaImageHeightPixels / 2 + this.gpano.CroppedAreaTopPixels,\n            ];\n            let lon: number = 2 * Math.PI * (fullPanoPixel[0] / this.gpano.FullPanoWidthPixels - 0.5);\n            let lat: number = - Math.PI * (fullPanoPixel[1] / this.gpano.FullPanoHeightPixels - 0.5);\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else {\n            let [dxn, dyn]: number[] = [sfm[0] / this._focal, sfm[1] / this._focal];\n            const rp: number = this._radialPeak;\n            const dr: number = Math.sqrt(dxn * dxn + dyn * dyn);\n            let d: number = 1.0;\n\n            for (let i: number = 0; i < 10; i++) {\n                let r: number = dr / d;\n\n                if (r > rp) {\n                    r = rp;\n                }\n\n                d = 1 + this._ck1 * r ** 2 + this._ck2 * r ** 4;\n            }\n\n            const xn: number = dxn / d;\n            const yn: number = dyn / d;\n\n            let v: THREE.Vector3 = new THREE.Vector3(xn, yn, 1);\n            v.normalize();\n            return [v.x, v.y, v.z];\n        }\n    }\n\n    /**\n     * Transform bearing vector (3D cartesian coordiantes on the unit sphere) to\n     * SfM coordinates.\n     *\n     * @param {Array<number>} bearing - Bearing vector (3D cartesian coordinates on the\n     * unit sphere).\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _bearingToSfm(bearing: number[]): number[] {\n        if (this._fullPano()) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            return [lon / (2 * Math.PI), -lat / (2 * Math.PI)];\n        } else if (this._gpano) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            let fullPanoPixel: number[] = [\n                (lon / (2 * Math.PI) + 0.5) * this.gpano.FullPanoWidthPixels,\n                (- lat / Math.PI + 0.5) * this.gpano.FullPanoHeightPixels,\n            ];\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            return [\n                (fullPanoPixel[0] - this.gpano.CroppedAreaLeftPixels - this.gpano.CroppedAreaImageWidthPixels / 2) / size,\n                (fullPanoPixel[1] - this.gpano.CroppedAreaTopPixels - this.gpano.CroppedAreaImageHeightPixels / 2) / size,\n            ];\n        } else {\n            if (bearing[2] > 0) {\n                let [xn, yn]: number[] = [bearing[0] / bearing[2], bearing[1] / bearing[2]];\n                let r2: number = xn * xn + yn * yn;\n                const rp2: number = this._radialPeak ** 2;\n\n                if (r2 > rp2) {\n                    r2 = rp2;\n                }\n\n                const d: number = 1 + this._ck1 * r2 + this._ck2 * r2 ** 2;\n                return [\n                    this._focal * d * xn,\n                    this._focal * d * yn,\n                ];\n            } else {\n                return [\n                    bearing[0] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                    bearing[1] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                ];\n            }\n        }\n    }\n\n    /**\n     * Convert basic coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _basicToSfm(basic: number[]): number[] {\n        let rotatedX: number;\n        let rotatedY: number;\n\n        switch (this._orientation) {\n            case 1:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n            case 3:\n                rotatedX = 1 - basic[0];\n                rotatedY = 1 - basic[1];\n                break;\n            case 6:\n                rotatedX = basic[1];\n                rotatedY = 1 - basic[0];\n                break;\n            case 8:\n                rotatedX = 1 - basic[1];\n                rotatedY = basic[0];\n                break;\n            default:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n        }\n\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let sfmX: number = rotatedX * w / s - w / s / 2;\n        let sfmY: number = rotatedY * h / s - h / s / 2;\n\n        return [sfmX, sfmY];\n    }\n\n    /**\n     * Convert SfM coordinates to basic coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    private _sfmToBasic(sfm: number[]): number[] {\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let rotatedX: number = (sfm[0] + w / s / 2) / w * s;\n        let rotatedY: number = (sfm[1] + h / s / 2) / h * s;\n\n        let basicX: number;\n        let basicY: number;\n\n        switch (this._orientation) {\n            case 1:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n            case 3:\n                basicX = 1 - rotatedX;\n                basicY = 1 - rotatedY;\n                break;\n            case 6:\n                basicX = 1 - rotatedY;\n                basicY = rotatedX;\n                break;\n            case 8:\n                basicX = rotatedY;\n                basicY = 1 - rotatedX;\n                break;\n            default:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n        }\n\n        return [basicX, basicY];\n    }\n\n    /**\n     * Determines if the gpano information indicates a full panorama.\n     *\n     * @returns {boolean} Value determining if the gpano information indicates\n     * a full panorama.\n     */\n    private _fullPano(): boolean {\n        return this.gpano != null &&\n            this.gpano.CroppedAreaLeftPixels === 0 &&\n            this.gpano.CroppedAreaTopPixels === 0 &&\n            this.gpano.CroppedAreaImageWidthPixels === this.gpano.FullPanoWidthPixels &&\n            this.gpano.CroppedAreaImageHeightPixels === this.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Checks a value and returns it if it exists and is larger than 0.\n     * Fallbacks if it is null.\n     *\n     * @param {number} value - Value to check.\n     * @param {number} fallback - Value to fall back to.\n     * @returns {number} The value or its fallback value if it is not defined or negative.\n     */\n    private _getValue(value: number, fallback: number): number {\n        return value != null && value > 0 ? value : fallback;\n    }\n\n    /**\n     * Creates the extrinsic camera matrix [ R | t ].\n     *\n     * @param {Array<number>} rotation - Rotation vector in angle axis representation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Matrix4} Extrisic camera matrix.\n     */\n    private _getRt(rotation: number[], translation: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 = new THREE.Vector3(rotation[0], rotation[1], rotation[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        let rt: THREE.Matrix4 = new THREE.Matrix4();\n        rt.makeRotationAxis(axis, angle);\n        rt.setPosition(\n            new THREE.Vector3(\n                translation[0],\n                translation[1],\n                translation[2]));\n\n        return rt;\n    }\n\n    /**\n     * Calculates the scaled extrinsic camera matrix scale * [ R | t ].\n     *\n     * @param {THREE.Matrix4} rt - Extrisic camera matrix.\n     * @param {number} scale - Scale factor.\n     * @returns {THREE.Matrix4} Scaled extrisic camera matrix.\n     */\n    private _getSrt(rt: THREE.Matrix4, scale: number): THREE.Matrix4 {\n        let srt: THREE.Matrix4 = rt.clone();\n        let elements: Float32Array = srt.elements;\n\n        elements[12] = scale * elements[12];\n        elements[13] = scale * elements[13];\n        elements[14] = scale * elements[14];\n\n        srt.scale(new THREE.Vector3(scale, scale, scale));\n\n        return srt;\n    }\n\n    private _getBasicRt(rt: THREE.Matrix4, orientation: number): THREE.Matrix4 {\n        const axis: THREE.Vector3 = new THREE.Vector3(0, 0, 1);\n        let angle: number = 0;\n\n        switch (orientation) {\n            case 3:\n                angle = Math.PI;\n                break;\n            case 6:\n                angle = Math.PI / 2;\n                break;\n            case 8:\n                angle = 3 * Math.PI / 2;\n                break;\n            default:\n                break;\n        }\n\n        return new THREE.Matrix4()\n            .makeRotationAxis(axis, angle)\n            .multiply(rt);\n    }\n\n    private _getRadialPeak(k1: number, k2: number): number {\n        const a: number = 5 * k2;\n        const b: number = 3 * k1;\n        const c: number = 1;\n        const d: number = b ** 2 - 4 * a * c;\n\n        if (d < 0) {\n            return undefined;\n        }\n\n        const root1: number = (-b - Math.sqrt(d)) / 2 / a;\n        const root2: number = (-b + Math.sqrt(d)) / 2 / a;\n\n        const minRoot: number = Math.min(root1, root2);\n        const maxRoot: number = Math.max(root1, root2);\n\n        return minRoot > 0 ?\n            Math.sqrt(minRoot) :\n            maxRoot > 0 ?\n                Math.sqrt(maxRoot) :\n                undefined;\n    }\n\n    /**\n     * Calculate a transformation matrix from normalized coordinates for\n     * texture map coordinates.\n     *\n     * @returns {THREE.Matrix4} Normalized coordinates to texture map\n     * coordinates transformation matrix.\n     */\n    private _normalizedToTextureMatrix(): THREE.Matrix4 {\n        const size: number = Math.max(this._width, this._height);\n\n        const scaleX: number = this._orientation < 5 ? this._textureScale[0] : this._textureScale[1];\n        const scaleY: number = this._orientation < 5 ? this._textureScale[1] : this._textureScale[0];\n\n        const w: number = size / this._width * scaleX;\n        const h: number = size / this._height * scaleY;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 3:\n                return new THREE.Matrix4().set(-w, 0, 0, 0.5, 0, h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 6:\n                return new THREE.Matrix4().set(0, -h, 0, 0.5, -w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 8:\n                return new THREE.Matrix4().set(0, h, 0, 0.5, w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            default:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n        }\n    }\n}\n",
+    "import * as THREE from \"three\";\n\n/**\n * @class Spatial\n *\n * @classdesc Provides methods for scalar, vector and matrix calculations.\n */\nexport class Spatial {\n    private _epsilon: number = 1e-9;\n\n    /**\n     * Converts azimuthal phi rotation (counter-clockwise with origin on X-axis) to\n     * bearing (clockwise with origin at north or Y-axis).\n     *\n     * @param {number} phi - Azimuthal phi angle in radians.\n     * @returns {number} Bearing in radians.\n     */\n    public azimuthalToBearing(phi: number): number {\n         return -phi + Math.PI / 2;\n    }\n\n    /**\n     * Converts degrees to radians.\n     *\n     * @param {number} deg - Degrees.\n     * @returns {number} Radians.\n     */\n    public degToRad(deg: number): number {\n        return Math.PI * deg / 180;\n    }\n\n    /**\n     * Converts radians to degrees.\n     *\n     * @param {number} rad - Radians.\n     * @returns {number} Degrees.\n     */\n    public radToDeg(rad: number): number {\n        return 180 * rad / Math.PI;\n    }\n\n    /**\n     * Creates a rotation matrix from an angle-axis vector.\n     *\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Matrix4} Rotation matrix.\n     */\n    public rotationMatrix(angleAxis: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 =\n            new THREE.Vector3(angleAxis[0], angleAxis[1], angleAxis[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        return new THREE.Matrix4().makeRotationAxis(axis, angle);\n    }\n\n    /**\n     * Rotates a vector according to a angle-axis rotation vector.\n     *\n     * @param {Array<number>} vector - Vector to rotate.\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Rotated vector.\n     */\n    public rotate(vector: number[], angleAxis: number[]): THREE.Vector3 {\n        let v: THREE.Vector3 = new THREE.Vector3(vector[0], vector[1], vector[2]);\n        let rotationMatrix: THREE.Matrix4 = this.rotationMatrix(angleAxis);\n        v.applyMatrix4(rotationMatrix);\n\n        return v;\n    }\n\n    /**\n     * Calculates the optical center from a rotation vector\n     * on the angle-axis representation and a translation vector\n     * according to C = -R^T t.\n     *\n     * @param {Array<number>} rotation - Angle-axis representation of a rotation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Vector3} Optical center.\n     */\n    public opticalCenter(rotation: number[], translation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n        let vector: number[] = [-translation[0], -translation[1], -translation[2]];\n\n        return this.rotate(vector, angleAxis);\n    }\n\n    /**\n     * Calculates the viewing direction from a rotation vector\n     * on the angle-axis representation.\n     *\n     * @param {number[]} rotation - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Viewing direction.\n     */\n    public viewingDirection(rotation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n\n        return this.rotate([0, 0, 1], angleAxis);\n    }\n\n    /**\n     * Wrap a number on the interval [min, max].\n     *\n     * @param {number} value - Value to wrap.\n     * @param {number} min - Lower endpoint of interval.\n     * @param {number} max - Upper endpoint of interval.\n     * @returns {number} The wrapped number.\n     */\n    public wrap(value: number, min: number, max: number): number {\n        if (max < min) {\n            throw new Error(\"Invalid arguments: max must be larger than min.\");\n        }\n\n        let interval: number = (max - min);\n\n        while (value > max || value < min) {\n            if (value > max) {\n                value = value - interval;\n            } else if (value < min) {\n                value = value + interval;\n            }\n        }\n\n        return value;\n    }\n\n    /**\n     * Wrap an angle on the interval [-Pi, Pi].\n     *\n     * @param {number} angle - Value to wrap.\n     * @returns {number} Wrapped angle.\n     */\n    public wrapAngle(angle: number): number {\n        return this.wrap(angle, -Math.PI, Math.PI);\n    }\n\n    /**\n     * Limit the value to the interval [min, max] by changing the value to\n     * the nearest available one when it is outside the interval.\n     *\n     * @param {number} value - Value to clamp.\n     * @param {number} min - Minimum of the interval.\n     * @param {number} max - Maximum of the interval.\n     * @returns {number} Clamped value.\n     */\n    public clamp(value: number, min: number, max: number): number {\n        if (value < min) {\n            return min;\n        }\n\n        if (value > max) {\n            return max;\n        }\n\n        return value;\n    }\n\n    /**\n     * Calculates the counter-clockwise angle from the first\n     * vector (x1, y1)^T to the second (x2, y2)^T.\n     *\n     * @param {number} x1 - X coordinate of first vector.\n     * @param {number} y1 - Y coordinate of first vector.\n     * @param {number} x2 - X coordinate of second vector.\n     * @param {number} y2 - Y coordinate of second vector.\n     * @returns {number} Counter clockwise angle between the vectors.\n     */\n    public angleBetweenVector2(x1: number, y1: number, x2: number, y2: number): number {\n        let angle: number = Math.atan2(y2, x2) - Math.atan2(y1, x1);\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the minimum (absolute) angle change for rotation\n     * from one angle to another on the [-Pi, Pi] interval.\n     *\n     * @param {number} angle1 - Start angle.\n     * @param {number} angle2 - Destination angle.\n     * @returns {number} Absolute angle change between angles.\n     */\n    public angleDifference(angle1: number, angle2: number): number {\n        let angle: number = angle2 - angle1;\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the relative rotation angle between two\n     * angle-axis vectors.\n     *\n     * @param {number} rotation1 - First angle-axis vector.\n     * @param {number} rotation2 - Second angle-axis vector.\n     * @returns {number} Relative rotation angle.\n     */\n    public relativeRotationAngle(rotation1: number[], rotation2: number[]): number {\n        let R1T: THREE.Matrix4 = this.rotationMatrix(\n            [-rotation1[0], -rotation1[1], -rotation1[2]]);\n        let R2: THREE.Matrix4 = this.rotationMatrix(rotation2);\n\n        let R: THREE.Matrix4 = R1T.multiply(R2);\n        let elements: Float32Array = R.elements;\n\n        // from Tr(R) = 1 + 2 * cos(theta)\n        let tr: number = elements[0] + elements[5] + elements[10];\n        let theta: number = Math.acos(Math.max(Math.min((tr - 1) / 2, 1), -1));\n\n        return theta;\n    }\n\n    /**\n     * Calculates the angle from a vector to a plane.\n     *\n     * @param {Array<number>} vector - The vector.\n     * @param {Array<number>} planeNormal - Normal of the plane.\n     * @returns {number} Angle from between plane and vector.\n     */\n    public angleToPlane(vector: number[], planeNormal: number[]): number {\n        let v: THREE.Vector3 = new THREE.Vector3().fromArray(vector);\n        let norm: number = v.length();\n\n        if (norm < this._epsilon) {\n            return 0;\n        }\n\n        let projection: number = v.dot(new THREE.Vector3().fromArray(planeNormal));\n\n        return Math.asin(projection / norm);\n    }\n\n    public azimuthal(direction: number[], up: number[]): number {\n        const directionVector: THREE.Vector3 = new THREE.Vector3().fromArray(direction);\n        const upVector: THREE.Vector3 = new THREE.Vector3().fromArray(up);\n\n        const upProjection: number = directionVector.clone().dot(upVector);\n        const planeProjection: THREE.Vector3 = directionVector.clone().sub(upVector.clone().multiplyScalar(upProjection));\n\n        return Math.atan2(planeProjection.y, planeProjection.x);\n    }\n\n    /**\n     * Calculates the distance between two coordinates\n     * (latitude longitude pairs) in meters according to\n     * the haversine formula.\n     *\n     * @param {number} lat1 - Latitude of the first coordinate in degrees.\n     * @param {number} lon1 - Longitude of the first coordinate in degrees.\n     * @param {number} lat2 - Latitude of the second coordinate in degrees.\n     * @param {number} lon2 - Longitude of the second coordinate in degrees.\n     * @returns {number} Distance between lat lon positions in meters.\n     */\n    public distanceFromLatLon(lat1: number, lon1: number, lat2: number, lon2: number): number {\n        let r: number = 6371000;\n        let dLat: number = this.degToRad(lat2 - lat1);\n        let dLon: number = this.degToRad(lon2 - lon1);\n\n        let hav: number =\n            Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n            Math.cos(this.degToRad(lat1)) * Math.cos(this.degToRad(lat2)) *\n            Math.sin(dLon / 2) * Math.sin(dLon / 2);\n\n        let d: number = 2 * r * Math.atan2(Math.sqrt(hav), Math.sqrt(1 - hav));\n\n        return d;\n    }\n}\n\nexport default Spatial;\n",
+    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../API\";\nimport { CameraProjection } from \"../api/interfaces/CameraProjection\";\n\n/**\n * @class Transform\n *\n * @classdesc Class used for calculating coordinate transformations\n * and projections.\n */\nexport class Transform {\n    private _width: number;\n    private _height: number;\n    private _focal: number;\n    private _orientation: number;\n    private _scale: number;\n    private _basicWidth: number;\n    private _basicHeight: number;\n    private _basicAspect: number;\n\n    private _gpano: IGPano;\n\n    private _rt: THREE.Matrix4;\n    private _srt: THREE.Matrix4;\n\n    private _basicRt: THREE.Matrix4;\n\n    private _textureScale: number[];\n\n    private _ck1: number;\n    private _ck2: number;\n    private _cameraProjection: CameraProjection;\n\n    private _radialPeak: number;\n\n    /**\n     * Create a new transform instance.\n     * @param {number} orientation - Image orientation.\n     * @param {number} width - Image height.\n     * @param {number} height - Image width.\n     * @param {number} focal - Focal length.\n     * @param {number} scale - Atomic scale.\n     * @param {IGPano} gpano - Panorama properties.\n     * @param {Array<number>} rotation - Rotation vector in three dimensions.\n     * @param {Array<number>} translation - Translation vector in three dimensions.\n     * @param {HTMLImageElement} image - Image for fallback size calculations.\n     */\n    constructor(\n        orientation: number,\n        width: number,\n        height: number,\n        focal: number,\n        scale: number,\n        gpano: IGPano,\n        rotation: number[],\n        translation: number[],\n        image: HTMLImageElement,\n        textureScale?: number[],\n        ck1?: number,\n        ck2?: number,\n        cameraProjection?: CameraProjection) {\n\n        this._orientation = this._getValue(orientation, 1);\n\n        let imageWidth: number = image != null ? image.width : 4;\n        let imageHeight: number = image != null ? image.height : 3;\n        let keepOrientation: boolean = this._orientation < 5;\n\n        this._width = this._getValue(width, keepOrientation ? imageWidth : imageHeight);\n        this._height = this._getValue(height, keepOrientation ? imageHeight : imageWidth);\n\n        this._basicAspect = keepOrientation ?\n             this._width / this._height :\n             this._height / this._width;\n\n        this._basicWidth = keepOrientation ? width : height;\n        this._basicHeight = keepOrientation ? height : width;\n\n        this._focal = this._getValue(focal, 1);\n        this._scale = this._getValue(scale, 0);\n\n        this._gpano = gpano != null ? gpano : null;\n\n        this._rt = this._getRt(rotation, translation);\n        this._srt = this._getSrt(this._rt, this._scale);\n\n        this._basicRt = this._getBasicRt(this._rt, orientation);\n\n        this._textureScale = !!textureScale ? textureScale : [1, 1];\n\n        this._ck1 = !!ck1 ? ck1 : 0;\n        this._ck2 = !!ck2 ? ck2 : 0;\n        this._cameraProjection = !!cameraProjection ?\n            cameraProjection :\n            !!gpano ?\n                \"equirectangular\" :\n                \"perspective\";\n\n        this._radialPeak = this._getRadialPeak(this._ck1, this._ck2);\n    }\n\n    public get ck1(): number {\n        return this._ck1;\n    }\n\n    public get ck2(): number {\n        return this._ck2;\n    }\n\n    public get cameraProjection(): string {\n        return this._cameraProjection;\n    }\n\n    /**\n     * Get basic aspect.\n     * @returns {number} The orientation adjusted aspect ratio.\n     */\n    public get basicAspect(): number {\n        return this._basicAspect;\n    }\n\n    /**\n     * Get basic height.\n     *\n     * @description Does not fall back to node image height but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The height of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicHeight(): number {\n        return this._basicHeight;\n    }\n\n    public get basicRt(): THREE.Matrix4 {\n        return this._basicRt;\n    }\n\n    /**\n     * Get basic width.\n     *\n     * @description Does not fall back to node image width but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The width of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicWidth(): number {\n        return this._basicWidth;\n    }\n\n    /**\n     * Get focal.\n     * @returns {number} The node focal length.\n     */\n    public get focal(): number {\n        return this._focal;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._gpano != null &&\n            this._gpano.CroppedAreaLeftPixels === 0 &&\n            this._gpano.CroppedAreaTopPixels === 0 &&\n            this._gpano.CroppedAreaImageWidthPixels === this._gpano.FullPanoWidthPixels &&\n            this._gpano.CroppedAreaImageHeightPixels === this._gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     * @returns {number} The node gpano information.\n     */\n    public get gpano(): IGPano {\n        return this._gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @description Falls back to the node image height if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image height.\n     */\n    public get height(): number {\n        return this._height;\n    }\n\n    /**\n     * Get orientation.\n     * @returns {number} The image orientation.\n     */\n    public get orientation(): number {\n        return this._orientation;\n    }\n\n    /**\n     * Get rt.\n     * @returns {THREE.Matrix4} The extrinsic camera matrix.\n     */\n    public get rt(): THREE.Matrix4 {\n        return this._rt;\n    }\n\n    /**\n     * Get srt.\n     * @returns {THREE.Matrix4} The scaled extrinsic camera matrix.\n     */\n    public get srt(): THREE.Matrix4 {\n        return this._srt;\n    }\n\n    /**\n     * Get scale.\n     * @returns {number} The node atomic reconstruction scale.\n     */\n    public get scale(): number {\n        return this._scale;\n    }\n\n    /**\n     * Get has valid scale.\n     * @returns {boolean} Value indicating if the scale of the transform is valid.\n     */\n    public get hasValidScale(): boolean {\n        return this._scale > 1e-2 && this._scale < 50;\n    }\n\n    /**\n     * Get radial peak.\n     * @returns {number} Value indicating the radius where the radial\n     * undistortion function peaks.\n     */\n    public get radialPeak(): number {\n        return this._radialPeak;\n    }\n\n    /**\n     * Get width.\n     *\n     * @description Falls back to the node image width if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image width.\n     */\n    public get width(): number {\n        return this._width;\n    }\n\n    /**\n     * Calculate the up vector for the node transform.\n     *\n     * @returns {THREE.Vector3} Normalized and orientation adjusted up vector.\n     */\n    public upVector(): THREE.Vector3 {\n        let rte: Float32Array = this._rt.elements;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n            case 3:\n                return new THREE.Vector3(rte[1],  rte[5],  rte[9]);\n            case 6:\n                return new THREE.Vector3(-rte[0], -rte[4], -rte[8]);\n            case 8:\n                return new THREE.Vector3(rte[0],  rte[4],  rte[8]);\n            default:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n        }\n    }\n\n    /**\n     * Calculate projector matrix for projecting 3D points to texture map\n     * coordinates (u and v).\n     *\n     * @returns {THREE.Matrix4} Projection matrix for 3D point to texture\n     * map coordinate calculations.\n     */\n    public projectorMatrix(): THREE.Matrix4 {\n        let projector: THREE.Matrix4 = this._normalizedToTextureMatrix();\n\n        let f: number = this._focal;\n        let projection: THREE.Matrix4 = new THREE.Matrix4().set(\n            f, 0, 0, 0,\n            0, f, 0, 0,\n            0, 0, 0, 0,\n            0, 0, 1, 0);\n\n        projector.multiply(projection);\n        projector.multiply(this._rt);\n\n        return projector;\n    }\n\n    /**\n     * Project 3D world coordinates to basic coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D basic coordinates.\n     */\n    public projectBasic(point3d: number[]): number[] {\n        let sfm: number[] = this.projectSfM(point3d);\n        return this._sfmToBasic(sfm);\n    }\n\n    /**\n     * Unproject basic coordinates to 3D world coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectBasic(basic: number[], distance: number, depth?: boolean): number[] {\n        let sfm: number[] = this._basicToSfm(basic);\n        return this.unprojectSfM(sfm, distance, depth);\n    }\n\n    /**\n     * Project 3D world coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D SfM coordinates.\n     */\n    public projectSfM(point3d: number[]): number[] {\n        let v: THREE.Vector4 = new THREE.Vector4(point3d[0], point3d[1], point3d[2], 1);\n        v.applyMatrix4(this._rt);\n        return this._bearingToSfm([v.x, v.y, v.z]);\n    }\n\n    /**\n     * Unproject SfM coordinates to a 3D world coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectSfM(sfm: number[], distance: number, depth?: boolean): number[] {\n        let bearing: number[] = this._sfmToBearing(sfm);\n\n        const v: THREE.Vector4 = depth && !this.gpano ?\n            new THREE.Vector4(\n                distance * bearing[0] / bearing[2],\n                distance * bearing[1] / bearing[2],\n                distance,\n                1) :\n            new THREE.Vector4(\n                distance * bearing[0],\n                distance * bearing[1],\n                distance * bearing[2],\n                1);\n\n        v.applyMatrix4(new THREE.Matrix4().getInverse(this._rt));\n        return [v.x / v.w, v.y / v.w, v.z / v.w];\n    }\n\n    /**\n     * Transform SfM coordinates to bearing vector (3D cartesian\n     * coordinates on the unit sphere).\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} Bearing vector (3D cartesian coordinates\n     * on the unit sphere).\n     */\n    private _sfmToBearing(sfm: number[]): number[] {\n        if (this._fullPano()) {\n            let lon: number = sfm[0] * 2 * Math.PI;\n            let lat: number = -sfm[1] * 2 * Math.PI;\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else if (this._gpano) {\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            let fullPanoPixel: number[] = [\n                sfm[0] * size + this.gpano.CroppedAreaImageWidthPixels / 2 + this.gpano.CroppedAreaLeftPixels,\n                sfm[1] * size + this.gpano.CroppedAreaImageHeightPixels / 2 + this.gpano.CroppedAreaTopPixels,\n            ];\n            let lon: number = 2 * Math.PI * (fullPanoPixel[0] / this.gpano.FullPanoWidthPixels - 0.5);\n            let lat: number = - Math.PI * (fullPanoPixel[1] / this.gpano.FullPanoHeightPixels - 0.5);\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else if (this._cameraProjection === \"fisheye\") {\n            let [dxn, dyn]: number[] = [sfm[0] / this._focal, sfm[1] / this._focal];\n            const dTheta: number = Math.sqrt(dxn * dxn + dyn * dyn);\n            let d: number = this._distortionFromDistortedRadius(dTheta, this._ck1, this._ck2, this._radialPeak);\n            let theta: number = dTheta / d;\n            let z: number = Math.cos(theta);\n            let r: number = Math.sin(theta);\n            let x: number = r * dxn / dTheta;\n            let y: number = r * dyn / dTheta;\n            return [x, y, z];\n        } else {\n            let [dxn, dyn]: number[] = [sfm[0] / this._focal, sfm[1] / this._focal];\n            const dr: number = Math.sqrt(dxn * dxn + dyn * dyn);\n            let d: number = this._distortionFromDistortedRadius(dr, this._ck1, this._ck2, this._radialPeak);\n\n            const xn: number = dxn / d;\n            const yn: number = dyn / d;\n\n            let v: THREE.Vector3 = new THREE.Vector3(xn, yn, 1);\n            v.normalize();\n            return [v.x, v.y, v.z];\n        }\n    }\n\n    /** Compute distortion given the distorted radius.\n     *\n     *  Solves for d in the equation\n     *    y = d(x, k1, k2) * x\n     * given the distorted radius, y.\n     */\n    private _distortionFromDistortedRadius(distortedRadius: number, k1: number, k2: number, radialPeak: number): number {\n        let d: number = 1.0;\n        for (let i: number = 0; i < 10; i++) {\n            let radius: number = distortedRadius / d;\n            if (radius > radialPeak) {\n                radius = radialPeak;\n            }\n            d = 1 + k1 * radius ** 2 + k2 * radius ** 4;\n        }\n        return d;\n    }\n\n    /**\n     * Transform bearing vector (3D cartesian coordiantes on the unit sphere) to\n     * SfM coordinates.\n     *\n     * @param {Array<number>} bearing - Bearing vector (3D cartesian coordinates on the\n     * unit sphere).\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _bearingToSfm(bearing: number[]): number[] {\n        if (this._fullPano()) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            return [lon / (2 * Math.PI), -lat / (2 * Math.PI)];\n        } else if (this._gpano) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            let fullPanoPixel: number[] = [\n                (lon / (2 * Math.PI) + 0.5) * this.gpano.FullPanoWidthPixels,\n                (- lat / Math.PI + 0.5) * this.gpano.FullPanoHeightPixels,\n            ];\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            return [\n                (fullPanoPixel[0] - this.gpano.CroppedAreaLeftPixels - this.gpano.CroppedAreaImageWidthPixels / 2) / size,\n                (fullPanoPixel[1] - this.gpano.CroppedAreaTopPixels - this.gpano.CroppedAreaImageHeightPixels / 2) / size,\n            ];\n        } else if (this._cameraProjection === \"fisheye\") {\n            if (bearing[2] > 0) {\n                const [x, y, z]: number[] = bearing;\n                const r: number = Math.sqrt(x * x + y * y);\n                let theta: number = Math.atan2(r, z);\n\n                if (theta > this._radialPeak) {\n                    theta = this._radialPeak;\n                }\n\n                const distortion: number = 1.0 + theta ** 2 * (this._ck1 + theta ** 2 * this._ck2);\n                const s: number = this._focal * distortion * theta / r;\n\n                return [s * x, s * y];\n            } else {\n                return [\n                    bearing[0] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                    bearing[1] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                ];\n            }\n        } else {\n            if (bearing[2] > 0) {\n                let [xn, yn]: number[] = [bearing[0] / bearing[2], bearing[1] / bearing[2]];\n                let r2: number = xn * xn + yn * yn;\n                const rp2: number = this._radialPeak ** 2;\n\n                if (r2 > rp2) {\n                    r2 = rp2;\n                }\n\n                const d: number = 1 + this._ck1 * r2 + this._ck2 * r2 ** 2;\n                return [\n                    this._focal * d * xn,\n                    this._focal * d * yn,\n                ];\n            } else {\n                return [\n                    bearing[0] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                    bearing[1] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                ];\n            }\n        }\n    }\n\n    /**\n     * Convert basic coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _basicToSfm(basic: number[]): number[] {\n        let rotatedX: number;\n        let rotatedY: number;\n\n        switch (this._orientation) {\n            case 1:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n            case 3:\n                rotatedX = 1 - basic[0];\n                rotatedY = 1 - basic[1];\n                break;\n            case 6:\n                rotatedX = basic[1];\n                rotatedY = 1 - basic[0];\n                break;\n            case 8:\n                rotatedX = 1 - basic[1];\n                rotatedY = basic[0];\n                break;\n            default:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n        }\n\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let sfmX: number = rotatedX * w / s - w / s / 2;\n        let sfmY: number = rotatedY * h / s - h / s / 2;\n\n        return [sfmX, sfmY];\n    }\n\n    /**\n     * Convert SfM coordinates to basic coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    private _sfmToBasic(sfm: number[]): number[] {\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let rotatedX: number = (sfm[0] + w / s / 2) / w * s;\n        let rotatedY: number = (sfm[1] + h / s / 2) / h * s;\n\n        let basicX: number;\n        let basicY: number;\n\n        switch (this._orientation) {\n            case 1:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n            case 3:\n                basicX = 1 - rotatedX;\n                basicY = 1 - rotatedY;\n                break;\n            case 6:\n                basicX = 1 - rotatedY;\n                basicY = rotatedX;\n                break;\n            case 8:\n                basicX = rotatedY;\n                basicY = 1 - rotatedX;\n                break;\n            default:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n        }\n\n        return [basicX, basicY];\n    }\n\n    /**\n     * Determines if the gpano information indicates a full panorama.\n     *\n     * @returns {boolean} Value determining if the gpano information indicates\n     * a full panorama.\n     */\n    private _fullPano(): boolean {\n        return this.gpano != null &&\n            this.gpano.CroppedAreaLeftPixels === 0 &&\n            this.gpano.CroppedAreaTopPixels === 0 &&\n            this.gpano.CroppedAreaImageWidthPixels === this.gpano.FullPanoWidthPixels &&\n            this.gpano.CroppedAreaImageHeightPixels === this.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Checks a value and returns it if it exists and is larger than 0.\n     * Fallbacks if it is null.\n     *\n     * @param {number} value - Value to check.\n     * @param {number} fallback - Value to fall back to.\n     * @returns {number} The value or its fallback value if it is not defined or negative.\n     */\n    private _getValue(value: number, fallback: number): number {\n        return value != null && value > 0 ? value : fallback;\n    }\n\n    /**\n     * Creates the extrinsic camera matrix [ R | t ].\n     *\n     * @param {Array<number>} rotation - Rotation vector in angle axis representation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Matrix4} Extrisic camera matrix.\n     */\n    private _getRt(rotation: number[], translation: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 = new THREE.Vector3(rotation[0], rotation[1], rotation[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        let rt: THREE.Matrix4 = new THREE.Matrix4();\n        rt.makeRotationAxis(axis, angle);\n        rt.setPosition(\n            new THREE.Vector3(\n                translation[0],\n                translation[1],\n                translation[2]));\n\n        return rt;\n    }\n\n    /**\n     * Calculates the scaled extrinsic camera matrix scale * [ R | t ].\n     *\n     * @param {THREE.Matrix4} rt - Extrisic camera matrix.\n     * @param {number} scale - Scale factor.\n     * @returns {THREE.Matrix4} Scaled extrisic camera matrix.\n     */\n    private _getSrt(rt: THREE.Matrix4, scale: number): THREE.Matrix4 {\n        let srt: THREE.Matrix4 = rt.clone();\n        let elements: Float32Array = srt.elements;\n\n        elements[12] = scale * elements[12];\n        elements[13] = scale * elements[13];\n        elements[14] = scale * elements[14];\n\n        srt.scale(new THREE.Vector3(scale, scale, scale));\n\n        return srt;\n    }\n\n    private _getBasicRt(rt: THREE.Matrix4, orientation: number): THREE.Matrix4 {\n        const axis: THREE.Vector3 = new THREE.Vector3(0, 0, 1);\n        let angle: number = 0;\n\n        switch (orientation) {\n            case 3:\n                angle = Math.PI;\n                break;\n            case 6:\n                angle = Math.PI / 2;\n                break;\n            case 8:\n                angle = 3 * Math.PI / 2;\n                break;\n            default:\n                break;\n        }\n\n        return new THREE.Matrix4()\n            .makeRotationAxis(axis, angle)\n            .multiply(rt);\n    }\n\n    private _getRadialPeak(k1: number, k2: number): number {\n        const a: number = 5 * k2;\n        const b: number = 3 * k1;\n        const c: number = 1;\n        const d: number = b ** 2 - 4 * a * c;\n\n        if (d < 0) {\n            return undefined;\n        }\n\n        const root1: number = (-b - Math.sqrt(d)) / 2 / a;\n        const root2: number = (-b + Math.sqrt(d)) / 2 / a;\n\n        const minRoot: number = Math.min(root1, root2);\n        const maxRoot: number = Math.max(root1, root2);\n\n        return minRoot > 0 ?\n            Math.sqrt(minRoot) :\n            maxRoot > 0 ?\n                Math.sqrt(maxRoot) :\n                undefined;\n    }\n\n    /**\n     * Calculate a transformation matrix from normalized coordinates for\n     * texture map coordinates.\n     *\n     * @returns {THREE.Matrix4} Normalized coordinates to texture map\n     * coordinates transformation matrix.\n     */\n    private _normalizedToTextureMatrix(): THREE.Matrix4 {\n        const size: number = Math.max(this._width, this._height);\n\n        const scaleX: number = this._orientation < 5 ? this._textureScale[0] : this._textureScale[1];\n        const scaleY: number = this._orientation < 5 ? this._textureScale[1] : this._textureScale[0];\n\n        const w: number = size / this._width * scaleX;\n        const h: number = size / this._height * scaleY;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 3:\n                return new THREE.Matrix4().set(-w, 0, 0, 0.5, 0, h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 6:\n                return new THREE.Matrix4().set(0, -h, 0, 0.5, -w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 8:\n                return new THREE.Matrix4().set(0, h, 0, 0.5, w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            default:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n        }\n    }\n}\n",
     "import * as THREE from \"three\";\n\nimport {Transform} from \"../Geo\";\n\n/**\n * @class ViewportCoords\n *\n * @classdesc Provides methods for calculating 2D coordinate conversions\n * as well as 3D projection and unprojection.\n *\n * Basic coordinates are 2D coordinates on the [0, 1] interval and\n * have the origin point, (0, 0), at the top left corner and the\n * maximum value, (1, 1), at the bottom right corner of the original\n * image.\n *\n * Viewport coordinates are 2D coordinates on the [-1, 1] interval and\n * have the origin point in the center. The bottom left corner point is\n * (-1, -1) and the top right corner point is (1, 1).\n *\n * Canvas coordiantes are 2D pixel coordinates on the [0, canvasWidth] and\n * [0, canvasHeight] intervals. The origin point (0, 0) is in the top left\n * corner and the maximum value is (canvasWidth, canvasHeight) is in the\n * bottom right corner.\n *\n * 3D coordinates are in the topocentric world reference frame.\n */\nexport class ViewportCoords {\n    private _unprojectDepth: number = 200;\n\n    /**\n     * Convert basic coordinates to canvas coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public basicToCanvas(\n        basicX: number,\n        basicY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const canvas: number[] = this.projectToCanvas(point3d, container, camera);\n\n        return canvas;\n    }\n\n    /**\n     * Convert basic coordinates to canvas coordinates safely. If 3D point is\n     * behind camera null will be returned.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates if the basic point represents a 3D point\n     * in front of the camera, otherwise null.\n     */\n    public basicToCanvasSafe(\n        basicX: number,\n        basicY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: number[] = this.basicToViewportSafe(basicX, basicY, transform, camera);\n\n        if (viewport === null) {\n            return null;\n        }\n\n        const canvas: number[] = this.viewportToCanvas(viewport[0], viewport[1], container);\n\n        return canvas;\n    }\n\n    /**\n     * Convert basic coordinates to viewport coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public basicToViewport(\n        basicX: number,\n        basicY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n\n        return viewport;\n    }\n\n    /**\n     * Convert basic coordinates to viewport coordinates safely. If 3D point is\n     * behind camera null will be returned.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public basicToViewportSafe(\n        basicX: number,\n        basicY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const pointCamera: number[] = this.worldToCamera(point3d, camera);\n\n        if (pointCamera[2] > 0) {\n            return null;\n        }\n\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n\n        return viewport;\n    }\n\n    /**\n     * Convert camera 3D coordinates to viewport coordinates.\n     *\n     * @param {number} pointCamera - 3D point in camera coordinate system.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public cameraToViewport(\n        pointCamera: number[],\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: THREE.Vector3 =\n            new THREE.Vector3().fromArray(pointCamera)\n                .applyMatrix4(camera.projectionMatrix);\n\n        return [viewport.x, viewport.y];\n    }\n\n    /**\n     * Get canvas pixel position from event.\n     *\n     * @param {Event} event - Event containing clientX and clientY properties.\n     * @param {HTMLElement} element - HTML element.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public canvasPosition(event: { clientX: number, clientY: number }, element: HTMLElement): number[] {\n        const clientRect: ClientRect = element.getBoundingClientRect();\n\n        const canvasX: number = event.clientX - clientRect.left - element.clientLeft;\n        const canvasY: number = event.clientY - clientRect.top - element.clientTop;\n\n        return [canvasX, canvasY];\n    }\n\n    /**\n     * Convert canvas coordinates to basic coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    public canvasToBasic(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] =\n            this.unprojectFromCanvas(canvasX, canvasY, container, camera)\n                .toArray();\n\n        const basic: number[] = transform.projectBasic(point3d);\n\n        return basic;\n    }\n\n    /**\n     * Convert canvas coordinates to viewport coordinates.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public canvasToViewport(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number }):\n        number[] {\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n        const viewportX: number = 2 * canvasX / canvasWidth - 1;\n        const viewportY: number = 1 - 2 * canvasY / canvasHeight;\n\n        return [viewportX, viewportY];\n    }\n\n    /**\n     * Determines the width and height of the container in canvas coordinates.\n     *\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public containerToCanvas(container: { offsetHeight: number, offsetWidth: number }): number[] {\n        return [container.offsetWidth, container.offsetHeight];\n    }\n\n    /**\n     * Determine basic distances from image to canvas corners.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * Determines the smallest basic distance for every side of the canvas.\n     *\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} Array of basic distances as [top, right, bottom, left].\n     */\n    public getBasicDistances(\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const topLeftBasic: number[] = this.viewportToBasic(-1, 1, transform, camera);\n        const topRightBasic: number[] = this.viewportToBasic(1, 1, transform, camera);\n        const bottomRightBasic: number[] = this.viewportToBasic(1, -1, transform, camera);\n        const bottomLeftBasic: number[] = this.viewportToBasic(-1, -1, transform, camera);\n\n        let topBasicDistance: number = 0;\n        let rightBasicDistance: number = 0;\n        let bottomBasicDistance: number = 0;\n        let leftBasicDistance: number = 0;\n\n        if (topLeftBasic[1] < 0 && topRightBasic[1] < 0) {\n            topBasicDistance = topLeftBasic[1] > topRightBasic[1] ?\n                -topLeftBasic[1] :\n                -topRightBasic[1];\n        }\n\n        if (topRightBasic[0] > 1 && bottomRightBasic[0] > 1) {\n            rightBasicDistance = topRightBasic[0] < bottomRightBasic[0] ?\n                topRightBasic[0] - 1 :\n                bottomRightBasic[0] - 1;\n        }\n\n        if (bottomRightBasic[1] > 1 && bottomLeftBasic[1] > 1) {\n            bottomBasicDistance = bottomRightBasic[1] < bottomLeftBasic[1] ?\n                bottomRightBasic[1] - 1 :\n                bottomLeftBasic[1] - 1;\n        }\n\n        if (bottomLeftBasic[0] < 0 && topLeftBasic[0] < 0) {\n            leftBasicDistance = bottomLeftBasic[0] > topLeftBasic[0] ?\n                -bottomLeftBasic[0] :\n                -topLeftBasic[0];\n        }\n\n        return [topBasicDistance, rightBasicDistance, bottomBasicDistance, leftBasicDistance];\n    }\n\n    /**\n     * Determine pixel distances from image to canvas corners.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * Determines the smallest pixel distance for every side of the canvas.\n     *\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} Array of pixel distances as [top, right, bottom, left].\n     */\n    public getPixelDistances(\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const topLeftBasic: number[] = this.viewportToBasic(-1, 1, transform, camera);\n        const topRightBasic: number[] = this.viewportToBasic(1, 1, transform, camera);\n        const bottomRightBasic: number[] = this.viewportToBasic(1, -1, transform, camera);\n        const bottomLeftBasic: number[] = this.viewportToBasic(-1, -1, transform, camera);\n\n        let topPixelDistance: number = 0;\n        let rightPixelDistance: number = 0;\n        let bottomPixelDistance: number = 0;\n        let leftPixelDistance: number = 0;\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n\n        if (topLeftBasic[1] < 0 && topRightBasic[1] < 0) {\n            const basicX: number = topLeftBasic[1] > topRightBasic[1] ?\n                topLeftBasic[0] :\n                topRightBasic[0];\n\n            const canvas: number[] = this.basicToCanvas(basicX, 0, container, transform, camera);\n\n            topPixelDistance = canvas[1] > 0 ? canvas[1] : 0;\n        }\n\n        if (topRightBasic[0] > 1 && bottomRightBasic[0] > 1) {\n            const basicY: number = topRightBasic[0] < bottomRightBasic[0] ?\n                topRightBasic[1] :\n                bottomRightBasic[1];\n\n            const canvas: number[] = this.basicToCanvas(1, basicY, container, transform, camera);\n\n            rightPixelDistance = canvas[0] < canvasWidth ? canvasWidth - canvas[0] : 0;\n        }\n\n        if (bottomRightBasic[1] > 1 && bottomLeftBasic[1] > 1) {\n            const basicX: number = bottomRightBasic[1] < bottomLeftBasic[1] ?\n                bottomRightBasic[0] :\n                bottomLeftBasic[0];\n\n            const canvas: number[] = this.basicToCanvas(basicX, 1, container, transform, camera);\n\n            bottomPixelDistance = canvas[1] < canvasHeight ? canvasHeight - canvas[1] : 0;\n        }\n\n        if (bottomLeftBasic[0] < 0 && topLeftBasic[0] < 0) {\n            const basicY: number = bottomLeftBasic[0] > topLeftBasic[0] ?\n                bottomLeftBasic[1] :\n                topLeftBasic[1];\n\n            const canvas: number[] = this.basicToCanvas(0, basicY, container, transform, camera);\n\n            leftPixelDistance = canvas[0] > 0 ? canvas[0] : 0;\n        }\n\n        return [topPixelDistance, rightPixelDistance, bottomPixelDistance, leftPixelDistance];\n    }\n\n    /**\n     * Determine if an event occured inside an element.\n     *\n     * @param {Event} event - Event containing clientX and clientY properties.\n     * @param {HTMLElement} element - HTML element.\n     * @returns {boolean} Value indicating if the event occured inside the element or not.\n     */\n    public insideElement(event: { clientX: number, clientY: number }, element: HTMLElement): boolean {\n        const clientRect: ClientRect = element.getBoundingClientRect();\n\n        const minX: number = clientRect.left + element.clientLeft;\n        const maxX: number = minX + element.clientWidth;\n        const minY: number = clientRect.top + element.clientTop;\n        const maxY: number = minY + element.clientHeight;\n\n        return event.clientX > minX &&\n            event.clientX < maxX &&\n            event.clientY > minY &&\n            event.clientY < maxY;\n    }\n\n    /**\n     * Project 3D world coordinates to canvas coordinates.\n     *\n     * @param {Array<number>} point3D - 3D world coordinates.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public projectToCanvas(\n        point3d: number[],\n        container: { offsetHeight: number, offsetWidth: number },\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n        const canvas: number[] =\n            this.viewportToCanvas(viewport[0], viewport[1], container);\n\n        return canvas;\n    }\n\n    /**\n     * Project 3D world coordinates to viewport coordinates.\n     *\n     * @param {Array<number>} point3D - 3D world coordinates.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public projectToViewport(\n        point3d: number[],\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: THREE.Vector3 =\n            new THREE.Vector3(point3d[0], point3d[1], point3d[2])\n                .project(camera);\n\n        return [viewport.x, viewport.y];\n    }\n\n    /**\n     * Uproject canvas coordinates to 3D world coordinates.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D world coordinates.\n     */\n    public unprojectFromCanvas(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        camera: THREE.Camera):\n        THREE.Vector3 {\n\n        const viewport: number[] =\n            this.canvasToViewport(canvasX, canvasY, container);\n\n        const point3d: THREE.Vector3 =\n            this.unprojectFromViewport(viewport[0], viewport[1], camera);\n\n        return point3d;\n    }\n\n    /**\n     * Unproject viewport coordinates to 3D world coordinates.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D world coordinates.\n     */\n    public unprojectFromViewport(\n        viewportX: number,\n        viewportY: number,\n        camera: THREE.Camera):\n        THREE.Vector3 {\n\n        const point3d: THREE.Vector3 =\n            new THREE.Vector3(viewportX, viewportY, 1)\n                .unproject(camera);\n\n        return point3d;\n    }\n\n    /**\n     * Convert viewport coordinates to basic coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    public viewportToBasic(\n        viewportX: number,\n        viewportY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] =\n            new THREE.Vector3(viewportX, viewportY, 1)\n                .unproject(camera)\n                .toArray();\n\n        const basic: number[] = transform.projectBasic(point3d);\n\n        return basic;\n    }\n\n    /**\n     * Convert viewport coordinates to canvas coordinates.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public viewportToCanvas(\n        viewportX: number,\n        viewportY: number,\n        container: { offsetHeight: number, offsetWidth: number }):\n        number[] {\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n        const canvasX: number = canvasWidth * (viewportX + 1) / 2;\n        const canvasY: number = -canvasHeight * (viewportY - 1) / 2;\n\n        return [canvasX, canvasY];\n    }\n\n    /**\n     * Convert 3D world coordinates to 3D camera coordinates.\n     *\n     * @param {number} point3D - 3D point in world coordinate system.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D camera coordinates.\n     */\n    public worldToCamera(\n        point3d: number[],\n        camera: THREE.Camera): number[] {\n\n        const pointCamera: THREE.Vector3 =\n            new THREE.Vector3(point3d[0], point3d[1], point3d[2])\n                .applyMatrix4(camera.matrixWorldInverse);\n\n        return pointCamera.toArray();\n    }\n}\n\nexport default ViewportCoords;\n",
     "import {\n    FilterExpression,\n    FilterOperation,\n    FilterOperator,\n    FilterValue,\n    Node,\n} from \"../Graph\";\nimport {Func} from \"../Utils\";\n\nexport type FilterFunction = Func<Node, boolean>;\n\n/**\n * @class Filter\n *\n * @classdesc Represents a class for creating node filters. Implementation and\n * definitions based on https://github.com/mapbox/feature-filter.\n */\nexport class FilterCreator {\n    /**\n     * Create a filter from a filter expression.\n     *\n     * @description The following filters are supported:\n     *\n     * Comparison\n     * `==`\n     * `!=`\n     * `<`\n     * `<=`\n     * `>`\n     * `>=`\n     *\n     * Set membership\n     * `in`\n     * `!in`\n     *\n     * Combining\n     * `all`\n     *\n     * @param {FilterExpression} filter - Comparison, set membership or combinding filter\n     * expression.\n     * @returns {FilterFunction} Function taking a node and returning a boolean that\n     * indicates whether the node passed the test or not.\n     */\n    public createFilter(filter: FilterExpression): FilterFunction {\n        return <FilterFunction>new Function(\"node\", \"return \" + this._compile(filter) + \";\");\n    }\n\n    private _compile(filter: FilterExpression): string {\n        if (filter == null || filter.length <= 1) {\n            return \"true\";\n        }\n\n        const operator: FilterOperator = <FilterOperator>filter[0];\n        const operation: string =\n            operator === \"==\" ? this._compileComparisonOp(\"===\", <string>filter[1], filter[2], false) :\n            operator === \"!=\" ? this._compileComparisonOp(\"!==\", <string>filter[1], filter[2], false) :\n            operator === \">\" ||\n            operator === \">=\" ||\n            operator === \"<\" ||\n            operator === \"<=\" ? this._compileComparisonOp(operator, <string>filter[1], filter[2], true) :\n            operator === \"in\" ?\n                this._compileInOp<FilterValue>(<string>filter[1], <FilterValue[]>filter.slice(2)) :\n            operator === \"!in\" ?\n                this._compileNegation(\n                    this._compileInOp<FilterValue>(<string>filter[1], <FilterValue[]>filter.slice(2))) :\n            operator === \"all\" ? this._compileLogicalOp(<FilterOperation[]>filter.slice(1), \"&&\") :\n            \"true\";\n\n        return \"(\" + operation + \")\";\n    }\n\n    private _compare<T>(a: T, b: T): number {\n        return a < b ? -1 : a > b ? 1 : 0;\n    }\n\n    private _compileComparisonOp<T>(operator: string, property: string, value: T, checkType: boolean): string {\n        const left: string = this._compilePropertyReference(property);\n        const right: string = JSON.stringify(value);\n\n        return (checkType ? \"typeof \" + left + \"===typeof \" + right + \"&&\" : \"\") + left + operator + right;\n    }\n\n    private _compileInOp<T>(property: string, values: T[]): string {\n        const compare: (a: T, b: T) => number = this._compare;\n        const left: string = JSON.stringify(values.sort(compare));\n        const right: string = this._compilePropertyReference(property);\n\n        return left + \".indexOf(\" + right + \")!==-1\";\n    }\n\n    private _compileLogicalOp(filters: FilterOperation[], operator: string): string {\n        const compile: (filter: FilterExpression) => string = this._compile.bind(this);\n\n        return filters.map<string>(compile).join(operator);\n    }\n\n    private _compileNegation(expression: string): string {\n        return \"!(\" + expression + \")\";\n    }\n\n    private _compilePropertyReference(property: string): string {\n        return \"node[\" + JSON.stringify(property) + \"]\";\n    }\n}\n\nexport default FilterCreator;\n",
     "import {merge as observableMerge, from as observableFrom, of as observableOf, Observable, Subject} from \"rxjs\";\n\nimport {tap, refCount, catchError, publish, finalize, map, reduce, mergeMap, mergeAll, last} from \"rxjs/operators\";\nimport * as rbush from \"rbush\";\n\nimport {\n    APIv3,\n    ICoreNode,\n    IFillNode,\n    IFullNode,\n    ILatLon,\n    ISequence,\n} from \"../API\";\nimport {\n    IEdge,\n    IPotentialEdge,\n    EdgeCalculator,\n} from \"../Edge\";\nimport {GraphMapillaryError} from \"../Error\";\nimport {\n    FilterCreator,\n    FilterExpression,\n    FilterFunction,\n    IGraphConfiguration,\n    Node,\n    NodeCache,\n    Sequence,\n    GraphCalculator,\n} from \"../Graph\";\n\ntype NodeIndexItem = {\n    lat: number;\n    lon: number;\n    node: Node;\n};\n\ntype NodeTiles = {\n    cache: string[];\n    caching: string[];\n};\n\ntype SpatialArea = {\n    all: { [key: string]: Node };\n    cacheKeys: string[];\n    cacheNodes: { [key: string]: Node };\n};\n\ntype NodeAccess = {\n    node: Node;\n    accessed: number;\n};\n\ntype TileAccess = {\n    nodes: Node[];\n    accessed: number;\n};\n\ntype SequenceAccess = {\n    sequence: Sequence;\n    accessed: number;\n};\n\n/**\n * @class Graph\n *\n * @classdesc Represents a graph of nodes with edges.\n */\nexport class Graph {\n    private _apiV3: APIv3;\n\n    /**\n     * Nodes that have initialized cache with a timestamp of last access.\n     */\n    private _cachedNodes: { [key: string]: NodeAccess };\n\n    /**\n     * Nodes for which the required tiles are cached.\n     */\n    private _cachedNodeTiles: { [key: string]: boolean };\n\n    /**\n     * Sequences for which the nodes are cached.\n     */\n    private _cachedSequenceNodes: { [sequenceKey: string]: boolean };\n\n    /**\n     * Nodes for which the spatial edges are cached.\n     */\n    private _cachedSpatialEdges: { [key: string]: Node };\n\n    /**\n     * Cached tiles with a timestamp of last access.\n     */\n    private _cachedTiles: { [h: string]: TileAccess };\n\n    /**\n     * Nodes for which fill properties are being retreived.\n     */\n    private _cachingFill$: { [key: string]: Observable<Graph> };\n\n    /**\n     * Nodes for which full properties are being retrieved.\n     */\n    private _cachingFull$: { [key: string]: Observable<Graph> };\n\n    /**\n     * Sequences for which the nodes are being retrieved.\n     */\n    private _cachingSequenceNodes$: { [sequenceKey: string]: Observable<Graph> };\n\n    /**\n     * Sequences that are being retrieved.\n     */\n    private _cachingSequences$: { [sequenceKey: string]: Observable<Graph> };\n\n    /**\n     * Nodes for which the spatial area fill properties are being retrieved.\n     */\n    private _cachingSpatialArea$: { [key: string]: Observable<Graph>[] };\n\n    /**\n     * Tiles that are being retrieved.\n     */\n    private _cachingTiles$: { [h: string]: Observable<Graph> };\n\n    private _changed$: Subject<Graph>;\n\n    private _defaultAlt: number;\n    private _edgeCalculator: EdgeCalculator;\n    private _filter: FilterFunction;\n    private _filterCreator: FilterCreator;\n    private _graphCalculator: GraphCalculator;\n    private _configuration: IGraphConfiguration;\n\n    /**\n     * All nodes in the graph.\n     */\n    private _nodes: { [key: string]: Node };\n\n    /**\n     * Contains all nodes in the graph. Used for fast spatial lookups.\n     */\n    private _nodeIndex: rbush.RBush<NodeIndexItem>;\n\n    /**\n     * All node index items sorted in tiles for easy uncache.\n     */\n    private _nodeIndexTiles: { [h: string]: NodeIndexItem[] };\n\n    /**\n     * Node to tile dictionary for easy tile access updates.\n     */\n    private _nodeToTile: { [key: string]: string };\n\n    /**\n     * Nodes retrieved before tiles, stored on tile level.\n     */\n    private _preStored: { [h: string]: { [key: string]: Node } };\n\n    /**\n     * Tiles required for a node to retrive spatial area.\n     */\n    private _requiredNodeTiles: { [key: string]: NodeTiles };\n\n    /**\n     * Other nodes required for node to calculate spatial edges.\n     */\n    private _requiredSpatialArea: { [key: string]: SpatialArea };\n\n    /**\n     * All sequences in graph with a timestamp of last access.\n     */\n    private _sequences: { [skey: string]: SequenceAccess };\n\n    private _tilePrecision: number;\n    private _tileThreshold: number;\n\n    /**\n     * Create a new graph instance.\n     *\n     * @param {APIv3} [apiV3] - API instance for retrieving data.\n     * @param {rbush.RBush<NodeIndexItem>} [nodeIndex] - Node index for fast spatial retreival.\n     * @param {GraphCalculator} [graphCalculator] - Instance for graph calculations.\n     * @param {EdgeCalculator} [edgeCalculator] - Instance for edge calculations.\n     * @param {FilterCreator} [filterCreator] - Instance for  filter creation.\n     * @param {IGraphConfiguration} [configuration] - Configuration struct.\n     */\n    constructor(\n        apiV3: APIv3,\n        nodeIndex?: rbush.RBush<NodeIndexItem>,\n        graphCalculator?: GraphCalculator,\n        edgeCalculator?: EdgeCalculator,\n        filterCreator?: FilterCreator,\n        configuration?: IGraphConfiguration) {\n\n        this._apiV3 = apiV3;\n\n        this._cachedNodes = {};\n        this._cachedNodeTiles = {};\n        this._cachedSequenceNodes = {};\n        this._cachedSpatialEdges = {};\n        this._cachedTiles = {};\n\n        this._cachingFill$ = {};\n        this._cachingFull$ = {};\n        this._cachingSequenceNodes$ = {};\n        this._cachingSequences$ = {};\n        this._cachingSpatialArea$ = {};\n        this._cachingTiles$ = {};\n\n        this._changed$ = new Subject<Graph>();\n\n        this._defaultAlt = 2;\n        this._edgeCalculator = edgeCalculator != null ? edgeCalculator : new EdgeCalculator();\n        this._filterCreator = filterCreator != null ? filterCreator : new FilterCreator();\n        this._filter = this._filterCreator.createFilter(undefined);\n        this._graphCalculator = graphCalculator != null ? graphCalculator : new GraphCalculator();\n        this._configuration = configuration != null ?\n            configuration :\n            {\n                maxSequences: 50,\n                maxUnusedNodes: 100,\n                maxUnusedPreStoredNodes: 30,\n                maxUnusedTiles: 20,\n            };\n\n        this._nodes = {};\n        this._nodeIndex = nodeIndex != null ? nodeIndex : rbush<NodeIndexItem>(16, [\".lat\", \".lon\", \".lat\", \".lon\"]);\n        this._nodeIndexTiles = {};\n        this._nodeToTile = {};\n\n        this._preStored = {};\n\n        this._requiredNodeTiles = {};\n        this._requiredSpatialArea = {};\n\n        this._sequences = {};\n\n        this._tilePrecision = 7;\n        this._tileThreshold = 20;\n    }\n\n    /**\n     * Get changed$.\n     *\n     * @returns {Observable<Graph>} Observable emitting\n     * the graph every time it has changed.\n     */\n    public get changed$(): Observable<Graph> {\n        return this._changed$;\n    }\n\n    /**\n     * Caches the full node data for all images within a bounding\n     * box.\n     *\n     * @description The node assets are not cached.\n     *\n     * @param {ILatLon} sw - South west corner of bounding box.\n     * @param {ILatLon} ne - North east corner of bounding box.\n     * @returns {Observable<Graph>} Observable emitting the full\n     * nodes in the bounding box.\n     */\n    public cacheBoundingBox$(sw: ILatLon, ne: ILatLon): Observable<Node[]> {\n        const cacheTiles$: Observable<Graph>[] = this._graphCalculator.encodeHsFromBoundingBox(sw, ne)\n            .filter(\n                (h: string): boolean => {\n                    return !(h in this._cachedTiles);\n                })\n            .map(\n                (h): Observable<Graph> => {\n                    return h in this._cachingTiles$ ?\n                        this._cachingTiles$[h] :\n                        this._cacheTile$(h);\n                });\n\n        if (cacheTiles$.length === 0) {\n            cacheTiles$.push(observableOf(this));\n        }\n\n        return observableFrom(cacheTiles$).pipe(\n            mergeAll(),\n            last(),\n            mergeMap(\n                (graph: Graph): Observable<Node[]> => {\n                    const nodes: Node[] = this._nodeIndex\n                        .search({\n                            maxX: ne.lat,\n                            maxY: ne.lon,\n                            minX: sw.lat,\n                            minY: sw.lon,\n                        })\n                        .map(\n                            (item: NodeIndexItem): Node => {\n                                return item.node;\n                            });\n\n                    const fullNodes: Node[] = [];\n                    const coreNodes: string[] = [];\n\n                    for (const node of nodes) {\n                        if (node.full) {\n                            fullNodes.push(node);\n                        } else {\n                            coreNodes.push(node.key);\n                        }\n                    }\n\n                    const coreNodeBatches: string[][] = [];\n                    const batchSize: number = 200;\n                    while (coreNodes.length > 0) {\n                         coreNodeBatches.push(coreNodes.splice(0, batchSize));\n                    }\n\n                    const fullNodes$: Observable<Node[]> = observableOf(fullNodes);\n                    const fillNodes$: Observable<Node[]>[] = coreNodeBatches\n                        .map(\n                            (batch: string[]): Observable<Node[]> => {\n                                return this._apiV3.imageByKeyFill$(batch).pipe(\n                                    map(\n                                        (imageByKeyFill: { [key: string]: IFillNode }): Node[] => {\n                                            const filledNodes: Node[] = [];\n\n                                            for (const fillKey in imageByKeyFill) {\n                                                if (!imageByKeyFill.hasOwnProperty(fillKey)) {\n                                                    continue;\n                                                }\n\n                                                if (this.hasNode(fillKey)) {\n                                                    const node: Node = this.getNode(fillKey);\n\n                                                    if (!node.full) {\n                                                        this._makeFull(node, imageByKeyFill[fillKey]);\n                                                    }\n\n                                                    filledNodes.push(node);\n                                                }\n                                            }\n\n                                            return filledNodes;\n                                        }));\n                            });\n\n                    return observableMerge(\n                            fullNodes$,\n                            observableFrom(fillNodes$).pipe(\n                                mergeAll()));\n                }),\n            reduce(\n                (acc: Node[], value: Node[]): Node[] => {\n                    return acc.concat(value);\n                }));\n    }\n\n    /**\n     * Retrieve and cache node fill properties.\n     *\n     * @param {string} key - Key of node to fill.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the node has been updated.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheFill$(key: string): Observable<Graph> {\n        if (key in this._cachingFull$) {\n            throw new GraphMapillaryError(`Cannot fill node while caching full (${key}).`);\n        }\n\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot fill node that does not exist in graph (${key}).`);\n        }\n\n        if (key in this._cachingFill$) {\n            return this._cachingFill$[key];\n        }\n\n        let node: Node = this.getNode(key);\n        if (node.full) {\n            throw new GraphMapillaryError(`Cannot fill node that is already full (${key}).`);\n        }\n\n        this._cachingFill$[key] = this._apiV3.imageByKeyFill$([key]).pipe(\n            tap(\n                (imageByKeyFill: { [key: string]: IFillNode }): void => {\n                    if (!node.full) {\n                        this._makeFull(node, imageByKeyFill[key]);\n                    }\n\n                    delete this._cachingFill$[key];\n                }),\n            map(\n                (imageByKeyFill: { [key: string]: IFillNode }): Graph => {\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    if (key in this._cachingFill$) {\n                        delete this._cachingFill$[key];\n                    }\n\n                    this._changed$.next(this);\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingFill$[key];\n    }\n\n    /**\n     * Retrieve and cache full node properties.\n     *\n     * @param {string} key - Key of node to fill.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the node has been updated.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheFull$(key: string): Observable<Graph> {\n        if (key in this._cachingFull$) {\n            return this._cachingFull$[key];\n        }\n\n        if (this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache full node that already exist in graph (${key}).`);\n        }\n\n        this._cachingFull$[key] = this._apiV3.imageByKeyFull$([key]).pipe(\n            tap(\n                (imageByKeyFull: { [key: string]: IFullNode }): void => {\n                    let fn: IFullNode = imageByKeyFull[key];\n\n                    if (this.hasNode(key)) {\n                        let node: Node = this.getNode(key);\n\n                        if (!node.full) {\n                            this._makeFull(node, fn);\n                        }\n                    } else {\n                        if (fn.sequence_key == null) {\n                            throw new GraphMapillaryError(`Node has no sequence key (${key}).`);\n                        }\n\n                        let node: Node = new Node(fn);\n                        this._makeFull(node, fn);\n\n                        let h: string = this._graphCalculator.encodeH(node.originalLatLon, this._tilePrecision);\n                        this._preStore(h, node);\n                        this._setNode(node);\n\n                        delete this._cachingFull$[key];\n                    }\n                }),\n            map(\n                (imageByKeyFull: { [key: string]: IFullNode }): Graph => {\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    if (key in this._cachingFull$) {\n                        delete this._cachingFull$[key];\n                    }\n\n                    this._changed$.next(this);\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingFull$[key];\n    }\n\n    /**\n     * Retrieve and cache a node sequence.\n     *\n     * @param {string} key - Key of node for which to retrieve sequence.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the sequence has been retrieved.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheNodeSequence$(key: string): Observable<Graph> {\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache sequence edges of node that does not exist in graph (${key}).`);\n        }\n\n        let node: Node = this.getNode(key);\n        if (node.sequenceKey in this._sequences) {\n            throw new GraphMapillaryError(`Sequence already cached (${key}), (${node.sequenceKey}).`);\n        }\n\n        return this._cacheSequence$(node.sequenceKey);\n    }\n\n    /**\n     * Retrieve and cache a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence to cache.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the sequence has been retrieved.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSequence$(sequenceKey: string): Observable<Graph> {\n        if (sequenceKey in this._sequences) {\n            throw new GraphMapillaryError(`Sequence already cached (${sequenceKey})`);\n        }\n\n        return this._cacheSequence$(sequenceKey);\n    }\n\n    /**\n     * Cache sequence edges for a node.\n     *\n     * @param {string} key - Key of node.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSequenceEdges(key: string): void {\n        let node: Node = this.getNode(key);\n\n        if (!(node.sequenceKey in this._sequences)) {\n            throw new GraphMapillaryError(`Sequence is not cached (${key}), (${node.sequenceKey})`);\n        }\n\n        let sequence: Sequence = this._sequences[node.sequenceKey].sequence;\n        let edges: IEdge[] = this._edgeCalculator.computeSequenceEdges(node, sequence);\n\n        node.cacheSequenceEdges(edges);\n    }\n\n    /**\n     * Retrieve and cache full nodes for all keys in a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @param {string} referenceNodeKey - Key of node to use as reference\n     * for optimized caching.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the nodes of the sequence has been cached.\n     */\n    public cacheSequenceNodes$(sequenceKey: string, referenceNodeKey?: string): Observable<Graph> {\n        if (!this.hasSequence(sequenceKey)) {\n            throw new GraphMapillaryError(\n                `Cannot cache sequence nodes of sequence that does not exist in graph (${sequenceKey}).`);\n        }\n\n        if (this.hasSequenceNodes(sequenceKey)) {\n            throw new GraphMapillaryError(`Sequence nodes already cached (${sequenceKey}).`);\n        }\n\n        const sequence: Sequence = this.getSequence(sequenceKey);\n        if (sequence.key in this._cachingSequenceNodes$) {\n            return this._cachingSequenceNodes$[sequence.key];\n        }\n\n        const batches: string[][] = [];\n        const keys: string[] = sequence.keys.slice();\n\n        const referenceBatchSize: number = 50;\n        if (!!referenceNodeKey && keys.length > referenceBatchSize) {\n            const referenceIndex: number = keys.indexOf(referenceNodeKey);\n            const startIndex: number = Math.max(\n                0,\n                Math.min(\n                    referenceIndex - referenceBatchSize / 2,\n                    keys.length - referenceBatchSize));\n\n            batches.push(keys.splice(startIndex, referenceBatchSize));\n        }\n\n        const batchSize: number = 200;\n        while (keys.length > 0) {\n            batches.push(keys.splice(0, batchSize));\n        }\n\n        let batchesToCache: number = batches.length;\n        const sequenceNodes$: Observable<Graph> = observableFrom(batches).pipe(\n            mergeMap(\n                (batch: string[]): Observable<Graph> => {\n                    return this._apiV3.imageByKeyFull$(batch).pipe(\n                        tap(\n                            (imageByKeyFull: { [key: string]: IFullNode }): void => {\n                                for (const fullKey in imageByKeyFull) {\n                                    if (!imageByKeyFull.hasOwnProperty(fullKey)) {\n                                        continue;\n                                    }\n\n                                    const fn: IFullNode = imageByKeyFull[fullKey];\n\n                                    if (this.hasNode(fullKey)) {\n                                        const node: Node = this.getNode(fn.key);\n\n                                        if (!node.full) {\n                                            this._makeFull(node, fn);\n                                        }\n                                    } else {\n                                        if (fn.sequence_key == null) {\n                                            console.warn(`Sequence missing, discarding node (${fn.key})`);\n                                        }\n\n                                        const node: Node = new Node(fn);\n                                        this._makeFull(node, fn);\n\n                                        const h: string = this._graphCalculator.encodeH(node.originalLatLon, this._tilePrecision);\n                                        this._preStore(h, node);\n                                        this._setNode(node);\n                                    }\n                                }\n\n                                batchesToCache--;\n                            }),\n                        map(\n                            (imageByKeyFull: { [key: string]: IFullNode }): Graph => {\n                                return this;\n                            }));\n                },\n                6),\n            last(),\n            finalize(\n                (): void => {\n                    delete this._cachingSequenceNodes$[sequence.key];\n\n                    if (batchesToCache === 0) {\n                        this._cachedSequenceNodes[sequence.key] = true;\n                    }\n                }),\n            publish(),\n            refCount());\n\n        this._cachingSequenceNodes$[sequence.key] = sequenceNodes$;\n\n        return sequenceNodes$;\n    }\n\n    /**\n     * Retrieve and cache full nodes for a node spatial area.\n     *\n     * @param {string} key - Key of node for which to retrieve sequence.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the nodes in the spatial area has been made full.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSpatialArea$(key: string): Observable<Graph>[] {\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache spatial area of node that does not exist in graph (${key}).`);\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            throw new GraphMapillaryError(`Node already spatially cached (${key}).`);\n        }\n\n        if (!(key in this._requiredSpatialArea)) {\n            throw new GraphMapillaryError(`Spatial area not determined (${key}).`);\n        }\n\n        let spatialArea: SpatialArea = this._requiredSpatialArea[key];\n        if (Object.keys(spatialArea.cacheNodes).length === 0) {\n            throw new GraphMapillaryError(`Spatial nodes already cached (${key}).`);\n        }\n\n        if (key in this._cachingSpatialArea$) {\n            return this._cachingSpatialArea$[key];\n        }\n\n        let batches: string[][] = [];\n        while (spatialArea.cacheKeys.length > 0) {\n            batches.push(spatialArea.cacheKeys.splice(0, 200));\n        }\n\n        let batchesToCache: number = batches.length;\n        let spatialNodes$: Observable<Graph>[] = [];\n\n        for (let batch of batches) {\n            let spatialNodeBatch$: Observable<Graph> = this._apiV3.imageByKeyFill$(batch).pipe(\n                tap(\n                    (imageByKeyFill: { [key: string]: IFillNode }): void => {\n                        for (let fillKey in imageByKeyFill) {\n                            if (!imageByKeyFill.hasOwnProperty(fillKey)) {\n                                continue;\n                            }\n\n                            let spatialNode: Node = spatialArea.cacheNodes[fillKey];\n                            if (spatialNode.full) {\n                                delete spatialArea.cacheNodes[fillKey];\n                                continue;\n                            }\n\n                            let fillNode: IFillNode = imageByKeyFill[fillKey];\n                            this._makeFull(spatialNode, fillNode);\n\n                            delete spatialArea.cacheNodes[fillKey];\n                        }\n\n                        if (--batchesToCache === 0) {\n                            delete this._cachingSpatialArea$[key];\n                        }\n                    }),\n                map(\n                    (imageByKeyFill: { [key: string]: IFillNode }): Graph => {\n                        return this;\n                    }),\n                catchError(\n                    (error: Error): Observable<Graph> => {\n                        for (let batchKey of batch) {\n                            if (batchKey in spatialArea.all) {\n                                delete spatialArea.all[batchKey];\n                            }\n\n                            if (batchKey in spatialArea.cacheNodes) {\n                                delete spatialArea.cacheNodes[batchKey];\n                            }\n                        }\n\n                        if (--batchesToCache === 0) {\n                            delete this._cachingSpatialArea$[key];\n                        }\n\n                        throw error;\n                    }),\n                finalize(\n                    (): void => {\n                        if (Object.keys(spatialArea.cacheNodes).length === 0) {\n                            this._changed$.next(this);\n                        }\n                    }),\n                publish(),\n                refCount());\n\n            spatialNodes$.push(spatialNodeBatch$);\n        }\n\n        this._cachingSpatialArea$[key] = spatialNodes$;\n\n        return spatialNodes$;\n    }\n\n    /**\n     * Cache spatial edges for a node.\n     *\n     * @param {string} key - Key of node.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSpatialEdges(key: string): void {\n        if (key in this._cachedSpatialEdges) {\n             throw new GraphMapillaryError(`Spatial edges already cached (${key}).`);\n        }\n\n        let node: Node = this.getNode(key);\n        let sequence: Sequence = this._sequences[node.sequenceKey].sequence;\n\n        let fallbackKeys: string[] = [];\n        let prevKey: string = sequence.findPrevKey(node.key);\n        if (prevKey != null) {\n            fallbackKeys.push(prevKey);\n        }\n\n        let nextKey: string = sequence.findNextKey(node.key);\n        if (nextKey != null) {\n            fallbackKeys.push(nextKey);\n        }\n\n        let allSpatialNodes: { [key: string]: Node } = this._requiredSpatialArea[key].all;\n        let potentialNodes: Node[] = [];\n        let filter: FilterFunction = this._filter;\n        for (let spatialNodeKey in allSpatialNodes) {\n            if (!allSpatialNodes.hasOwnProperty(spatialNodeKey)) {\n                continue;\n            }\n\n            let spatialNode: Node = allSpatialNodes[spatialNodeKey];\n\n            if (filter(spatialNode)) {\n                potentialNodes.push(spatialNode);\n            }\n        }\n\n        let potentialEdges: IPotentialEdge[] =\n            this._edgeCalculator.getPotentialEdges(node, potentialNodes, fallbackKeys);\n\n        let edges: IEdge[] =\n            this._edgeCalculator.computeStepEdges(\n                node,\n                potentialEdges,\n                prevKey,\n                nextKey);\n\n        edges = edges.concat(this._edgeCalculator.computeTurnEdges(node, potentialEdges));\n        edges = edges.concat(this._edgeCalculator.computePanoEdges(node, potentialEdges));\n        edges = edges.concat(this._edgeCalculator.computePerspectiveToPanoEdges(node, potentialEdges));\n        edges = edges.concat(this._edgeCalculator.computeSimilarEdges(node, potentialEdges));\n\n        node.cacheSpatialEdges(edges);\n\n        this._cachedSpatialEdges[key] = node;\n        delete this._requiredSpatialArea[key];\n        delete this._cachedNodeTiles[key];\n    }\n\n    /**\n     * Retrieve and cache geohash tiles for a node.\n     *\n     * @param {string} key - Key of node for which to retrieve tiles.\n     * @returns {Array<Observable<Graph>>} Array of observables emitting\n     * the graph for each tile required for the node has been cached.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheTiles$(key: string): Observable<Graph>[] {\n        if (key in this._cachedNodeTiles) {\n            throw new GraphMapillaryError(`Tiles already cached (${key}).`);\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            throw new GraphMapillaryError(`Spatial edges already cached so tiles considered cached (${key}).`);\n        }\n\n        if (!(key in this._requiredNodeTiles)) {\n            throw new GraphMapillaryError(`Tiles have not been determined (${key}).`);\n        }\n\n        let nodeTiles: NodeTiles = this._requiredNodeTiles[key];\n        if (nodeTiles.cache.length === 0 &&\n            nodeTiles.caching.length === 0) {\n            throw new GraphMapillaryError(`Tiles already cached (${key}).`);\n        }\n\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache tiles of node that does not exist in graph (${key}).`);\n        }\n\n        let hs: string[] = nodeTiles.cache.slice();\n        nodeTiles.caching = this._requiredNodeTiles[key].caching.concat(hs);\n        nodeTiles.cache = [];\n\n        let cacheTiles$: Observable<Graph>[] = [];\n\n        for (let h of nodeTiles.caching) {\n            const cacheTile$: Observable<Graph> = h in this._cachingTiles$ ?\n                this._cachingTiles$[h] :\n                this._cacheTile$(h);\n\n            cacheTiles$.push(\n                cacheTile$.pipe(\n                    tap(\n                        (graph: Graph): void => {\n                            let index: number = nodeTiles.caching.indexOf(h);\n                            if (index > -1) {\n                                nodeTiles.caching.splice(index, 1);\n                            }\n\n                            if (nodeTiles.caching.length === 0 &&\n                                nodeTiles.cache.length === 0) {\n                                delete this._requiredNodeTiles[key];\n\n                                this._cachedNodeTiles[key] = true;\n                            }\n                        }),\n                    catchError(\n                        (error: Error): Observable<Graph> => {\n                            let index: number = nodeTiles.caching.indexOf(h);\n                            if (index > -1) {\n                                nodeTiles.caching.splice(index, 1);\n                            }\n\n                            if (nodeTiles.caching.length === 0 &&\n                                nodeTiles.cache.length === 0) {\n                                delete this._requiredNodeTiles[key];\n\n                                this._cachedNodeTiles[key] = true;\n                            }\n\n                            throw error;\n                        }),\n                    finalize(\n                        (): void => {\n                            this._changed$.next(this);\n                        }),\n                    publish(),\n                    refCount()));\n        }\n\n        return cacheTiles$;\n    }\n\n    /**\n     * Initialize the cache for a node.\n     *\n     * @param {string} key - Key of node.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public initializeCache(key: string): void {\n        if (key in this._cachedNodes) {\n            throw new GraphMapillaryError(`Node already in cache (${key}).`);\n        }\n\n        let node: Node = this.getNode(key);\n        node.initializeCache(new NodeCache());\n\n        let accessed: number = new Date().getTime();\n        this._cachedNodes[key] = { accessed: accessed, node: node };\n\n        this._updateCachedTileAccess(key, accessed);\n    }\n\n    /**\n     * Get a value indicating if the graph is fill caching a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the node is being fill cached.\n     */\n    public isCachingFill(key: string): boolean {\n        return key in this._cachingFill$;\n    }\n\n    /**\n     * Get a value indicating if the graph is fully caching a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the node is being fully cached.\n     */\n    public isCachingFull(key: string): boolean {\n        return key in this._cachingFull$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching a sequence of a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the sequence of a node is\n     * being cached.\n     */\n    public isCachingNodeSequence(key: string): boolean {\n        let node: Node = this.getNode(key);\n\n        return node.sequenceKey in this._cachingSequences$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if the sequence is\n     * being cached.\n     */\n    public isCachingSequence(sequenceKey: string): boolean {\n        return sequenceKey in this._cachingSequences$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching sequence nodes.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if the sequence nodes are\n     * being cached.\n     */\n    public isCachingSequenceNodes(sequenceKey: string): boolean {\n        return sequenceKey in this._cachingSequenceNodes$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching the tiles\n     * required for calculating spatial edges of a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the tiles of\n     * a node are being cached.\n     */\n    public isCachingTiles(key: string): boolean {\n        return key in this._requiredNodeTiles &&\n            this._requiredNodeTiles[key].cache.length === 0 &&\n            this._requiredNodeTiles[key].caching.length > 0;\n    }\n\n    /**\n     * Get a value indicating if the cache has been initialized\n     * for a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the cache has been\n     * initialized for a node.\n     */\n    public hasInitializedCache(key: string): boolean {\n        return key in this._cachedNodes;\n    }\n\n    /**\n     * Get a value indicating if a node exist in the graph.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if a node exist in the graph.\n     */\n    public hasNode(key: string): boolean {\n        let accessed: number = new Date().getTime();\n\n        this._updateCachedNodeAccess(key, accessed);\n        this._updateCachedTileAccess(key, accessed);\n\n        return key in this._nodes;\n    }\n\n    /**\n     * Get a value indicating if a node sequence exist in the graph.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if a node sequence exist\n     * in the graph.\n     */\n    public hasNodeSequence(key: string): boolean {\n        let node: Node = this.getNode(key);\n        let sequenceKey: string = node.sequenceKey;\n\n        let hasNodeSequence: boolean = sequenceKey in this._sequences;\n\n        if (hasNodeSequence) {\n            this._sequences[sequenceKey].accessed = new Date().getTime();\n        }\n\n        return hasNodeSequence;\n    }\n\n    /**\n     * Get a value indicating if a sequence exist in the graph.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if a sequence exist\n     * in the graph.\n     */\n    public hasSequence(sequenceKey: string): boolean {\n        let hasSequence: boolean = sequenceKey in this._sequences;\n\n        if (hasSequence) {\n            this._sequences[sequenceKey].accessed = new Date().getTime();\n        }\n\n        return hasSequence;\n    }\n\n    /**\n     * Get a value indicating if sequence nodes has been cached in the graph.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if a sequence nodes has been\n     * cached in the graph.\n     */\n    public hasSequenceNodes(sequenceKey: string): boolean {\n        return sequenceKey in this._cachedSequenceNodes;\n    }\n\n    /**\n     * Get a value indicating if the graph has fully cached\n     * all nodes in the spatial area of a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the spatial area\n     * of a node has been cached.\n     */\n    public hasSpatialArea(key: string): boolean {\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Spatial area nodes cannot be determined if node not in graph (${key}).`);\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            return true;\n        }\n\n        if (key in this._requiredSpatialArea) {\n            return Object.keys(this._requiredSpatialArea[key].cacheNodes).length === 0;\n        }\n\n        let node: Node = this.getNode(key);\n        let bbox: [ILatLon, ILatLon] = this._graphCalculator.boundingBoxCorners(node.latLon, this._tileThreshold);\n\n        let spatialItems: NodeIndexItem[] = this._nodeIndex.search({\n            maxX: bbox[1].lat,\n            maxY: bbox[1].lon,\n            minX: bbox[0].lat,\n            minY: bbox[0].lon,\n        });\n\n        let spatialNodes: SpatialArea = {\n            all: {},\n            cacheKeys: [],\n            cacheNodes: {},\n        };\n\n        for (let spatialItem of spatialItems) {\n            spatialNodes.all[spatialItem.node.key] = spatialItem.node;\n\n            if (!spatialItem.node.full) {\n                spatialNodes.cacheKeys.push(spatialItem.node.key);\n                spatialNodes.cacheNodes[spatialItem.node.key] = spatialItem.node;\n            }\n        }\n\n        this._requiredSpatialArea[key] = spatialNodes;\n\n        return spatialNodes.cacheKeys.length === 0;\n    }\n\n    /**\n     * Get a value indicating if the graph has a tiles required\n     * for a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the the tiles required\n     * by a node has been cached.\n     */\n    public hasTiles(key: string): boolean {\n        if (key in this._cachedNodeTiles) {\n            return true;\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            return true;\n        }\n\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Node does not exist in graph (${key}).`);\n        }\n\n        let nodeTiles: NodeTiles = { cache: [], caching: [] };\n\n        if (!(key in this._requiredNodeTiles)) {\n            let node: Node = this.getNode(key);\n            nodeTiles.cache = this._graphCalculator\n                .encodeHs(\n                    node.latLon,\n                    this._tilePrecision,\n                    this._tileThreshold)\n                .filter(\n                    (h: string): boolean => {\n                        return !(h in this._cachedTiles);\n                    });\n\n            if (nodeTiles.cache.length > 0) {\n                this._requiredNodeTiles[key] = nodeTiles;\n            }\n        } else {\n            nodeTiles = this._requiredNodeTiles[key];\n        }\n\n        return nodeTiles.cache.length === 0 && nodeTiles.caching.length === 0;\n    }\n\n    /**\n     * Get a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {Node} Retrieved node.\n     */\n    public getNode(key: string): Node {\n        let accessed: number = new Date().getTime();\n\n        this._updateCachedNodeAccess(key, accessed);\n        this._updateCachedTileAccess(key, accessed);\n\n        return this._nodes[key];\n    }\n\n    /**\n     * Get a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {Node} Retrieved sequence.\n     */\n    public getSequence(sequenceKey: string): Sequence {\n        let sequenceAccess: SequenceAccess = this._sequences[sequenceKey];\n        sequenceAccess.accessed = new Date().getTime();\n\n        return sequenceAccess.sequence;\n    }\n\n    /**\n     * Reset all spatial edges of the graph nodes.\n     */\n    public resetSpatialEdges(): void {\n        let cachedKeys: string[] = Object.keys(this._cachedSpatialEdges);\n\n        for (let cachedKey of cachedKeys) {\n            let node: Node = this._cachedSpatialEdges[cachedKey];\n            node.resetSpatialEdges();\n\n            delete this._cachedSpatialEdges[cachedKey];\n        }\n    }\n\n    /**\n     * Reset the complete graph but keep the nodes corresponding\n     * to the supplied keys. All other nodes will be disposed.\n     *\n     * @param {Array<string>} keepKeys - Keys for nodes to keep\n     * in graph after reset.\n     */\n    public reset(keepKeys: string[]): void {\n        const nodes: Node[] = [];\n        for (const key of keepKeys) {\n            if (!this.hasNode(key)) {\n                throw new Error(`Node does not exist ${key}`);\n            }\n\n            const node: Node = this.getNode(key);\n            node.resetSequenceEdges();\n            node.resetSpatialEdges();\n            nodes.push(node);\n        }\n\n        for (let cachedKey of Object.keys(this._cachedNodes)) {\n            if (keepKeys.indexOf(cachedKey) !== -1) {\n                continue;\n            }\n\n            this._cachedNodes[cachedKey].node.dispose();\n            delete this._cachedNodes[cachedKey];\n        }\n\n        this._cachedNodeTiles = {};\n        this._cachedSpatialEdges = {};\n        this._cachedTiles = {};\n\n        this._cachingFill$ = {};\n        this._cachingFull$ = {};\n        this._cachingSequences$ = {};\n        this._cachingSpatialArea$ = {};\n        this._cachingTiles$ = {};\n\n        this._nodes = {};\n        this._nodeToTile = {};\n\n        this._preStored = {};\n\n        for (const node of nodes) {\n            this._nodes[node.key] = node;\n\n            const h: string = this._graphCalculator.encodeH(node.originalLatLon, this._tilePrecision);\n            this._preStore(h, node);\n        }\n\n        this._requiredNodeTiles = {};\n        this._requiredSpatialArea = {};\n\n        this._sequences = {};\n\n        this._nodeIndexTiles = {};\n        this._nodeIndex.clear();\n    }\n\n    /**\n     * Set the spatial node filter.\n     *\n     * @param {FilterExpression} filter - Filter expression to be applied\n     * when calculating spatial edges.\n     */\n    public setFilter(filter: FilterExpression): void {\n        this._filter = this._filterCreator.createFilter(filter);\n    }\n\n    /**\n     * Uncache the graph according to the graph configuration.\n     *\n     * @description Uncaches unused tiles, unused nodes and\n     * sequences according to the numbers specified in the\n     * graph configuration. Sequences does not have a direct\n     * reference to either tiles or nodes and may be uncached\n     * even if they are related to the nodes that should be kept.\n     *\n     * @param {Array<string>} keepKeys - Keys of nodes to keep in\n     * graph unrelated to last access. Tiles related to those keys\n     * will also be kept in graph.\n     * @param {string} keepSequenceKey - Optional key of sequence\n     * for which the belonging nodes should not be disposed or\n     * removed from the graph. These nodes may still be uncached if\n     * not specified in keep keys param.\n     */\n    public uncache(keepKeys: string[], keepSequenceKey?: string): void {\n        let keysInUse: { [key: string]: boolean } = {};\n\n        this._addNewKeys(keysInUse, this._cachingFull$);\n        this._addNewKeys(keysInUse, this._cachingFill$);\n        this._addNewKeys(keysInUse, this._cachingSpatialArea$);\n        this._addNewKeys(keysInUse, this._requiredNodeTiles);\n        this._addNewKeys(keysInUse, this._requiredSpatialArea);\n\n        for (let key of keepKeys) {\n            if (key in keysInUse) {\n                continue;\n            }\n\n            keysInUse[key] = true;\n        }\n\n        let keepHs: { [h: string]: boolean } = {};\n        for (let key in keysInUse) {\n            if (!keysInUse.hasOwnProperty(key)) {\n                continue;\n            }\n\n            let node: Node = this._nodes[key];\n\n            let nodeHs: string[] = this._graphCalculator.encodeHs(node.latLon);\n            for (let nodeH of nodeHs) {\n                if (!(nodeH in keepHs)) {\n                    keepHs[nodeH] = true;\n                }\n            }\n        }\n\n        let potentialHs: [string, TileAccess][] = [];\n        for (let h in this._cachedTiles) {\n            if (!this._cachedTiles.hasOwnProperty(h) || h in keepHs) {\n                continue;\n            }\n\n            potentialHs.push([h, this._cachedTiles[h]]);\n        }\n\n        let uncacheHs: string[] = potentialHs\n            .sort(\n                (h1: [string, TileAccess], h2: [string, TileAccess]): number => {\n                    return h2[1].accessed - h1[1].accessed;\n                })\n            .slice(this._configuration.maxUnusedTiles)\n            .map(\n                (h: [string, TileAccess]): string => {\n                    return h[0];\n                });\n\n        for (let uncacheH of uncacheHs) {\n            this._uncacheTile(uncacheH, keepSequenceKey);\n        }\n\n        let potentialPreStored: [NodeAccess, string][] = [];\n        let nonCachedPreStored: [string, string][] = [];\n        for (let h in this._preStored) {\n            if (!this._preStored.hasOwnProperty(h) || h in this._cachingTiles$) {\n                continue;\n            }\n\n            const prestoredNodes: { [key: string]: Node } = this._preStored[h];\n\n            for (let key in prestoredNodes) {\n                if (!prestoredNodes.hasOwnProperty(key) || key in keysInUse) {\n                    continue;\n                }\n\n                if (prestoredNodes[key].sequenceKey === keepSequenceKey) {\n                    continue;\n                }\n\n                if (key in this._cachedNodes) {\n                    potentialPreStored.push([this._cachedNodes[key], h]);\n                } else {\n                    nonCachedPreStored.push([key, h]);\n                }\n            }\n        }\n\n        let uncachePreStored: [string, string][] = potentialPreStored\n            .sort(\n                ([na1, h1]: [NodeAccess, string], [na2, h2]: [NodeAccess, string]): number => {\n                    return na2.accessed - na1.accessed;\n                })\n            .slice(this._configuration.maxUnusedPreStoredNodes)\n            .map(\n                ([na, h]: [NodeAccess, string]): [string, string] => {\n                    return [na.node.key, h];\n                });\n\n        this._uncachePreStored(nonCachedPreStored);\n        this._uncachePreStored(uncachePreStored);\n\n        let potentialNodes: NodeAccess[] = [];\n        for (let key in this._cachedNodes) {\n            if (!this._cachedNodes.hasOwnProperty(key) || key in keysInUse) {\n                continue;\n            }\n\n            potentialNodes.push(this._cachedNodes[key]);\n        }\n\n        let uncacheNodes: NodeAccess[] = potentialNodes\n            .sort(\n                (n1: NodeAccess, n2: NodeAccess): number => {\n                    return n2.accessed - n1.accessed;\n                })\n            .slice(this._configuration.maxUnusedNodes);\n\n        for (let nodeAccess of uncacheNodes) {\n            nodeAccess.node.uncache();\n            let key: string = nodeAccess.node.key;\n            delete this._cachedNodes[key];\n\n            if (key in this._cachedNodeTiles) {\n                delete this._cachedNodeTiles[key];\n            }\n\n            if (key in this._cachedSpatialEdges) {\n                delete this._cachedSpatialEdges[key];\n            }\n        }\n\n        let potentialSequences: SequenceAccess[] = [];\n        for (let sequenceKey in this._sequences) {\n            if (!this._sequences.hasOwnProperty(sequenceKey) ||\n                sequenceKey in this._cachingSequences$ ||\n                sequenceKey === keepSequenceKey) {\n                continue;\n            }\n\n            potentialSequences.push(this._sequences[sequenceKey]);\n        }\n\n        let uncacheSequences: SequenceAccess[] = potentialSequences\n            .sort(\n                (s1: SequenceAccess, s2: SequenceAccess): number => {\n                    return s2.accessed - s1.accessed;\n                })\n            .slice(this._configuration.maxSequences);\n\n        for (let sequenceAccess of uncacheSequences) {\n            let sequenceKey: string = sequenceAccess.sequence.key;\n\n            delete this._sequences[sequenceKey];\n\n            if (sequenceKey in this._cachedSequenceNodes) {\n                delete this._cachedSequenceNodes[sequenceKey];\n            }\n\n            sequenceAccess.sequence.dispose();\n        }\n    }\n\n    private _addNewKeys<T>(keys: { [key: string]: boolean }, dict: { [key: string]: T }): void {\n        for (let key in dict) {\n            if (!dict.hasOwnProperty(key) || !this.hasNode(key)) {\n                continue;\n            }\n\n            if (!(key in keys)) {\n                keys[key] = true;\n            }\n        }\n    }\n\n    private _cacheSequence$(sequenceKey: string): Observable<Graph> {\n        if (sequenceKey in this._cachingSequences$) {\n            return this._cachingSequences$[sequenceKey];\n        }\n\n        this._cachingSequences$[sequenceKey] = this._apiV3.sequenceByKey$([sequenceKey]).pipe(\n            tap(\n                (sequenceByKey: { [sequenceKey: string]: ISequence }): void => {\n                    if (!(sequenceKey in this._sequences)) {\n                        this._sequences[sequenceKey] = {\n                            accessed: new Date().getTime(),\n                            sequence: new Sequence(sequenceByKey[sequenceKey]),\n                        };\n                    }\n\n                    delete this._cachingSequences$[sequenceKey];\n                }),\n            map(\n                (sequenceByKey: { [sequenceKey: string]: ISequence }): Graph => {\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    if (sequenceKey in this._cachingSequences$) {\n                        delete this._cachingSequences$[sequenceKey];\n                    }\n\n                    this._changed$.next(this);\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingSequences$[sequenceKey];\n    }\n\n    private _cacheTile$(h: string): Observable<Graph> {\n        this._cachingTiles$[h] = this._apiV3.imagesByH$([h]).pipe(\n            tap(\n                (imagesByH: { [key: string]: { [index: string]: ICoreNode } }): void => {\n                    let coreNodes: { [index: string]: ICoreNode } = imagesByH[h];\n\n                    if (h in this._cachedTiles) {\n                        return;\n                    }\n\n                    this._nodeIndexTiles[h] = [];\n                    this._cachedTiles[h] = { accessed: new Date().getTime(), nodes: [] };\n                    let hCache: Node[] = this._cachedTiles[h].nodes;\n                    let preStored: { [key: string]: Node } = this._removeFromPreStore(h);\n\n                    for (let index in coreNodes) {\n                        if (!coreNodes.hasOwnProperty(index)) {\n                            continue;\n                        }\n\n                        let coreNode: ICoreNode = coreNodes[index];\n\n                        if (coreNode == null) {\n                            break;\n                        }\n\n                        if (coreNode.sequence_key == null) {\n                            console.warn(`Sequence missing, discarding node (${coreNode.key})`);\n\n                            continue;\n                        }\n\n                        if (preStored != null && coreNode.key in preStored) {\n                            let preStoredNode: Node = preStored[coreNode.key];\n                            delete preStored[coreNode.key];\n\n                            hCache.push(preStoredNode);\n\n                            let preStoredNodeIndexItem: NodeIndexItem = {\n                                lat: preStoredNode.latLon.lat,\n                                lon: preStoredNode.latLon.lon,\n                                node: preStoredNode,\n                            };\n\n                            this._nodeIndex.insert(preStoredNodeIndexItem);\n                            this._nodeIndexTiles[h].push(preStoredNodeIndexItem);\n                            this._nodeToTile[preStoredNode.key] = h;\n\n                            continue;\n                        }\n\n                        let node: Node = new Node(coreNode);\n\n                        hCache.push(node);\n\n                        let nodeIndexItem: NodeIndexItem = {\n                            lat: node.latLon.lat,\n                            lon: node.latLon.lon,\n                            node: node,\n                        };\n\n                        this._nodeIndex.insert(nodeIndexItem);\n                        this._nodeIndexTiles[h].push(nodeIndexItem);\n                        this._nodeToTile[node.key] = h;\n\n                        this._setNode(node);\n                    }\n\n                    delete this._cachingTiles$[h];\n                }),\n            map(\n                (imagesByH: { [key: string]: { [index: string]: ICoreNode } }): Graph => {\n                    return this;\n                }),\n            catchError(\n                (error: Error): Observable<Graph> => {\n                    delete this._cachingTiles$[h];\n\n                    throw error;\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingTiles$[h];\n    }\n\n    private _makeFull(node: Node, fillNode: IFillNode): void {\n        if (fillNode.calt == null) {\n            fillNode.calt = this._defaultAlt;\n        }\n\n        if (fillNode.c_rotation == null) {\n            fillNode.c_rotation = this._graphCalculator.rotationFromCompass(fillNode.ca, fillNode.orientation);\n        }\n\n        node.makeFull(fillNode);\n    }\n\n    private _preStore(h: string, node: Node): void {\n        if (!(h in this._preStored)) {\n            this._preStored[h] = {};\n        }\n\n        this._preStored[h][node.key] = node;\n    }\n\n    private _removeFromPreStore(h: string): { [key: string]: Node } {\n        let preStored: { [key: string]: Node } = null;\n\n        if (h in this._preStored) {\n            preStored = this._preStored[h];\n            delete this._preStored[h];\n        }\n\n        return preStored;\n    }\n\n    private _setNode(node: Node): void {\n        let key: string = node.key;\n\n        if (this.hasNode(key)) {\n            throw new GraphMapillaryError(`Node already exist (${key}).`);\n        }\n\n        this._nodes[key] = node;\n    }\n\n    private _uncacheTile(h: string, keepSequenceKey: string): void {\n        for (let node of this._cachedTiles[h].nodes) {\n            let key: string = node.key;\n\n            delete this._nodeToTile[key];\n\n            if (key in this._cachedNodes) {\n                delete this._cachedNodes[key];\n            }\n\n            if (key in this._cachedNodeTiles) {\n                delete this._cachedNodeTiles[key];\n            }\n\n            if (key in this._cachedSpatialEdges) {\n                delete this._cachedSpatialEdges[key];\n            }\n\n            if (node.sequenceKey === keepSequenceKey) {\n                this._preStore(h, node);\n                node.uncache();\n            } else {\n                delete this._nodes[key];\n\n                if (node.sequenceKey in this._cachedSequenceNodes) {\n                    delete this._cachedSequenceNodes[node.sequenceKey];\n                }\n\n                node.dispose();\n            }\n        }\n\n        for (let nodeIndexItem of this._nodeIndexTiles[h]) {\n            this._nodeIndex.remove(nodeIndexItem);\n        }\n\n        delete this._nodeIndexTiles[h];\n        delete this._cachedTiles[h];\n    }\n\n    private _uncachePreStored(preStored: [string, string][]): void {\n        let hs: { [h: string]: boolean } = {};\n        for (let [key, h] of preStored) {\n            if (key in this._nodes) {\n                delete this._nodes[key];\n            }\n\n            if (key in this._cachedNodes) {\n                delete this._cachedNodes[key];\n            }\n\n            let node: Node = this._preStored[h][key];\n\n            if (node.sequenceKey in this._cachedSequenceNodes) {\n                delete this._cachedSequenceNodes[node.sequenceKey];\n            }\n\n            delete this._preStored[h][key];\n\n            node.dispose();\n\n            hs[h] = true;\n        }\n\n        for (let h in hs) {\n            if (!hs.hasOwnProperty(h)) {\n                continue;\n            }\n\n            if (Object.keys(this._preStored[h]).length === 0) {\n                delete this._preStored[h];\n            }\n        }\n    }\n\n    private _updateCachedTileAccess(key: string, accessed: number): void {\n        if (key in this._nodeToTile) {\n            this._cachedTiles[this._nodeToTile[key]].accessed = accessed;\n        }\n    }\n\n    private _updateCachedNodeAccess(key: string, accessed: number): void {\n        if (key in this._cachedNodes) {\n            this._cachedNodes[key].accessed = accessed;\n        }\n    }\n}\n\nexport default Graph;\n",
     "import {\n    concat as observableConcat,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    first,\n    expand,\n    map,\n    last,\n    mergeMap,\n    startWith,\n    publishReplay,\n    refCount,\n    catchError,\n    finalize,\n    tap,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    FilterExpression,\n    Graph,\n    GraphMode,\n    ImageLoadingService,\n    Node,\n    Sequence,\n} from \"../Graph\";\n\n/**\n * @class GraphService\n *\n * @classdesc Represents a service for graph operations.\n */\nexport class GraphService {\n    private _graph$: Observable<Graph>;\n    private _graphMode: GraphMode;\n    private _graphMode$: Observable<GraphMode>;\n    private _graphModeSubject$: Subject<GraphMode>;\n\n    private _imageLoadingService: ImageLoadingService;\n\n    private _firstGraphSubjects$: Subject<Graph>[];\n\n    private _initializeCacheSubscriptions: Subscription[];\n    private _sequenceSubscriptions: Subscription[];\n    private _spatialSubscriptions: Subscription[];\n\n    /**\n     * Create a new graph service instance.\n     *\n     * @param {Graph} graph - Graph instance to be operated on.\n     */\n    constructor(graph: Graph, imageLoadingService: ImageLoadingService) {\n        this._graph$ = observableConcat(\n                observableOf(graph),\n                graph.changed$).pipe(\n            publishReplay(1),\n            refCount());\n\n        this._graph$.subscribe(() => { /*noop*/ });\n\n        this._graphMode = GraphMode.Spatial;\n        this._graphModeSubject$ = new Subject<GraphMode>();\n        this._graphMode$ = this._graphModeSubject$.pipe(\n            startWith(this._graphMode),\n            publishReplay(1),\n            refCount());\n\n        this._graphMode$.subscribe(() => { /*noop*/ });\n\n        this._imageLoadingService = imageLoadingService;\n\n        this._firstGraphSubjects$ = [];\n\n        this._initializeCacheSubscriptions = [];\n        this._sequenceSubscriptions = [];\n        this._spatialSubscriptions = [];\n    }\n\n    /**\n     * Get graph mode observable.\n     *\n     * @description Emits the current graph mode.\n     *\n     * @returns {Observable<GraphMode>} Observable\n     * emitting the current graph mode when it changes.\n     */\n    public get graphMode$(): Observable<GraphMode> {\n        return this._graphMode$;\n    }\n\n    /**\n     * Cache full nodes in a bounding box.\n     *\n     * @description When called, the full properties of\n     * the node are retrieved. The node cache is not initialized\n     * for any new nodes retrieved and the node assets are not\n     * retrieved, {@link cacheNode$} needs to be called for caching\n     * assets.\n     *\n     * @param {ILatLon} sw - South west corner of bounding box.\n     * @param {ILatLon} ne - North east corner of bounding box.\n     * @return {Observable<Array<Node>>} Observable emitting a single item,\n     * the nodes of the bounding box, when they have all been retrieved.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheBoundingBox$(sw: ILatLon, ne: ILatLon): Observable<Node[]> {\n        return this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Node[]> => {\n                    return graph.cacheBoundingBox$(sw, ne);\n                }));\n    }\n\n    /**\n     * Cache a node in the graph and retrieve it.\n     *\n     * @description When called, the full properties of\n     * the node are retrieved and the node cache is initialized.\n     * After that the node assets are cached and the node\n     * is emitted to the observable when.\n     * In parallel to caching the node assets, the sequence and\n     * spatial edges of the node are cached. For this, the sequence\n     * of the node and the required tiles and spatial nodes are\n     * retrieved. The sequence and spatial edges may be set before\n     * or after the node is returned.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @return {Observable<Node>} Observable emitting a single item,\n     * the node, when it has been retrieved and its assets are cached.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheNode$(key: string): Observable<Node> {\n        const firstGraphSubject$: Subject<Graph> = new Subject<Graph>();\n\n        this._firstGraphSubjects$.push(firstGraphSubject$);\n\n        const firstGraph$: Observable<Graph> = firstGraphSubject$.pipe(\n            publishReplay(1),\n            refCount());\n\n        const node$: Observable<Node> = firstGraph$.pipe(\n            map(\n                (graph: Graph): Node => {\n                    return graph.getNode(key);\n                }),\n            mergeMap(\n                (node: Node): Observable<Node> => {\n                    return node.assetsCached ?\n                        observableOf(node) :\n                        node.cacheAssets$();\n                }),\n            publishReplay(1),\n            refCount());\n\n        node$.subscribe(\n            (node: Node): void => {\n                this._imageLoadingService.loadnode$.next(node);\n            },\n            (error: Error): void => {\n                console.error(`Failed to cache node (${key})`, error);\n            });\n\n        const initializeCacheSubscription: Subscription = this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingFull(key) || !graph.hasNode(key)) {\n                        return graph.cacheFull$(key);\n                    }\n\n                    if (graph.isCachingFill(key) || !graph.getNode(key).full) {\n                        return graph.cacheFill$(key);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            tap(\n                (graph: Graph): void => {\n                    if (!graph.hasInitializedCache(key)) {\n                        graph.initializeCache(key);\n                    }\n                }),\n            finalize(\n                (): void => {\n                    if (initializeCacheSubscription == null) {\n                        return;\n                    }\n\n                    this._removeFromArray(initializeCacheSubscription, this._initializeCacheSubscriptions);\n                    this._removeFromArray(firstGraphSubject$, this._firstGraphSubjects$);\n                }))\n            .subscribe(\n                (graph: Graph): void => {\n                    firstGraphSubject$.next(graph);\n                    firstGraphSubject$.complete();\n                },\n                (error: Error): void => {\n                    firstGraphSubject$.error(error);\n                });\n\n        if (!initializeCacheSubscription.closed) {\n            this._initializeCacheSubscriptions.push(initializeCacheSubscription);\n        }\n\n        const graphSequence$: Observable<Graph> = firstGraph$.pipe(\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingNodeSequence(key) || !graph.hasNodeSequence(key)) {\n                        return graph.cacheNodeSequence$(key);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequenceSubscription: Subscription = graphSequence$.pipe(\n            tap(\n                (graph: Graph): void => {\n                    if (!graph.getNode(key).sequenceEdges.cached) {\n                        graph.cacheSequenceEdges(key);\n                    }\n                }),\n            finalize(\n                (): void => {\n                    if (sequenceSubscription == null) {\n                        return;\n                    }\n\n                    this._removeFromArray(sequenceSubscription, this._sequenceSubscriptions);\n                }))\n            .subscribe(\n                (graph: Graph): void => { return; },\n                (error: Error): void => {\n                    console.error(`Failed to cache sequence edges (${key}).`, error);\n                });\n\n        if (!sequenceSubscription.closed) {\n            this._sequenceSubscriptions.push(sequenceSubscription);\n        }\n\n        if (this._graphMode === GraphMode.Spatial) {\n            const spatialSubscription: Subscription = firstGraph$.pipe(\n                expand(\n                    (graph: Graph): Observable<Graph> => {\n                        if (graph.hasTiles(key)) {\n                            return observableEmpty();\n                        }\n\n                        return observableFrom<Observable<Graph>>(graph.cacheTiles$(key)).pipe(\n                            mergeMap(\n                                (graph$: Observable<Graph>): Observable<Graph> => {\n                                    return graph$.pipe(\n                                        mergeMap(\n                                            (g: Graph): Observable<Graph> => {\n                                                if (g.isCachingTiles(key)) {\n                                                    return observableEmpty();\n                                                }\n\n                                                return observableOf<Graph>(g);\n                                            }),\n                                        catchError(\n                                            (error: Error, caught$: Observable<Graph>): Observable<Graph> => {\n                                                console.error(`Failed to cache tile data (${key}).`, error);\n\n                                                return observableEmpty();\n                                            }));\n                                }));\n                    }),\n                last(),\n                mergeMap(\n                    (graph: Graph): Observable<Graph> => {\n                        if (graph.hasSpatialArea(key)) {\n                            return observableOf<Graph>(graph);\n                        }\n\n                        return observableFrom<Observable<Graph>>(graph.cacheSpatialArea$(key)).pipe(\n                            mergeMap(\n                                (graph$: Observable<Graph>): Observable<Graph> => {\n                                    return graph$.pipe(\n                                        catchError(\n                                            (error: Error, caught$: Observable<Graph>): Observable<Graph> => {\n                                                console.error(`Failed to cache spatial nodes (${key}).`, error);\n\n                                                return observableEmpty();\n                                            }));\n                                }));\n                    }),\n                last(),\n                mergeMap(\n                    (graph: Graph): Observable<Graph> => {\n                        return graph.hasNodeSequence(key) ?\n                            observableOf<Graph>(graph) :\n                            graph.cacheNodeSequence$(key);\n                    }),\n                tap(\n                    (graph: Graph): void => {\n                        if (!graph.getNode(key).spatialEdges.cached) {\n                            graph.cacheSpatialEdges(key);\n                        }\n                    }),\n                finalize(\n                    (): void => {\n                        if (spatialSubscription == null) {\n                            return;\n                        }\n\n                        this._removeFromArray(spatialSubscription, this._spatialSubscriptions);\n                    }))\n                .subscribe(\n                    (graph: Graph): void => { return; },\n                    (error: Error): void => {\n                        console.error(`Failed to cache spatial edges (${key}).`, error);\n                    });\n\n            if (!spatialSubscription.closed) {\n                this._spatialSubscriptions.push(spatialSubscription);\n            }\n        }\n\n        return node$.pipe(\n            first(\n                (node: Node): boolean => {\n                    return node.assetsCached;\n                }));\n    }\n\n    /**\n     * Cache a sequence in the graph and retrieve it.\n     *\n     * @param {string} sequenceKey - Sequence key.\n     * @returns {Observable<Sequence>} Observable emitting a single item,\n     * the sequence, when it has been retrieved and its assets are cached.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheSequence$(sequenceKey: string): Observable<Sequence> {\n        return this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingSequence(sequenceKey) || !graph.hasSequence(sequenceKey)) {\n                        return graph.cacheSequence$(sequenceKey);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            map(\n                (graph: Graph): Sequence => {\n                    return graph.getSequence(sequenceKey);\n                }));\n    }\n\n    /**\n     * Cache a sequence and its nodes in the graph and retrieve the sequence.\n     *\n     * @description Caches a sequence and its assets are cached and\n     * retrieves all nodes belonging to the sequence. The node assets\n     * or edges will not be cached.\n     *\n     * @param {string} sequenceKey - Sequence key.\n     * @param {string} referenceNodeKey - Key of node to use as reference\n     * for optimized caching.\n     * @returns {Observable<Sequence>} Observable emitting a single item,\n     * the sequence, when it has been retrieved, its assets are cached and\n     * all nodes belonging to the sequence has been retrieved.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheSequenceNodes$(sequenceKey: string, referenceNodeKey?: string): Observable<Sequence> {\n        return this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingSequence(sequenceKey) || !graph.hasSequence(sequenceKey)) {\n                        return graph.cacheSequence$(sequenceKey);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingSequenceNodes(sequenceKey) || !graph.hasSequenceNodes(sequenceKey)) {\n                        return graph.cacheSequenceNodes$(sequenceKey, referenceNodeKey);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            map(\n                (graph: Graph): Sequence => {\n                    return graph.getSequence(sequenceKey);\n                }));\n    }\n\n    /**\n     * Set a spatial edge filter on the graph.\n     *\n     * @description Resets the spatial edges of all cached nodes.\n     *\n     * @param {FilterExpression} filter - Filter expression to be applied.\n     * @return {Observable<Graph>} Observable emitting a single item,\n     * the graph, when the spatial edges have been reset.\n     */\n    public setFilter$(filter: FilterExpression): Observable<void> {\n        this._resetSubscriptions(this._spatialSubscriptions);\n\n        return this._graph$.pipe(\n            first(),\n            tap(\n                (graph: Graph): void => {\n                    graph.resetSpatialEdges();\n                    graph.setFilter(filter);\n                }),\n            map(\n                (graph: Graph): void => {\n                    return undefined;\n                }));\n    }\n\n    /**\n     * Set the graph mode.\n     *\n     * @description If graph mode is set to spatial, caching\n     * is performed with emphasis on spatial edges. If graph\n     * mode is set to sequence no tile data is requested and\n     * no spatial edges are computed.\n     *\n     * When setting graph mode to sequence all spatial\n     * subscriptions are aborted.\n     *\n     * @param {GraphMode} mode - Graph mode to set.\n     */\n    public setGraphMode(mode: GraphMode): void {\n        if (this._graphMode === mode) {\n            return;\n        }\n\n        if (mode === GraphMode.Sequence) {\n            this._resetSubscriptions(this._spatialSubscriptions);\n        }\n\n        this._graphMode = mode;\n        this._graphModeSubject$.next(this._graphMode);\n    }\n\n    /**\n     * Reset the graph.\n     *\n     * @description Resets the graph but keeps the nodes of the\n     * supplied keys.\n     *\n     * @param {Array<string>} keepKeys - Keys of nodes to keep in graph.\n     * @return {Observable<Node>} Observable emitting a single item,\n     * the graph, when it has been reset.\n     */\n    public reset$(keepKeys: string[]): Observable<void> {\n        this._abortSubjects(this._firstGraphSubjects$);\n        this._resetSubscriptions(this._initializeCacheSubscriptions);\n        this._resetSubscriptions(this._sequenceSubscriptions);\n        this._resetSubscriptions(this._spatialSubscriptions);\n\n        return this._graph$.pipe(\n            first(),\n            tap(\n                (graph: Graph): void => {\n                    graph.reset(keepKeys);\n                }),\n            map(\n                (graph: Graph): void => {\n                    return undefined;\n                }));\n    }\n\n    /**\n     * Uncache the graph.\n     *\n     * @description Uncaches the graph by removing tiles, nodes and\n     * sequences. Keeps the nodes of the supplied keys and the tiles\n     * related to those nodes.\n     *\n     * @param {Array<string>} keepKeys - Keys of nodes to keep in graph.\n     * @param {string} keepSequenceKey - Optional key of sequence\n     * for which the belonging nodes should not be disposed or\n     * removed from the graph. These nodes may still be uncached if\n     * not specified in keep keys param.\n     * @return {Observable<Graph>} Observable emitting a single item,\n     * the graph, when the graph has been uncached.\n     */\n    public uncache$(keepKeys: string[], keepSequenceKey?: string): Observable<void> {\n        return this._graph$.pipe(\n            first(),\n            tap(\n                (graph: Graph): void => {\n                    graph.uncache(keepKeys, keepSequenceKey);\n                }),\n            map(\n                (graph: Graph): void => {\n                    return undefined;\n                }));\n    }\n\n    private _abortSubjects<T>(subjects: Subject<T>[]): void {\n        for (const subject of subjects.slice()) {\n            this._removeFromArray(subject, subjects);\n\n            subject.error(new Error(\"Cache node request was aborted.\"));\n        }\n    }\n\n    private _removeFromArray<T>(object: T, objects: T[]): void {\n        const index: number = objects.indexOf(object);\n        if (index !== -1) {\n            objects.splice(index, 1);\n        }\n    }\n\n    private _resetSubscriptions(subscriptions: Subscription[]): void {\n        for (const subscription of subscriptions.slice()) {\n            this._removeFromArray(subscription, subscriptions);\n\n            if (!subscription.closed) {\n                subscription.unsubscribe();\n            }\n        }\n    }\n}\n\nexport default GraphService;\n",
     "import {refCount, publishReplay, map, filter, scan} from \"rxjs/operators\";\nimport {Subject, Observable} from \"rxjs\";\n\nimport {ILoadStatus, Node} from \"../Graph\";\n\ntype LoadStatus = [{ [key: string]: ILoadStatus }, boolean];\n\nexport class ImageLoadingService {\n    private _loadnode$: Subject<Node> = new Subject<Node>();\n    private _loadstatus$: Observable<{[key: string]: ILoadStatus}>;\n\n    constructor () {\n        this._loadstatus$ = this._loadnode$.pipe(\n            scan<Node, LoadStatus>(\n                ([nodes]: LoadStatus, node: Node): [{[key: string]: ILoadStatus}, boolean] => {\n                    let changed: boolean = false;\n                    if (node.loadStatus.total === 0 || node.loadStatus.loaded === node.loadStatus.total) {\n                        if (node.key in nodes) {\n                            delete nodes[node.key];\n                            changed = true;\n                        }\n                    } else {\n                        nodes[node.key] = node.loadStatus;\n                        changed = true;\n                    }\n\n                    return [nodes, changed];\n                },\n                [{}, false]),\n            filter(\n                ([nodes, changed]: [{[key: string]: ILoadStatus}, boolean]): boolean => {\n                    return changed;\n                }),\n            map(\n                ([nodes]: [{[key: string]: ILoadStatus}, boolean]): {[key: string]: ILoadStatus} => {\n                    return nodes;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._loadstatus$.subscribe(() => { /*noop*/ });\n    }\n\n    public get loadnode$(): Subject<Node> {\n        return this._loadnode$;\n    }\n\n    public get loadstatus$(): Observable<{[key: string]: ILoadStatus}> {\n        return this._loadstatus$;\n    }\n}\n",
     "import * as Pbf from \"pbf\";\n\nimport {IMesh} from \"../Graph\";\n\nexport class MeshReader {\n    public static read(buffer: Buffer): IMesh {\n        let pbf: Pbf<IMesh> = new Pbf<IMesh>(buffer);\n\n        return pbf.readFields(MeshReader._readMeshField, { faces: [], vertices: [] });\n    }\n\n    private static _readMeshField(tag: number, mesh: IMesh, pbf: Pbf<IMesh>): void {\n        if (tag === 1) {\n            mesh.vertices.push(pbf.readFloat());\n        } else if (tag === 2) {\n            mesh.faces.push(pbf.readVarint());\n        }\n    }\n}\n",
-    "import {map} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IGPano,\n    ILatLon,\n} from \"../API\";\nimport {IEdge} from \"../Edge\";\nimport {\n    IEdgeStatus,\n    IMesh,\n    ILoadStatus,\n    NodeCache,\n} from \"../Graph\";\nimport {ImageSize} from \"../Viewer\";\n\n/**\n * @class Node\n *\n * @classdesc Represents a node in the navigation graph.\n *\n * Explanation of position and bearing properties:\n *\n * When images are uploaded they will have GPS information in the EXIF, this is what\n * is called `originalLatLon` {@link Node.originalLatLon}.\n *\n * When Structure from Motions has been run for a node a `computedLatLon` that\n * differs from the `originalLatLon` will be created. It is different because\n * GPS positions are not very exact and SfM aligns the camera positions according\n * to the 3D reconstruction {@link Node.computedLatLon}.\n *\n * At last there exist a `latLon` property which evaluates to\n * the `computedLatLon` from SfM if it exists but falls back\n * to the `originalLatLon` from the EXIF GPS otherwise {@link Node.latLon}.\n *\n * Everything that is done in in the Viewer is based on the SfM positions,\n * i.e. `computedLatLon`. That is why the smooth transitions go in the right\n * direction (nd not in strange directions because of bad GPS).\n *\n * E.g. when placing a marker in the Viewer it is relative to the SfM\n * position i.e. the `computedLatLon`.\n *\n * The same concept as above also applies to the compass angle (or bearing) properties\n * `originalCa`, `computedCa` and `ca`.\n */\nexport class Node {\n    private _cache: NodeCache;\n    private _core: ICoreNode;\n    private _fill: IFillNode;\n\n    /**\n     * Create a new node instance.\n     *\n     * @description Nodes are always created internally by the library.\n     * Nodes can not be added to the library through any API method.\n     *\n     * @param {ICoreNode} coreNode - Raw core node data.\n     * @ignore\n     */\n    constructor(core: ICoreNode) {\n        this._cache = null;\n        this._core = core;\n        this._fill = null;\n    }\n\n    /**\n     * Get assets cached.\n     *\n     * @description The assets that need to be cached for this property\n     * to report true are the following: fill properties, image and mesh.\n     * The library ensures that the current node will always have the\n     * assets cached.\n     *\n     * @returns {boolean} Value indicating whether all assets have been\n     * cached.\n     *\n     * @ignore\n     */\n    public get assetsCached(): boolean {\n        return this._core != null &&\n            this._fill != null &&\n            this._cache != null &&\n            this._cache.image != null &&\n            this._cache.mesh != null;\n    }\n\n    /**\n     * Get alt.\n     *\n     * @description If SfM has not been run the computed altitude is\n     * set to a default value of two meters.\n     *\n     * @returns {number} Altitude, in meters.\n     */\n    public get alt(): number {\n        return this._fill.calt;\n    }\n\n    /**\n     * Get ca.\n     *\n     * @description If the SfM computed compass angle exists it will\n     * be returned, otherwise the original EXIF compass angle.\n     *\n     * @returns {number} Compass angle, measured in degrees\n     * clockwise with respect to north.\n     */\n    public get ca(): number {\n        return this._fill.cca != null ? this._fill.cca : this._fill.ca;\n    }\n\n    /**\n     * Get capturedAt.\n     *\n     * @returns {number} Timestamp when the image was captured.\n     */\n    public get capturedAt(): number {\n        return this._fill.captured_at;\n    }\n\n    /**\n     * Get camera uuid.\n     *\n     * @description Will be undefined if the camera uuid was not\n     * recorded in the image exif information.\n     *\n     * @returns {string} Universally unique id for camera used\n     * when capturing image.\n     */\n    public get cameraUuid(): string {\n        return this._fill.captured_with_camera_uuid;\n    }\n\n    /**\n     * Get ck1.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k1.\n     */\n    public get ck1(): number {\n        return this._fill.ck1;\n    }\n\n    /**\n     * Get ck2.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k2.\n     */\n    public get ck2(): number {\n        return this._fill.ck2;\n    }\n\n    /**\n     * Get computedCA.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed compass angle, measured\n     * in degrees clockwise with respect to north.\n     */\n    public get computedCA(): number {\n        return this._fill.cca;\n    }\n\n    /**\n     * Get computedLatLon.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {ILatLon} SfM computed latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get computedLatLon(): ILatLon {\n        return this._core.cl;\n    }\n\n    /**\n     * Get focal.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed focal length.\n     */\n    public get focal(): number {\n        return this._fill.cfocal;\n    }\n\n    /**\n     * Get full.\n     *\n     * @description The library ensures that the current node will\n     * always be full.\n     *\n     * @returns {boolean} Value indicating whether the node has all\n     * properties filled.\n     *\n     * @ignore\n     */\n    public get full(): boolean {\n        return this._fill != null;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.CroppedAreaLeftPixels === 0 &&\n            this._fill.gpano.CroppedAreaTopPixels === 0 &&\n            this._fill.gpano.CroppedAreaImageWidthPixels === this._fill.gpano.FullPanoWidthPixels &&\n            this._fill.gpano.CroppedAreaImageHeightPixels === this._fill.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     *\n     * @description Will not be set for non panoramic images.\n     *\n     * @returns {IGPano} Panorama information for panorama images.\n     */\n    public get gpano(): IGPano {\n        return this._fill.gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @returns {number} Height of original image, not adjusted\n     * for orientation.\n     */\n    public get height(): number {\n        return this._fill.height;\n    }\n\n    /**\n     * Get image.\n     *\n     * @description The image will always be set on the current node.\n     *\n     * @returns {HTMLImageElement} Cached image element of the node.\n     */\n    public get image(): HTMLImageElement {\n        return this._cache.image;\n    }\n\n    /**\n     * Get image$.\n     *\n     * @returns {Observable<HTMLImageElement>} Observable emitting\n     * the cached image when it is updated.\n     *\n     * @ignore\n     */\n    public get image$(): Observable<HTMLImageElement> {\n        return this._cache.image$;\n    }\n\n    /**\n     * Get key.\n     *\n     * @returns {string} Unique key of the node.\n     */\n    public get key(): string {\n        return this._core.key;\n    }\n\n    /**\n     * Get latLon.\n     *\n     * @description If the SfM computed latitude longitude exist\n     * it will be returned, otherwise the original EXIF latitude\n     * longitude.\n     *\n     * @returns {ILatLon} Latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get latLon(): ILatLon {\n        return this._core.cl != null ? this._core.cl : this._core.l;\n    }\n\n    /**\n     * Get loadStatus.\n     *\n     * @returns {ILoadStatus} Value indicating the load status\n     * of the mesh and image.\n     */\n    public get loadStatus(): ILoadStatus {\n        return this._cache.loadStatus;\n    }\n\n    /**\n     * Get merged.\n     *\n     * @returns {boolean} Value indicating whether SfM has been\n     * run on the node and the node has been merged into a\n     * connected component.\n     */\n    public get merged(): boolean {\n        return this._fill != null &&\n            this._fill.merge_version != null &&\n            this._fill.merge_version > 0;\n    }\n\n    /**\n     * Get mergeCC.\n     *\n     * @description Will not be set if SfM has not yet been run on\n     * node.\n     *\n     * @returns {number} SfM connected component key to which\n     * image belongs.\n     */\n    public get mergeCC(): number {\n        return this._fill.merge_cc;\n    }\n\n    /**\n     * Get mergeVersion.\n     *\n     * @returns {number} Version for which SfM was run and image was merged.\n     */\n    public get mergeVersion(): number {\n        return this._fill.merge_version;\n    }\n\n    /**\n     * Get mesh.\n     *\n     * @description The mesh will always be set on the current node.\n     *\n     * @returns {IMesh} SfM triangulated mesh of reconstructed\n     * atomic 3D points.\n     */\n    public get mesh(): IMesh {\n        return this._cache.mesh;\n    }\n\n    /**\n     * Get organizationKey.\n     *\n     * @returns {string} Unique key of the organization to which\n     * the node belongs. If the node does not belong to an\n     * organization the organization key will be undefined.\n     */\n    public get organizationKey(): string {\n        return this._fill.organization_key;\n    }\n\n    /**\n     * Get orientation.\n     *\n     * @returns {number} EXIF orientation of original image.\n     */\n    public get orientation(): number {\n        return this._fill.orientation;\n    }\n\n    /**\n     * Get originalCA.\n     *\n     * @returns {number} Original EXIF compass angle, measured in\n     * degrees.\n     */\n    public get originalCA(): number {\n        return this._fill.ca;\n    }\n\n    /**\n     * Get originalLatLon.\n     *\n     * @returns {ILatLon} Original EXIF latitude longitude in\n     * WGS84 datum, measured in degrees.\n     */\n    public get originalLatLon(): ILatLon {\n        return this._core.l;\n    }\n\n    /**\n     * Get pano.\n     *\n     * @returns {boolean} Value indicating whether the node is a panorama.\n     * It could be a cropped or full panorama.\n     */\n    public get pano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.FullPanoWidthPixels != null;\n    }\n\n    /**\n     * Get private.\n     *\n     * @returns {boolean} Value specifying if image is accessible to\n     * organization members only or to everyone.\n     */\n    public get private(): boolean {\n        return this._fill.private;\n    }\n\n    /**\n     * Get projectKey.\n     *\n     * @returns {string} Unique key of the project to which\n     * the node belongs. If the node does not belong to a\n     * project the project key will be undefined.\n     *\n     * @deprecated This property will be deprecated in favor\n     * of the organization key and private properties.\n     */\n    public get projectKey(): string {\n        return this._fill.project != null ?\n            this._fill.project.key :\n            null;\n    }\n\n    /**\n     * Get rotation.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {Array<number>} Rotation vector in angle axis representation.\n     */\n    public get rotation(): number[] {\n        return this._fill.c_rotation;\n    }\n\n    /**\n     * Get scale.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} Scale of atomic reconstruction.\n     */\n    public get scale(): number {\n        return this._fill.atomic_scale;\n    }\n\n    /**\n     * Get sequenceKey.\n     *\n     * @returns {string} Unique key of the sequence to which\n     * the node belongs.\n     */\n    public get sequenceKey(): string {\n        return this._core.sequence_key;\n    }\n\n    /**\n     * Get sequenceEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * sequence edges.\n     */\n    public get sequenceEdges(): IEdgeStatus {\n        return this._cache.sequenceEdges;\n    }\n\n    /**\n     * Get sequenceEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the sequence edges.\n     *\n     * @ignore\n     */\n    public get sequenceEdges$(): Observable<IEdgeStatus> {\n        return this._cache.sequenceEdges$;\n    }\n\n    /**\n     * Get spatialEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * spatial edges.\n     */\n    public get spatialEdges(): IEdgeStatus {\n        return this._cache.spatialEdges;\n    }\n\n    /**\n     * Get spatialEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the spatial edges.\n     *\n     * @ignore\n     */\n    public get spatialEdges$(): Observable<IEdgeStatus> {\n        return this._cache.spatialEdges$;\n    }\n\n    /**\n     * Get userKey.\n     *\n     * @returns {string} Unique key of the user who uploaded\n     * the image.\n     */\n    public get userKey(): string {\n        return this._fill.user.key;\n    }\n\n    /**\n     * Get username.\n     *\n     * @returns {string} Username of the user who uploaded\n     * the image.\n     */\n    public get username(): string {\n        return this._fill.user.username;\n    }\n\n    /**\n     * Get width.\n     *\n     * @returns {number} Width of original image, not\n     * adjusted for orientation.\n     */\n    public get width(): number {\n        return this._fill.width;\n    }\n\n    /**\n     * Cache the image and mesh assets.\n     *\n     * @description The assets are always cached internally by the\n     * library prior to setting a node as the current node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheAssets$(): Observable<Node> {\n        return this._cache.cacheAssets$(this.key, this.pano, this.merged).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the image asset.\n     *\n     * @description Use for caching a differently sized image than\n     * the one currently held by the node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheImage$(imageSize: ImageSize): Observable<Node> {\n        return this._cache.cacheImage$(this.key, imageSize).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the sequence edges.\n     *\n     * @description The sequence edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Sequence edges to cache.\n     * @ignore\n     */\n    public cacheSequenceEdges(edges: IEdge[]): void {\n        this._cache.cacheSequenceEdges(edges);\n    }\n\n    /**\n     * Cache the spatial edges.\n     *\n     * @description The spatial edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Spatial edges to cache.\n     * @ignore\n     */\n    public cacheSpatialEdges(edges: IEdge[]): void {\n        this._cache.cacheSpatialEdges(edges);\n    }\n\n    /**\n     * Dispose the node.\n     *\n     * @description Disposes all cached assets.\n     * @ignore\n     */\n    public dispose(): void {\n        if (this._cache != null) {\n            this._cache.dispose();\n            this._cache = null;\n        }\n\n        this._core = null;\n        this._fill = null;\n    }\n\n    /**\n     * Initialize the node cache.\n     *\n     * @description The node cache is initialized internally by\n     * the library.\n     *\n     * @param {NodeCache} cache - The node cache to set as cache.\n     * @ignore\n     */\n    public initializeCache(cache: NodeCache): void {\n        if (this._cache != null) {\n            throw new Error(`Node cache already initialized (${this.key}).`);\n        }\n\n        this._cache = cache;\n    }\n\n    /**\n     * Fill the node with all properties.\n     *\n     * @description The node is filled internally by\n     * the library.\n     *\n     * @param {IFillNode} fill - The fill node struct.\n     * @ignore\n     */\n    public makeFull(fill: IFillNode): void {\n        if (fill == null) {\n            throw new Error(\"Fill can not be null.\");\n        }\n\n        this._fill = fill;\n    }\n\n    /**\n     * Reset the sequence edges.\n     *\n     * @ignore\n     */\n    public resetSequenceEdges(): void {\n        this._cache.resetSequenceEdges();\n    }\n\n    /**\n     * Reset the spatial edges.\n     *\n     * @ignore\n     */\n    public resetSpatialEdges(): void {\n        this._cache.resetSpatialEdges();\n    }\n\n    /**\n     * Clears the image and mesh assets, aborts\n     * any outstanding requests and resets edges.\n     *\n     * @ignore\n     */\n    public uncache(): void {\n        if (this._cache == null) {\n            return;\n        }\n\n        this._cache.dispose();\n        this._cache = null;\n    }\n}\n\nexport default Node;\n",
+    "import {map} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IGPano,\n    ILatLon,\n} from \"../API\";\nimport {IEdge} from \"../Edge\";\nimport {\n    IEdgeStatus,\n    IMesh,\n    ILoadStatus,\n    NodeCache,\n} from \"../Graph\";\nimport {ImageSize} from \"../Viewer\";\n\n/**\n * @class Node\n *\n * @classdesc Represents a node in the navigation graph.\n *\n * Explanation of position and bearing properties:\n *\n * When images are uploaded they will have GPS information in the EXIF, this is what\n * is called `originalLatLon` {@link Node.originalLatLon}.\n *\n * When Structure from Motions has been run for a node a `computedLatLon` that\n * differs from the `originalLatLon` will be created. It is different because\n * GPS positions are not very exact and SfM aligns the camera positions according\n * to the 3D reconstruction {@link Node.computedLatLon}.\n *\n * At last there exist a `latLon` property which evaluates to\n * the `computedLatLon` from SfM if it exists but falls back\n * to the `originalLatLon` from the EXIF GPS otherwise {@link Node.latLon}.\n *\n * Everything that is done in in the Viewer is based on the SfM positions,\n * i.e. `computedLatLon`. That is why the smooth transitions go in the right\n * direction (nd not in strange directions because of bad GPS).\n *\n * E.g. when placing a marker in the Viewer it is relative to the SfM\n * position i.e. the `computedLatLon`.\n *\n * The same concept as above also applies to the compass angle (or bearing) properties\n * `originalCa`, `computedCa` and `ca`.\n */\nexport class Node {\n    private _cache: NodeCache;\n    private _core: ICoreNode;\n    private _fill: IFillNode;\n\n    /**\n     * Create a new node instance.\n     *\n     * @description Nodes are always created internally by the library.\n     * Nodes can not be added to the library through any API method.\n     *\n     * @param {ICoreNode} coreNode - Raw core node data.\n     * @ignore\n     */\n    constructor(core: ICoreNode) {\n        this._cache = null;\n        this._core = core;\n        this._fill = null;\n    }\n\n    /**\n     * Get assets cached.\n     *\n     * @description The assets that need to be cached for this property\n     * to report true are the following: fill properties, image and mesh.\n     * The library ensures that the current node will always have the\n     * assets cached.\n     *\n     * @returns {boolean} Value indicating whether all assets have been\n     * cached.\n     *\n     * @ignore\n     */\n    public get assetsCached(): boolean {\n        return this._core != null &&\n            this._fill != null &&\n            this._cache != null &&\n            this._cache.image != null &&\n            this._cache.mesh != null;\n    }\n\n    /**\n     * Get alt.\n     *\n     * @description If SfM has not been run the computed altitude is\n     * set to a default value of two meters.\n     *\n     * @returns {number} Altitude, in meters.\n     */\n    public get alt(): number {\n        return this._fill.calt;\n    }\n\n    /**\n     * Get ca.\n     *\n     * @description If the SfM computed compass angle exists it will\n     * be returned, otherwise the original EXIF compass angle.\n     *\n     * @returns {number} Compass angle, measured in degrees\n     * clockwise with respect to north.\n     */\n    public get ca(): number {\n        return this._fill.cca != null ? this._fill.cca : this._fill.ca;\n    }\n\n    /**\n     * Get cameraProjection.\n     *\n     * @description Will be undefined if SfM has not been run.\n     *\n     * @returns {number} The camera projection of the image.\n     */\n    public get cameraProjection(): \"perspective\" | \"fisheye\" | \"equirectangular\" {\n        return this._fill.camera_projection_type;\n    }\n\n    /**\n     * Get capturedAt.\n     *\n     * @returns {number} Timestamp when the image was captured.\n     */\n    public get capturedAt(): number {\n        return this._fill.captured_at;\n    }\n\n    /**\n     * Get camera uuid.\n     *\n     * @description Will be undefined if the camera uuid was not\n     * recorded in the image exif information.\n     *\n     * @returns {string} Universally unique id for camera used\n     * when capturing image.\n     */\n    public get cameraUuid(): string {\n        return this._fill.captured_with_camera_uuid;\n    }\n\n    /**\n     * Get ck1.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k1.\n     */\n    public get ck1(): number {\n        return this._fill.ck1;\n    }\n\n    /**\n     * Get ck2.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k2.\n     */\n    public get ck2(): number {\n        return this._fill.ck2;\n    }\n\n    /**\n     * Get computedCA.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed compass angle, measured\n     * in degrees clockwise with respect to north.\n     */\n    public get computedCA(): number {\n        return this._fill.cca;\n    }\n\n    /**\n     * Get computedLatLon.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {ILatLon} SfM computed latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get computedLatLon(): ILatLon {\n        return this._core.cl;\n    }\n\n    /**\n     * Get focal.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed focal length.\n     */\n    public get focal(): number {\n        return this._fill.cfocal;\n    }\n\n    /**\n     * Get full.\n     *\n     * @description The library ensures that the current node will\n     * always be full.\n     *\n     * @returns {boolean} Value indicating whether the node has all\n     * properties filled.\n     *\n     * @ignore\n     */\n    public get full(): boolean {\n        return this._fill != null;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.CroppedAreaLeftPixels === 0 &&\n            this._fill.gpano.CroppedAreaTopPixels === 0 &&\n            this._fill.gpano.CroppedAreaImageWidthPixels === this._fill.gpano.FullPanoWidthPixels &&\n            this._fill.gpano.CroppedAreaImageHeightPixels === this._fill.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     *\n     * @description Will not be set for non panoramic images.\n     *\n     * @returns {IGPano} Panorama information for panorama images.\n     */\n    public get gpano(): IGPano {\n        return this._fill.gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @returns {number} Height of original image, not adjusted\n     * for orientation.\n     */\n    public get height(): number {\n        return this._fill.height;\n    }\n\n    /**\n     * Get image.\n     *\n     * @description The image will always be set on the current node.\n     *\n     * @returns {HTMLImageElement} Cached image element of the node.\n     */\n    public get image(): HTMLImageElement {\n        return this._cache.image;\n    }\n\n    /**\n     * Get image$.\n     *\n     * @returns {Observable<HTMLImageElement>} Observable emitting\n     * the cached image when it is updated.\n     *\n     * @ignore\n     */\n    public get image$(): Observable<HTMLImageElement> {\n        return this._cache.image$;\n    }\n\n    /**\n     * Get key.\n     *\n     * @returns {string} Unique key of the node.\n     */\n    public get key(): string {\n        return this._core.key;\n    }\n\n    /**\n     * Get latLon.\n     *\n     * @description If the SfM computed latitude longitude exist\n     * it will be returned, otherwise the original EXIF latitude\n     * longitude.\n     *\n     * @returns {ILatLon} Latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get latLon(): ILatLon {\n        return this._core.cl != null ? this._core.cl : this._core.l;\n    }\n\n    /**\n     * Get loadStatus.\n     *\n     * @returns {ILoadStatus} Value indicating the load status\n     * of the mesh and image.\n     *\n     * @ignore\n     */\n    public get loadStatus(): ILoadStatus {\n        return this._cache.loadStatus;\n    }\n\n    /**\n     * Get merged.\n     *\n     * @returns {boolean} Value indicating whether SfM has been\n     * run on the node and the node has been merged into a\n     * connected component.\n     */\n    public get merged(): boolean {\n        return this._fill != null &&\n            this._fill.merge_version != null &&\n            this._fill.merge_version > 0;\n    }\n\n    /**\n     * Get mergeCC.\n     *\n     * @description Will not be set if SfM has not yet been run on\n     * node.\n     *\n     * @returns {number} SfM connected component key to which\n     * image belongs.\n     */\n    public get mergeCC(): number {\n        return this._fill.merge_cc;\n    }\n\n    /**\n     * Get mergeVersion.\n     *\n     * @returns {number} Version for which SfM was run and image was merged.\n     */\n    public get mergeVersion(): number {\n        return this._fill.merge_version;\n    }\n\n    /**\n     * Get mesh.\n     *\n     * @description The mesh will always be set on the current node.\n     *\n     * @returns {IMesh} SfM triangulated mesh of reconstructed\n     * atomic 3D points.\n     */\n    public get mesh(): IMesh {\n        return this._cache.mesh;\n    }\n\n    /**\n     * Get organizationKey.\n     *\n     * @returns {string} Unique key of the organization to which\n     * the node belongs. If the node does not belong to an\n     * organization the organization key will be undefined.\n     */\n    public get organizationKey(): string {\n        return this._fill.organization_key;\n    }\n\n    /**\n     * Get orientation.\n     *\n     * @returns {number} EXIF orientation of original image.\n     */\n    public get orientation(): number {\n        return this._fill.orientation;\n    }\n\n    /**\n     * Get originalCA.\n     *\n     * @returns {number} Original EXIF compass angle, measured in\n     * degrees.\n     */\n    public get originalCA(): number {\n        return this._fill.ca;\n    }\n\n    /**\n     * Get originalLatLon.\n     *\n     * @returns {ILatLon} Original EXIF latitude longitude in\n     * WGS84 datum, measured in degrees.\n     */\n    public get originalLatLon(): ILatLon {\n        return this._core.l;\n    }\n\n    /**\n     * Get pano.\n     *\n     * @returns {boolean} Value indicating whether the node is a panorama.\n     * It could be a cropped or full panorama.\n     */\n    public get pano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.FullPanoWidthPixels != null;\n    }\n\n    /**\n     * Get private.\n     *\n     * @returns {boolean} Value specifying if image is accessible to\n     * organization members only or to everyone.\n     */\n    public get private(): boolean {\n        return this._fill.private;\n    }\n\n    /**\n     * Get projectKey.\n     *\n     * @returns {string} Unique key of the project to which\n     * the node belongs. If the node does not belong to a\n     * project the project key will be undefined.\n     *\n     * @deprecated This property will be deprecated in favor\n     * of the organization key and private properties.\n     */\n    public get projectKey(): string {\n        return this._fill.project != null ?\n            this._fill.project.key :\n            null;\n    }\n\n    /**\n     * Get rotation.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {Array<number>} Rotation vector in angle axis representation.\n     */\n    public get rotation(): number[] {\n        return this._fill.c_rotation;\n    }\n\n    /**\n     * Get scale.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} Scale of atomic reconstruction.\n     */\n    public get scale(): number {\n        return this._fill.atomic_scale;\n    }\n\n    /**\n     * Get sequenceKey.\n     *\n     * @returns {string} Unique key of the sequence to which\n     * the node belongs.\n     */\n    public get sequenceKey(): string {\n        return this._core.sequence_key;\n    }\n\n    /**\n     * Get sequenceEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * sequence edges.\n     *\n     * @ignore\n     */\n    public get sequenceEdges(): IEdgeStatus {\n        return this._cache.sequenceEdges;\n    }\n\n    /**\n     * Get sequenceEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the sequence edges.\n     *\n     * @ignore\n     */\n    public get sequenceEdges$(): Observable<IEdgeStatus> {\n        return this._cache.sequenceEdges$;\n    }\n\n    /**\n     * Get spatialEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * spatial edges.\n     *\n     * @ignore\n     */\n    public get spatialEdges(): IEdgeStatus {\n        return this._cache.spatialEdges;\n    }\n\n    /**\n     * Get spatialEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the spatial edges.\n     *\n     * @ignore\n     */\n    public get spatialEdges$(): Observable<IEdgeStatus> {\n        return this._cache.spatialEdges$;\n    }\n\n    /**\n     * Get userKey.\n     *\n     * @returns {string} Unique key of the user who uploaded\n     * the image.\n     */\n    public get userKey(): string {\n        return this._fill.user.key;\n    }\n\n    /**\n     * Get username.\n     *\n     * @returns {string} Username of the user who uploaded\n     * the image.\n     */\n    public get username(): string {\n        return this._fill.user.username;\n    }\n\n    /**\n     * Get width.\n     *\n     * @returns {number} Width of original image, not\n     * adjusted for orientation.\n     */\n    public get width(): number {\n        return this._fill.width;\n    }\n\n    /**\n     * Cache the image and mesh assets.\n     *\n     * @description The assets are always cached internally by the\n     * library prior to setting a node as the current node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheAssets$(): Observable<Node> {\n        return this._cache.cacheAssets$(this.key, this.pano, this.merged).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the image asset.\n     *\n     * @description Use for caching a differently sized image than\n     * the one currently held by the node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheImage$(imageSize: ImageSize): Observable<Node> {\n        return this._cache.cacheImage$(this.key, imageSize).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the sequence edges.\n     *\n     * @description The sequence edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Sequence edges to cache.\n     * @ignore\n     */\n    public cacheSequenceEdges(edges: IEdge[]): void {\n        this._cache.cacheSequenceEdges(edges);\n    }\n\n    /**\n     * Cache the spatial edges.\n     *\n     * @description The spatial edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Spatial edges to cache.\n     * @ignore\n     */\n    public cacheSpatialEdges(edges: IEdge[]): void {\n        this._cache.cacheSpatialEdges(edges);\n    }\n\n    /**\n     * Dispose the node.\n     *\n     * @description Disposes all cached assets.\n     * @ignore\n     */\n    public dispose(): void {\n        if (this._cache != null) {\n            this._cache.dispose();\n            this._cache = null;\n        }\n\n        this._core = null;\n        this._fill = null;\n    }\n\n    /**\n     * Initialize the node cache.\n     *\n     * @description The node cache is initialized internally by\n     * the library.\n     *\n     * @param {NodeCache} cache - The node cache to set as cache.\n     * @ignore\n     */\n    public initializeCache(cache: NodeCache): void {\n        if (this._cache != null) {\n            throw new Error(`Node cache already initialized (${this.key}).`);\n        }\n\n        this._cache = cache;\n    }\n\n    /**\n     * Fill the node with all properties.\n     *\n     * @description The node is filled internally by\n     * the library.\n     *\n     * @param {IFillNode} fill - The fill node struct.\n     * @ignore\n     */\n    public makeFull(fill: IFillNode): void {\n        if (fill == null) {\n            throw new Error(\"Fill can not be null.\");\n        }\n\n        this._fill = fill;\n    }\n\n    /**\n     * Reset the sequence edges.\n     *\n     * @ignore\n     */\n    public resetSequenceEdges(): void {\n        this._cache.resetSequenceEdges();\n    }\n\n    /**\n     * Reset the spatial edges.\n     *\n     * @ignore\n     */\n    public resetSpatialEdges(): void {\n        this._cache.resetSpatialEdges();\n    }\n\n    /**\n     * Clears the image and mesh assets, aborts\n     * any outstanding requests and resets edges.\n     *\n     * @ignore\n     */\n    public uncache(): void {\n        if (this._cache == null) {\n            return;\n        }\n\n        this._cache.dispose();\n        this._cache = null;\n    }\n}\n\nexport default Node;\n",
     "import {of as observableOf, combineLatest as observableCombineLatest, Subject, Observable, Subscriber, Subscription} from \"rxjs\";\n\nimport {map, tap, startWith, publishReplay, refCount, finalize, first} from \"rxjs/operators\";\n\nimport {IEdge} from \"../Edge\";\nimport {\n    IEdgeStatus,\n    IMesh,\n    ILoadStatus,\n    ILoadStatusObject,\n    MeshReader,\n} from \"../Graph\";\nimport {\n    Settings,\n    Urls,\n} from \"../Utils\";\nimport {ImageSize} from \"../Viewer\";\n\n/**\n * @class NodeCache\n *\n * @classdesc Represents the cached properties of a node.\n */\nexport class NodeCache {\n    private _disposed: boolean;\n\n    private _image: HTMLImageElement;\n    private _loadStatus: ILoadStatus;\n    private _mesh: IMesh;\n    private _sequenceEdges: IEdgeStatus;\n    private _spatialEdges: IEdgeStatus;\n\n    private _imageRequest: XMLHttpRequest;\n    private _meshRequest: XMLHttpRequest;\n\n    private _imageChanged$: Subject<HTMLImageElement>;\n    private _image$: Observable<HTMLImageElement>;\n    private _sequenceEdgesChanged$: Subject<IEdgeStatus>;\n    private _sequenceEdges$: Observable<IEdgeStatus>;\n    private _spatialEdgesChanged$: Subject<IEdgeStatus>;\n    private _spatialEdges$: Observable<IEdgeStatus>;\n\n    private _cachingAssets$: Observable<NodeCache>;\n\n    private _iamgeSubscription: Subscription;\n    private _sequenceEdgesSubscription: Subscription;\n    private _spatialEdgesSubscription: Subscription;\n\n    /**\n     * Create a new node cache instance.\n     */\n    constructor() {\n        this._disposed = false;\n\n        this._image = null;\n        this._loadStatus = { loaded: 0, total: 0 };\n        this._mesh = null;\n        this._sequenceEdges = { cached: false, edges: [] };\n        this._spatialEdges = { cached: false, edges: [] };\n\n        this._imageChanged$ = new Subject<HTMLImageElement>();\n        this._image$ = this._imageChanged$.pipe(\n            startWith(null),\n            publishReplay(1),\n            refCount());\n\n        this._iamgeSubscription = this._image$.subscribe();\n\n        this._sequenceEdgesChanged$ = new Subject<IEdgeStatus>();\n        this._sequenceEdges$ = this._sequenceEdgesChanged$.pipe(\n            startWith(this._sequenceEdges),\n            publishReplay(1),\n            refCount());\n\n        this._sequenceEdgesSubscription = this._sequenceEdges$.subscribe(() => { /*noop*/ });\n\n        this._spatialEdgesChanged$ = new Subject<IEdgeStatus>();\n        this._spatialEdges$ = this._spatialEdgesChanged$.pipe(\n            startWith(this._spatialEdges),\n            publishReplay(1),\n            refCount());\n\n        this._spatialEdgesSubscription = this._spatialEdges$.subscribe(() => { /*noop*/ });\n\n        this._cachingAssets$ = null;\n    }\n\n    /**\n     * Get image.\n     *\n     * @description Will not be set when assets have not been cached\n     * or when the object has been disposed.\n     *\n     * @returns {HTMLImageElement} Cached image element of the node.\n     */\n    public get image(): HTMLImageElement {\n        return this._image;\n    }\n\n    /**\n     * Get image$.\n     *\n     * @returns {Observable<HTMLImageElement>} Observable emitting\n     * the cached image when it is updated.\n     */\n    public get image$(): Observable<HTMLImageElement> {\n        return this._image$;\n    }\n\n    /**\n     * Get loadStatus.\n     *\n     * @returns {ILoadStatus} Value indicating the load status\n     * of the mesh and image.\n     */\n    public get loadStatus(): ILoadStatus {\n        return this._loadStatus;\n    }\n\n    /**\n     * Get mesh.\n     *\n     * @description Will not be set when assets have not been cached\n     * or when the object has been disposed.\n     *\n     * @returns {IMesh} SfM triangulated mesh of reconstructed\n     * atomic 3D points.\n     */\n    public get mesh(): IMesh {\n        return this._mesh;\n    }\n\n    /**\n     * Get sequenceEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * sequence edges.\n     */\n    public get sequenceEdges(): IEdgeStatus {\n        return this._sequenceEdges;\n    }\n\n    /**\n     * Get sequenceEdges$.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the sequence edges.\n     */\n    public get sequenceEdges$(): Observable<IEdgeStatus> {\n        return this._sequenceEdges$;\n    }\n\n    /**\n     * Get spatialEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * spatial edges.\n     */\n    public get spatialEdges(): IEdgeStatus {\n        return this._spatialEdges;\n    }\n\n    /**\n     * Get spatialEdges$.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the spatial edges.\n     */\n    public get spatialEdges$(): Observable<IEdgeStatus> {\n        return this._spatialEdges$;\n    }\n\n    /**\n     * Cache the image and mesh assets.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {boolean} pano - Value indicating whether node is a panorama.\n     * @param {boolean} merged - Value indicating whether node is merged.\n     * @returns {Observable<NodeCache>} Observable emitting this node\n     * cache whenever the load status has changed and when the mesh or image\n     * has been fully loaded.\n     */\n    public cacheAssets$(key: string, pano: boolean, merged: boolean): Observable<NodeCache> {\n        if (this._cachingAssets$ != null) {\n            return this._cachingAssets$;\n        }\n\n        let imageSize: ImageSize = pano ?\n            Settings.basePanoramaSize :\n            Settings.baseImageSize;\n\n        this._cachingAssets$ = observableCombineLatest(\n                this._cacheImage$(key, imageSize),\n                this._cacheMesh$(key, merged)).pipe(\n            map(\n                ([imageStatus, meshStatus]: [ILoadStatusObject<HTMLImageElement>, ILoadStatusObject<IMesh>]): NodeCache => {\n                    this._loadStatus.loaded = 0;\n                    this._loadStatus.total = 0;\n\n                    if (meshStatus) {\n                        this._mesh = meshStatus.object;\n                        this._loadStatus.loaded += meshStatus.loaded.loaded;\n                        this._loadStatus.total += meshStatus.loaded.total;\n                    }\n\n                    if (imageStatus) {\n                        this._image = imageStatus.object;\n                        this._loadStatus.loaded += imageStatus.loaded.loaded;\n                        this._loadStatus.total += imageStatus.loaded.total;\n                    }\n\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    this._cachingAssets$ = null;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._cachingAssets$.pipe(\n            first(\n                (nodeCache: NodeCache): boolean => {\n                    return !!nodeCache._image;\n                }))\n            .subscribe(\n                (nodeCache: NodeCache): void => {\n                    this._imageChanged$.next(this._image);\n                },\n                (error: Error): void => { /*noop*/ });\n\n        return this._cachingAssets$;\n    }\n\n    /**\n     * Cache an image with a higher resolution than the current one.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {ImageSize} imageSize - The size to cache.\n     * @returns {Observable<NodeCache>} Observable emitting a single item,\n     * the node cache, when the image has been cached. If supplied image\n     * size is not larger than the current image size the node cache is\n     * returned immediately.\n     */\n    public cacheImage$(key: string, imageSize: ImageSize): Observable<NodeCache> {\n        if (this._image != null && imageSize <= Math.max(this._image.width, this._image.height)) {\n            return observableOf<NodeCache>(this);\n        }\n\n        const cacheImage$: Observable<NodeCache> = this._cacheImage$(key, imageSize).pipe(\n            first(\n                (status: ILoadStatusObject<HTMLImageElement>): boolean => {\n                    return status.object != null;\n                }),\n            tap(\n                (status: ILoadStatusObject<HTMLImageElement>): void => {\n                    this._disposeImage();\n                    this._image = status.object;\n                }),\n            map(\n                (imageStatus: ILoadStatusObject<HTMLImageElement>): NodeCache => {\n                    return this;\n                }),\n            publishReplay(1),\n            refCount());\n\n        cacheImage$\n            .subscribe(\n                (nodeCache: NodeCache): void => {\n                    this._imageChanged$.next(this._image);\n                },\n                (error: Error): void => { /*noop*/ });\n\n        return cacheImage$;\n    }\n\n    /**\n     * Cache the sequence edges.\n     *\n     * @param {Array<IEdge>} edges - Sequence edges to cache.\n     */\n    public cacheSequenceEdges(edges: IEdge[]): void {\n        this._sequenceEdges = { cached: true, edges: edges };\n        this._sequenceEdgesChanged$.next(this._sequenceEdges);\n    }\n\n    /**\n     * Cache the spatial edges.\n     *\n     * @param {Array<IEdge>} edges - Spatial edges to cache.\n     */\n    public cacheSpatialEdges(edges: IEdge[]): void {\n        this._spatialEdges = { cached: true, edges: edges };\n        this._spatialEdgesChanged$.next(this._spatialEdges);\n    }\n\n    /**\n     * Dispose the node cache.\n     *\n     * @description Disposes all cached assets and unsubscribes to\n     * all streams.\n     */\n    public dispose(): void {\n        this._iamgeSubscription.unsubscribe();\n        this._sequenceEdgesSubscription.unsubscribe();\n        this._spatialEdgesSubscription.unsubscribe();\n\n        this._disposeImage();\n\n        this._mesh = null;\n        this._loadStatus.loaded = 0;\n        this._loadStatus.total = 0;\n        this._sequenceEdges = { cached: false, edges: [] };\n        this._spatialEdges = { cached: false, edges: [] };\n\n        this._imageChanged$.next(null);\n        this._sequenceEdgesChanged$.next(this._sequenceEdges);\n        this._spatialEdgesChanged$.next(this._spatialEdges);\n\n        this._disposed = true;\n\n        if (this._imageRequest != null) {\n            this._imageRequest.abort();\n        }\n\n        if (this._meshRequest != null) {\n            this._meshRequest.abort();\n        }\n    }\n\n    /**\n     * Reset the sequence edges.\n     */\n    public resetSequenceEdges(): void {\n        this._sequenceEdges = { cached: false, edges: [] };\n        this._sequenceEdgesChanged$.next(this._sequenceEdges);\n    }\n\n    /**\n     * Reset the spatial edges.\n     */\n    public resetSpatialEdges(): void {\n        this._spatialEdges = { cached: false, edges: [] };\n        this._spatialEdgesChanged$.next(this._spatialEdges);\n    }\n\n    /**\n     * Cache the image.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {boolean} pano - Value indicating whether node is a panorama.\n     * @returns {Observable<ILoadStatusObject<HTMLImageElement>>} Observable\n     * emitting a load status object every time the load status changes\n     * and completes when the image is fully loaded.\n     */\n    private _cacheImage$(key: string, imageSize: ImageSize): Observable<ILoadStatusObject<HTMLImageElement>> {\n        return Observable.create(\n            (subscriber: Subscriber<ILoadStatusObject<HTMLImageElement>>): void => {\n                let xmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n                xmlHTTP.open(\"GET\", Urls.thumbnail(key, imageSize, Urls.origin), true);\n                xmlHTTP.responseType = \"arraybuffer\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = (pe: ProgressEvent) => {\n                    if (xmlHTTP.status !== 200) {\n                        this._imageRequest = null;\n\n                        subscriber.error(\n                            new Error(`Failed to fetch image (${key}). Status: ${xmlHTTP.status}, ${xmlHTTP.statusText}`));\n\n                        return;\n                    }\n\n                    let image: HTMLImageElement = new Image();\n                    image.crossOrigin = \"Anonymous\";\n\n                    image.onload = (e: Event) => {\n                        this._imageRequest = null;\n\n                        if (this._disposed) {\n                            window.URL.revokeObjectURL(image.src);\n                            subscriber.error(new Error(`Image load was aborted (${key})`));\n\n                            return;\n                        }\n\n                        subscriber.next({ loaded: { loaded: pe.loaded, total: pe.total }, object: image });\n                        subscriber.complete();\n                    };\n\n                    image.onerror = (error: ErrorEvent) => {\n                        this._imageRequest = null;\n\n                        subscriber.error(new Error(`Failed to load image (${key})`));\n                    };\n\n                    let blob: Blob = new Blob([xmlHTTP.response]);\n                    image.src = window.URL.createObjectURL(blob);\n                };\n\n                xmlHTTP.onprogress = (pe: ProgressEvent) => {\n                    if (this._disposed) {\n                        return;\n                    }\n\n                    subscriber.next({loaded: { loaded: pe.loaded, total: pe.total }, object: null });\n                };\n\n                xmlHTTP.onerror = (error: Event) => {\n                    this._imageRequest = null;\n\n                    subscriber.error(new Error(`Failed to fetch image (${key})`));\n                };\n\n                xmlHTTP.ontimeout = (e: Event) => {\n                    this._imageRequest = null;\n\n                    subscriber.error(new Error(`Image request timed out (${key})`));\n                };\n\n                xmlHTTP.onabort = (event: Event) => {\n                    this._imageRequest = null;\n\n                    subscriber.error(new Error(`Image request was aborted (${key})`));\n                };\n\n                this._imageRequest = xmlHTTP;\n\n                xmlHTTP.send(null);\n            });\n    }\n\n    /**\n     * Cache the mesh.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {boolean} merged - Value indicating whether node is merged.\n     * @returns {Observable<ILoadStatusObject<IMesh>>} Observable emitting\n     * a load status object every time the load status changes and completes\n     * when the mesh is fully loaded.\n     */\n    private _cacheMesh$(key: string, merged: boolean): Observable<ILoadStatusObject<IMesh>> {\n        return Observable.create(\n            (subscriber: Subscriber<ILoadStatusObject<IMesh>>): void => {\n                if (!merged) {\n                    subscriber.next(this._createEmptyMeshLoadStatus());\n                    subscriber.complete();\n                    return;\n                }\n\n                let xmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n                xmlHTTP.open(\"GET\", Urls.protoMesh(key), true);\n                xmlHTTP.responseType = \"arraybuffer\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = (pe: ProgressEvent) => {\n                    this._meshRequest = null;\n\n                    if (this._disposed) {\n                        return;\n                    }\n\n                    let mesh: IMesh = xmlHTTP.status === 200 ?\n                        MeshReader.read(new Buffer(xmlHTTP.response)) :\n                        { faces: [], vertices: [] };\n\n                    subscriber.next({ loaded: { loaded: pe.loaded, total: pe.total }, object: mesh });\n                    subscriber.complete();\n                };\n\n                xmlHTTP.onprogress = (pe: ProgressEvent) => {\n                    if (this._disposed) {\n                        return;\n                    }\n\n                    subscriber.next({ loaded: { loaded: pe.loaded, total: pe.total }, object: null });\n                };\n\n                xmlHTTP.onerror = (e: Event) => {\n                    this._meshRequest = null;\n\n                    console.error(`Failed to cache mesh (${key})`);\n\n                    subscriber.next(this._createEmptyMeshLoadStatus());\n                    subscriber.complete();\n                };\n\n                xmlHTTP.ontimeout = (e: Event) => {\n                    this._meshRequest = null;\n\n                    console.error(`Mesh request timed out (${key})`);\n\n                    subscriber.next(this._createEmptyMeshLoadStatus());\n                    subscriber.complete();\n                };\n\n                xmlHTTP.onabort = (e: Event) => {\n                    this._meshRequest = null;\n\n                    subscriber.error(new Error(`Mesh request was aborted (${key})`));\n                };\n\n                this._meshRequest = xmlHTTP;\n\n                xmlHTTP.send(null);\n            });\n    }\n\n    /**\n     * Create a load status object with an empty mesh.\n     *\n     * @returns {ILoadStatusObject<IMesh>} Load status object\n     * with empty mesh.\n     */\n    private _createEmptyMeshLoadStatus(): ILoadStatusObject<IMesh> {\n        return {\n            loaded: { loaded: 0, total: 0 },\n            object: { faces: [], vertices: [] },\n        };\n    }\n\n    private _disposeImage(): void {\n        if (this._image != null) {\n            window.URL.revokeObjectURL(this._image.src);\n        }\n\n        this._image = null;\n    }\n}\n\nexport default NodeCache;\n",
     "import {ISequence} from \"../API\";\n\n/**\n * @class Sequence\n *\n * @classdesc Represents a sequence of ordered nodes.\n */\nexport class Sequence {\n    private _key: string;\n    private _keys: string[];\n\n    /**\n     * Create a new sequene instance.\n     *\n     * @param {ISequence} sequence - Raw sequence data.\n     */\n    constructor(sequence: ISequence) {\n        this._key = sequence.key;\n        this._keys = sequence.keys;\n    }\n\n    /**\n     * Get key.\n     *\n     * @returns {string} Unique sequence key.\n     */\n    public get key(): string {\n        return this._key;\n    }\n\n    /**\n     * Get keys.\n     *\n     * @returns {Array<string>} Array of ordered node keys in the sequence.\n     */\n    public get keys(): string[] {\n        return this._keys;\n    }\n\n    /**\n     * Dispose the sequence.\n     *\n     * @description Disposes all cached assets.\n     */\n    public dispose(): void {\n        this._key = null;\n        this._keys = null;\n    }\n\n    /**\n     * Find the next node key in the sequence with respect to\n     * the provided node key.\n     *\n     * @param {string} key - Reference node key.\n     * @returns {string} Next key in sequence if it exists, null otherwise.\n     */\n    public findNextKey(key: string): string {\n        let i: number = this._keys.indexOf(key);\n\n        if ((i + 1) >= this._keys.length || i === -1) {\n            return null;\n        } else {\n            return this._keys[i + 1];\n        }\n    }\n\n    /**\n     * Find the previous node key in the sequence with respect to\n     * the provided node key.\n     *\n     * @param {string} key - Reference node key.\n     * @returns {string} Previous key in sequence if it exists, null otherwise.\n     */\n    public findPrevKey(key: string): string {\n        let i: number = this._keys.indexOf(key);\n\n        if (i === 0 || i === -1) {\n            return null;\n        } else {\n            return this._keys[i - 1];\n        }\n    }\n}\n\nexport default Sequence;\n",
     "import * as THREE from \"three\";\n\nimport {\n    Node,\n    Sequence,\n} from \"../../Graph\";\nimport\n{\n    EdgeDirection,\n    IStep,\n    ITurn,\n    IPano,\n    IEdge,\n    IPotentialEdge,\n    EdgeCalculatorSettings,\n    EdgeCalculatorDirections,\n    EdgeCalculatorCoefficients,\n} from \"../../Edge\";\nimport {ArgumentMapillaryError} from \"../../Error\";\nimport {GeoCoords, Spatial} from \"../../Geo\";\n\n/**\n * @class EdgeCalculator\n *\n * @classdesc Represents a class for calculating node edges.\n */\nexport class EdgeCalculator {\n\n    private _spatial: Spatial;\n    private _geoCoords: GeoCoords;\n\n    private _settings: EdgeCalculatorSettings;\n    private _directions: EdgeCalculatorDirections;\n    private _coefficients: EdgeCalculatorCoefficients;\n\n    /**\n     * Create a new edge calculator instance.\n     *\n     * @param {EdgeCalculatorSettings} settings - Settings struct.\n     * @param {EdgeCalculatorDirections} directions - Directions struct.\n     * @param {EdgeCalculatorCoefficients} coefficients - Coefficients struct.\n     */\n    constructor(\n        settings?: EdgeCalculatorSettings,\n        directions?: EdgeCalculatorDirections,\n        coefficients?: EdgeCalculatorCoefficients) {\n\n        this._spatial = new Spatial();\n        this._geoCoords = new GeoCoords();\n\n        this._settings = settings != null ? settings : new EdgeCalculatorSettings();\n        this._directions = directions != null ? directions : new EdgeCalculatorDirections();\n        this._coefficients = coefficients != null ? coefficients : new EdgeCalculatorCoefficients();\n    }\n\n    /**\n     * Returns the potential edges to destination nodes for a set\n     * of nodes with respect to a source node.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<Node>} nodes - Potential destination nodes.\n     * @param {Array<string>} fallbackKeys - Keys for destination nodes that should\n     * be returned even if they do not meet the criteria for a potential edge.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public getPotentialEdges(node: Node, potentialNodes: Node[], fallbackKeys: string[]): IPotentialEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (!node.merged) {\n            return [];\n        }\n\n        let currentDirection: THREE.Vector3 =\n            this._spatial.viewingDirection(node.rotation);\n        let currentVerticalDirection: number =\n            this._spatial.angleToPlane(currentDirection.toArray(), [0, 0, 1]);\n\n        let potentialEdges: IPotentialEdge[] = [];\n\n        for (let potential of potentialNodes) {\n            if (!potential.merged ||\n                potential.key === node.key) {\n                continue;\n            }\n\n            let enu: number[] = this._geoCoords.geodeticToEnu(\n                potential.latLon.lat,\n                potential.latLon.lon,\n                potential.alt,\n                node.latLon.lat,\n                node.latLon.lon,\n                node.alt);\n\n            let motion: THREE.Vector3 = new THREE.Vector3(enu[0], enu[1], enu[2]);\n            let distance: number = motion.length();\n\n            if (distance > this._settings.maxDistance &&\n                fallbackKeys.indexOf(potential.key) < 0) {\n                continue;\n            }\n\n            let motionChange: number = this._spatial.angleBetweenVector2(\n                currentDirection.x,\n                currentDirection.y,\n                motion.x,\n                motion.y);\n\n            let verticalMotion: number = this._spatial.angleToPlane(motion.toArray(), [0, 0, 1]);\n\n            let direction: THREE.Vector3 =\n                this._spatial.viewingDirection(potential.rotation);\n\n            let directionChange: number = this._spatial.angleBetweenVector2(\n                currentDirection.x,\n                currentDirection.y,\n                direction.x,\n                direction.y);\n\n            let verticalDirection: number = this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n            let verticalDirectionChange: number = verticalDirection - currentVerticalDirection;\n\n            let rotation: number = this._spatial.relativeRotationAngle(\n                node.rotation,\n                potential.rotation);\n\n            let worldMotionAzimuth: number =\n                this._spatial.angleBetweenVector2(1, 0, motion.x, motion.y);\n\n            let sameSequence: boolean = potential.sequenceKey != null &&\n                node.sequenceKey != null &&\n                potential.sequenceKey === node.sequenceKey;\n\n            let sameMergeCC: boolean =\n                 (potential.mergeCC == null && node.mergeCC == null) ||\n                 potential.mergeCC === node.mergeCC;\n\n            let sameUser: boolean =\n                potential.userKey === node.userKey;\n\n            let potentialEdge: IPotentialEdge = {\n                capturedAt: potential.capturedAt,\n                croppedPano: potential.pano && !potential.fullPano,\n                directionChange: directionChange,\n                distance: distance,\n                fullPano: potential.fullPano,\n                key: potential.key,\n                motionChange: motionChange,\n                rotation: rotation,\n                sameMergeCC: sameMergeCC,\n                sameSequence: sameSequence,\n                sameUser: sameUser,\n                sequenceKey: potential.sequenceKey,\n                verticalDirectionChange: verticalDirectionChange,\n                verticalMotion: verticalMotion,\n                worldMotionAzimuth: worldMotionAzimuth,\n            };\n\n            potentialEdges.push(potentialEdge);\n        }\n\n        return potentialEdges;\n    }\n\n    /**\n     * Computes the sequence edges for a node.\n     *\n     * @param {Node} node - Source node.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeSequenceEdges(node: Node, sequence: Sequence): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (node.sequenceKey !== sequence.key) {\n            throw new ArgumentMapillaryError(\"Node and sequence does not correspond.\");\n        }\n\n        let edges: IEdge[] = [];\n\n        let nextKey: string = sequence.findNextKey(node.key);\n        if (nextKey != null) {\n            edges.push({\n                data: {\n                    direction: EdgeDirection.Next,\n                    worldMotionAzimuth: Number.NaN,\n                },\n                from: node.key,\n                to: nextKey,\n            });\n        }\n\n        let prevKey: string = sequence.findPrevKey(node.key);\n        if (prevKey != null) {\n            edges.push({\n                data: {\n                    direction: EdgeDirection.Prev,\n                    worldMotionAzimuth: Number.NaN,\n                },\n                from: node.key,\n                to: prevKey,\n            });\n        }\n\n        return edges;\n    }\n\n    /**\n     * Computes the similar edges for a node.\n     *\n     * @description Similar edges for perspective images and cropped panoramas\n     * look roughly in the same direction and are positioned closed to the node.\n     * Similar edges for full panoramas only target other full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeSimilarEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        let nodeFullPano: boolean = node.fullPano;\n        let sequenceGroups: { [key: string]: IPotentialEdge[] } = {};\n\n        for (let potentialEdge of potentialEdges) {\n            if (potentialEdge.sequenceKey == null) {\n                continue;\n            }\n\n            if (potentialEdge.sameSequence) {\n                continue;\n            }\n\n            if (nodeFullPano) {\n                if (!potentialEdge.fullPano) {\n                    continue;\n                }\n            } else {\n                if (!potentialEdge.fullPano &&\n                    Math.abs(potentialEdge.directionChange) > this._settings.similarMaxDirectionChange) {\n                    continue;\n                }\n            }\n\n            if (potentialEdge.distance > this._settings.similarMaxDistance) {\n                continue;\n            }\n\n            if (potentialEdge.sameUser &&\n                Math.abs(potentialEdge.capturedAt - node.capturedAt) <\n                    this._settings.similarMinTimeDifference) {\n                continue;\n            }\n\n            if (sequenceGroups[potentialEdge.sequenceKey] == null) {\n                sequenceGroups[potentialEdge.sequenceKey] = [];\n            }\n\n            sequenceGroups[potentialEdge.sequenceKey].push(potentialEdge);\n\n        }\n\n        let similarEdges: IPotentialEdge[] = [];\n\n        let calculateScore: (potentialEdge: IPotentialEdge) => number =\n            node.fullPano ?\n                (potentialEdge: IPotentialEdge): number => {\n                    return potentialEdge.distance;\n                } :\n                (potentialEdge: IPotentialEdge): number => {\n                    return this._coefficients.similarDistance * potentialEdge.distance +\n                        this._coefficients.similarRotation * potentialEdge.rotation;\n                };\n\n        for (let sequenceKey in sequenceGroups) {\n            if (!sequenceGroups.hasOwnProperty(sequenceKey)) {\n                continue;\n            }\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let similarEdge: IPotentialEdge = null;\n\n            for (let potentialEdge of sequenceGroups[sequenceKey]) {\n                let score: number = calculateScore(potentialEdge);\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    similarEdge = potentialEdge;\n                }\n            }\n\n            if (similarEdge == null) {\n                continue;\n            }\n\n            similarEdges.push(similarEdge);\n        }\n\n        return similarEdges\n            .map<IEdge>(\n                (potentialEdge: IPotentialEdge): IEdge => {\n                    return {\n                        data: {\n                            direction: EdgeDirection.Similar,\n                            worldMotionAzimuth: potentialEdge.worldMotionAzimuth,\n                        },\n                        from: node.key,\n                        to: potentialEdge.key,\n                    };\n                });\n    }\n\n    /**\n     * Computes the step edges for a perspective node.\n     *\n     * @description Step edge targets can only be other perspective nodes.\n     * Returns an empty array for cropped and full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @param {string} prevKey - Key of previous node in sequence.\n     * @param {string} prevKey - Key of next node in sequence.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeStepEdges(\n        node: Node,\n        potentialEdges: IPotentialEdge[],\n        prevKey: string,\n        nextKey: string): IEdge[] {\n\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        let edges: IEdge[] = [];\n\n        if (node.pano) {\n            return edges;\n        }\n\n        for (let k in this._directions.steps) {\n            if (!this._directions.steps.hasOwnProperty(k)) {\n                continue;\n            }\n\n            let step: IStep = this._directions.steps[k];\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let edge: IPotentialEdge = null;\n            let fallback: IPotentialEdge = null;\n\n            for (let potential of potentialEdges) {\n                if (potential.croppedPano || potential.fullPano) {\n                    continue;\n                }\n\n                if (Math.abs(potential.directionChange) > this._settings.stepMaxDirectionChange) {\n                    continue;\n                }\n\n                let motionDifference: number =\n                    this._spatial.angleDifference(step.motionChange, potential.motionChange);\n                let directionMotionDifference: number =\n                    this._spatial.angleDifference(potential.directionChange, motionDifference);\n                let drift: number =\n                    Math.max(Math.abs(motionDifference), Math.abs(directionMotionDifference));\n\n                if (Math.abs(drift) > this._settings.stepMaxDrift) {\n                    continue;\n                }\n\n                let potentialKey: string = potential.key;\n                if (step.useFallback && (potentialKey === prevKey || potentialKey === nextKey)) {\n                    fallback = potential;\n                }\n\n                if (potential.distance > this._settings.stepMaxDistance) {\n                    continue;\n                }\n\n                motionDifference = Math.sqrt(\n                    motionDifference * motionDifference +\n                    potential.verticalMotion * potential.verticalMotion);\n\n                let score: number =\n                    this._coefficients.stepPreferredDistance *\n                    Math.abs(potential.distance - this._settings.stepPreferredDistance) /\n                    this._settings.stepMaxDistance +\n                    this._coefficients.stepMotion * motionDifference / this._settings.stepMaxDrift +\n                    this._coefficients.stepRotation * potential.rotation / this._settings.stepMaxDirectionChange +\n                    this._coefficients.stepSequencePenalty * (potential.sameSequence ? 0 : 1) +\n                    this._coefficients.stepMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    edge = potential;\n                }\n            }\n\n            edge = edge == null ? fallback : edge;\n            if (edge != null) {\n                edges.push({\n                    data: {\n                        direction: step.direction,\n                        worldMotionAzimuth: edge.worldMotionAzimuth,\n                    },\n                    from: node.key,\n                    to: edge.key,\n                });\n            }\n        }\n\n        return edges;\n    }\n\n    /**\n     * Computes the turn edges for a perspective node.\n     *\n     * @description Turn edge targets can only be other perspective images.\n     * Returns an empty array for cropped and full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeTurnEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        let edges: IEdge[] = [];\n\n        if (node.pano) {\n            return edges;\n        }\n\n        for (let k in this._directions.turns) {\n            if (!this._directions.turns.hasOwnProperty(k)) {\n                continue;\n            }\n\n            let turn: ITurn = this._directions.turns[k];\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let edge: IPotentialEdge = null;\n\n            for (let potential of potentialEdges) {\n                if (potential.croppedPano || potential.fullPano) {\n                    continue;\n                }\n\n                if (potential.distance > this._settings.turnMaxDistance) {\n                    continue;\n                }\n\n                let rig: boolean =\n                    turn.direction !== EdgeDirection.TurnU &&\n                    potential.distance < this._settings.turnMaxRigDistance &&\n                    Math.abs(potential.directionChange) > this._settings.turnMinRigDirectionChange;\n\n                let directionDifference: number = this._spatial.angleDifference(\n                    turn.directionChange, potential.directionChange);\n\n                let score: number;\n\n                if (\n                    rig &&\n                    potential.directionChange * turn.directionChange > 0 &&\n                    Math.abs(potential.directionChange) < Math.abs(turn.directionChange)) {\n                    score = -Math.PI / 2 + Math.abs(potential.directionChange);\n                } else {\n                    if (Math.abs(directionDifference) > this._settings.turnMaxDirectionChange) {\n                        continue;\n                    }\n\n                    let motionDifference: number = turn.motionChange ?\n                        this._spatial.angleDifference(turn.motionChange, potential.motionChange) : 0;\n\n                    motionDifference = Math.sqrt(\n                        motionDifference * motionDifference +\n                        potential.verticalMotion * potential.verticalMotion);\n\n                    score =\n                        this._coefficients.turnDistance * potential.distance /\n                        this._settings.turnMaxDistance +\n                        this._coefficients.turnMotion * motionDifference / Math.PI +\n                        this._coefficients.turnSequencePenalty * (potential.sameSequence ? 0 : 1) +\n                        this._coefficients.turnMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n                }\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    edge = potential;\n                }\n            }\n\n            if (edge != null) {\n                edges.push({\n                    data: {\n                        direction: turn.direction,\n                        worldMotionAzimuth: edge.worldMotionAzimuth,\n                    },\n                    from: node.key,\n                    to: edge.key,\n                });\n            }\n        }\n\n        return edges;\n    }\n\n    /**\n     * Computes the pano edges for a perspective node.\n     *\n     * @description Perspective to pano edge targets can only be\n     * full pano nodes. Returns an empty array for cropped and full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computePerspectiveToPanoEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (node.pano) {\n            return [];\n        }\n\n        let lowestScore: number = Number.MAX_VALUE;\n        let edge: IPotentialEdge = null;\n\n        for (let potential of potentialEdges) {\n            if (!potential.fullPano) {\n                continue;\n            }\n\n            let score: number =\n                this._coefficients.panoPreferredDistance *\n                Math.abs(potential.distance - this._settings.panoPreferredDistance) /\n                this._settings.panoMaxDistance +\n                this._coefficients.panoMotion * Math.abs(potential.motionChange) / Math.PI +\n                this._coefficients.panoMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n\n            if (score < lowestScore) {\n                lowestScore = score;\n                edge = potential;\n            }\n        }\n\n        if (edge == null) {\n            return [];\n        }\n\n        return [\n            {\n                data: {\n                    direction: EdgeDirection.Pano,\n                    worldMotionAzimuth: edge.worldMotionAzimuth,\n                },\n                from: node.key,\n                to: edge.key,\n            },\n        ];\n    }\n\n    /**\n     * Computes the full pano and step edges for a full pano node.\n     *\n     * @description Pano to pano edge targets can only be\n     * full pano nodes. Pano to step edge targets can only be perspective\n     * nodes.\n     * Returns an empty array for cropped panoramas and perspective nodes.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computePanoEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (!node.fullPano) {\n            return [];\n        }\n\n        let panoEdges: IEdge[] = [];\n        let potentialPanos: IPotentialEdge[] = [];\n        let potentialSteps: [EdgeDirection, IPotentialEdge][] = [];\n\n        for (let potential of potentialEdges) {\n            if (potential.distance > this._settings.panoMaxDistance) {\n                continue;\n            }\n\n            if (potential.fullPano) {\n                if (potential.distance < this._settings.panoMinDistance) {\n                    continue;\n                }\n\n                potentialPanos.push(potential);\n            } else {\n                if (potential.croppedPano) {\n                    continue;\n                }\n\n                for (let k in this._directions.panos) {\n                    if (!this._directions.panos.hasOwnProperty(k)) {\n                        continue;\n                    }\n\n                    let pano: IPano = this._directions.panos[k];\n\n                    let turn: number = this._spatial.angleDifference(\n                        potential.directionChange,\n                        potential.motionChange);\n\n                    let turnChange: number = this._spatial.angleDifference(pano.directionChange, turn);\n\n                    if (Math.abs(turnChange) > this._settings.panoMaxStepTurnChange) {\n                        continue;\n                    }\n\n                    potentialSteps.push([pano.direction, potential]);\n\n                    // break if step direction found\n                    break;\n                }\n            }\n        }\n\n        let maxRotationDifference: number = Math.PI / this._settings.panoMaxItems;\n        let occupiedAngles: number[] = [];\n        let stepAngles: number[] = [];\n\n        for (let index: number = 0; index < this._settings.panoMaxItems; index++) {\n            let rotation: number = index / this._settings.panoMaxItems * 2 * Math.PI;\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let edge: IPotentialEdge = null;\n\n            for (let potential of potentialPanos) {\n                let motionDifference: number = this._spatial.angleDifference(rotation, potential.motionChange);\n\n                if (Math.abs(motionDifference) > maxRotationDifference) {\n                    continue;\n                }\n\n                let occupiedDifference: number = Number.MAX_VALUE;\n                for (let occupiedAngle of occupiedAngles) {\n                    let difference: number = Math.abs(this._spatial.angleDifference(occupiedAngle, potential.motionChange));\n                    if (difference < occupiedDifference) {\n                        occupiedDifference = difference;\n                    }\n                }\n\n                if (occupiedDifference <= maxRotationDifference) {\n                    continue;\n                }\n\n                let score: number =\n                    this._coefficients.panoPreferredDistance *\n                    Math.abs(potential.distance - this._settings.panoPreferredDistance) /\n                    this._settings.panoMaxDistance +\n                    this._coefficients.panoMotion * Math.abs(motionDifference) / maxRotationDifference +\n                    this._coefficients.panoSequencePenalty * (potential.sameSequence ? 0 : 1) +\n                    this._coefficients.panoMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    edge = potential;\n                }\n            }\n\n            if (edge != null) {\n                occupiedAngles.push(edge.motionChange);\n                panoEdges.push({\n                    data: {\n                        direction: EdgeDirection.Pano,\n                        worldMotionAzimuth: edge.worldMotionAzimuth,\n                    },\n                    from: node.key,\n                    to: edge.key,\n                });\n            } else {\n                stepAngles.push(rotation);\n            }\n        }\n\n        let occupiedStepAngles: {[direction: string]: number[] } = {};\n        occupiedStepAngles[EdgeDirection.Pano] = occupiedAngles;\n        occupiedStepAngles[EdgeDirection.StepForward] = [];\n        occupiedStepAngles[EdgeDirection.StepLeft] = [];\n        occupiedStepAngles[EdgeDirection.StepBackward] = [];\n        occupiedStepAngles[EdgeDirection.StepRight] = [];\n\n        for (let stepAngle of stepAngles) {\n            let occupations: [EdgeDirection, IPotentialEdge][] = [];\n\n            for (let k in this._directions.panos) {\n                if (!this._directions.panos.hasOwnProperty(k)) {\n                    continue;\n                }\n\n                let pano: IPano = this._directions.panos[k];\n\n                let allOccupiedAngles: number[] = occupiedStepAngles[EdgeDirection.Pano]\n                    .concat(occupiedStepAngles[pano.direction])\n                    .concat(occupiedStepAngles[pano.prev])\n                    .concat(occupiedStepAngles[pano.next]);\n\n                let lowestScore: number = Number.MAX_VALUE;\n                let edge: [EdgeDirection, IPotentialEdge] = null;\n\n                for (let potential of potentialSteps) {\n                    if (potential[0] !== pano.direction) {\n                        continue;\n                    }\n\n                    let motionChange: number = this._spatial.angleDifference(stepAngle, potential[1].motionChange);\n\n                    if (Math.abs(motionChange) > maxRotationDifference) {\n                        continue;\n                    }\n\n                    let minOccupiedDifference: number = Number.MAX_VALUE;\n                    for (let occupiedAngle of allOccupiedAngles) {\n                        let occupiedDifference: number =\n                            Math.abs(this._spatial.angleDifference(occupiedAngle, potential[1].motionChange));\n\n                        if (occupiedDifference < minOccupiedDifference) {\n                            minOccupiedDifference = occupiedDifference;\n                        }\n                    }\n\n                    if (minOccupiedDifference <= maxRotationDifference) {\n                        continue;\n                    }\n\n                    let score: number = this._coefficients.panoPreferredDistance *\n                        Math.abs(potential[1].distance - this._settings.panoPreferredDistance) /\n                        this._settings.panoMaxDistance +\n                        this._coefficients.panoMotion * Math.abs(motionChange) / maxRotationDifference +\n                        this._coefficients.panoMergeCCPenalty * (potential[1].sameMergeCC ? 0 : 1);\n\n                    if (score < lowestScore) {\n                        lowestScore = score;\n                        edge = potential;\n                    }\n                }\n\n                if (edge != null) {\n                    occupations.push(edge);\n                    panoEdges.push({\n                        data: {\n                            direction: edge[0],\n                            worldMotionAzimuth: edge[1].worldMotionAzimuth,\n                        },\n                        from: node.key,\n                        to: edge[1].key,\n                    });\n                }\n            }\n\n            for (let occupation of occupations) {\n                occupiedStepAngles[occupation[0]].push(occupation[1].motionChange);\n            }\n        }\n\n        return panoEdges;\n    }\n}\n\nexport default EdgeCalculator;\n",
     "import {combineLatest as observableCombineLatest} from \"rxjs\";\n\nimport {\n    scan,\n    filter,\n    map,\n    distinctUntilChanged,\n    pluck,\n    refCount,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject} from \"rxjs\";\n\nimport {ISize, IVNodeHash, RenderMode, RenderService} from \"../Render\";\nimport {IFrame} from \"../State\";\n\ninterface INodePatch {\n    vnode: vd.VNode;\n    vpatch: vd.VPatch[];\n}\n\ninterface IVNodeHashes {\n    [name: string]: vd.VNode;\n}\n\ninterface IOffset {\n    bottom: number;\n    left: number;\n    right: number;\n    top: number;\n}\n\ninterface IAdaptive {\n    elementHeight: number;\n    elementWidth: number;\n    imageAspect: number;\n    renderMode: RenderMode;\n}\n\ninterface IAdaptiveOperation {\n    (adaptive: IAdaptive): IAdaptive;\n}\n\nexport class DOMRenderer {\n    private _renderService: RenderService;\n    private _currentFrame$: Observable<IFrame>;\n\n    private _adaptiveOperation$: Subject<IAdaptiveOperation> = new Subject<IAdaptiveOperation>();\n    private _offset$: Observable<IOffset>;\n\n    private _element$: Observable<Element>;\n    private _vPatch$: Observable<vd.VPatch[]>;\n    private _vNode$: Observable<vd.VNode>;\n    private _render$: Subject<IVNodeHash> = new Subject<IVNodeHash>();\n    private _renderAdaptive$: Subject<IVNodeHash> = new Subject<IVNodeHash>();\n\n    constructor (element: HTMLElement, renderService: RenderService, currentFrame$: Observable<IFrame>) {\n        this._renderService = renderService;\n        this._currentFrame$ = currentFrame$;\n\n        let rootNode: Element = vd.create(vd.h(\"div.domRenderer\", []));\n        element.appendChild(rootNode);\n\n        this._offset$ = this._adaptiveOperation$.pipe(\n            scan(\n                (adaptive: IAdaptive, operation: IAdaptiveOperation): IAdaptive => {\n                    return operation(adaptive);\n                },\n                {\n                    elementHeight: element.offsetHeight,\n                    elementWidth: element.offsetWidth,\n                    imageAspect: 0,\n                    renderMode: RenderMode.Fill,\n                }),\n            filter(\n                (adaptive: IAdaptive): boolean => {\n                    return adaptive.imageAspect > 0 && adaptive.elementWidth > 0 && adaptive.elementHeight > 0;\n                }),\n            map(\n                (adaptive: IAdaptive): IOffset => {\n                    let elementAspect: number = adaptive.elementWidth / adaptive.elementHeight;\n                    let ratio: number = adaptive.imageAspect / elementAspect;\n\n                    let verticalOffset: number = 0;\n                    let horizontalOffset: number = 0;\n\n                    if (adaptive.renderMode === RenderMode.Letterbox) {\n                        if (adaptive.imageAspect > elementAspect) {\n                            verticalOffset = adaptive.elementHeight * (1 - 1 / ratio) / 2;\n                        } else {\n                            horizontalOffset = adaptive.elementWidth * (1 - ratio) / 2;\n                        }\n                    } else {\n                        if (adaptive.imageAspect > elementAspect) {\n                            horizontalOffset = -adaptive.elementWidth * (ratio - 1) / 2;\n                        } else {\n                            verticalOffset = -adaptive.elementHeight * (1 / ratio - 1) / 2;\n                        }\n                    }\n\n                    return {\n                        bottom: verticalOffset,\n                        left: horizontalOffset,\n                        right: horizontalOffset,\n                        top: verticalOffset,\n                    };\n                }));\n\n        this._currentFrame$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode != null;\n                }),\n            distinctUntilChanged(\n                (k1: string, k2: string): boolean => {\n                    return k1 === k2;\n                },\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            map(\n                (frame: IFrame): number => {\n                    return frame.state.currentTransform.basicAspect;\n                }),\n            map(\n                 (aspect: number): IAdaptiveOperation => {\n                    return (adaptive: IAdaptive): IAdaptive => {\n                        adaptive.imageAspect = aspect;\n\n                        return adaptive;\n                    };\n                }))\n            .subscribe(this._adaptiveOperation$);\n\n        observableCombineLatest(\n                this._renderAdaptive$.pipe(\n                    scan(\n                        (vNodeHashes: IVNodeHashes, vNodeHash: IVNodeHash): IVNodeHashes => {\n                            if (vNodeHash.vnode == null) {\n                                delete vNodeHashes[vNodeHash.name];\n                            } else {\n                                vNodeHashes[vNodeHash.name] = vNodeHash.vnode;\n                            }\n                            return vNodeHashes;\n                        },\n                        {})),\n                this._offset$).pipe(\n            map(\n                (vo: [IVNodeHashes, IOffset]): IVNodeHash => {\n                    let vNodes: vd.VNode[] = [];\n                    let hashes: IVNodeHashes = vo[0];\n                    for (const name in hashes) {\n                        if (!hashes.hasOwnProperty(name)) {\n                            continue;\n                        }\n\n                        vNodes.push(hashes[name]);\n                    }\n\n                    let offset: IOffset = vo[1];\n\n                    let properties: vd.createProperties = {\n                        style: {\n                            bottom: offset.bottom + \"px\",\n                            left: offset.left + \"px\",\n                            \"pointer-events\": \"none\",\n                            position: \"absolute\",\n                            right: offset.right + \"px\",\n                            top: offset.top + \"px\",\n                        },\n                    };\n\n                    return {\n                        name: \"adaptiveDomRenderer\",\n                        vnode: vd.h(\"div.adaptiveDomRenderer\", properties, vNodes),\n                    };\n                }))\n            .subscribe(this._render$);\n\n        this._vNode$ = this._render$.pipe(\n            scan(\n                (vNodeHashes: IVNodeHashes, vNodeHash: IVNodeHash): IVNodeHashes => {\n                    if (vNodeHash.vnode == null) {\n                        delete vNodeHashes[vNodeHash.name];\n                    } else {\n                        vNodeHashes[vNodeHash.name] = vNodeHash.vnode;\n                    }\n\n                    return vNodeHashes;\n                },\n                {}),\n            map(\n                (hashes: IVNodeHashes): vd.VNode => {\n                    let vNodes: vd.VNode[] = [];\n                    for (const name in hashes) {\n                        if (!hashes.hasOwnProperty(name)) {\n                            continue;\n                        }\n\n                        vNodes.push(hashes[name]);\n                    }\n\n                    return vd.h(\"div.domRenderer\", vNodes);\n                }));\n\n        this._vPatch$ = this._vNode$.pipe(\n            scan(\n                (nodePatch: INodePatch, vNode: vd.VNode): INodePatch => {\n                    nodePatch.vpatch = vd.diff(nodePatch.vnode, vNode);\n                    nodePatch.vnode = vNode;\n                    return nodePatch;\n                },\n                {vnode: vd.h(\"div.domRenderer\", []), vpatch: null}),\n            pluck<INodePatch, vd.VPatch[]>(\"vpatch\"));\n\n        this._element$ = this._vPatch$.pipe(\n            scan(\n                (oldElement: Element, vPatch: vd.VPatch[]): Element => {\n                    return vd.patch(oldElement, vPatch);\n                },\n                rootNode),\n            publishReplay(1),\n            refCount());\n\n        this._element$.subscribe(() => { /*noop*/ });\n\n        this._renderService.size$.pipe(\n            map(\n                (size: ISize): IAdaptiveOperation => {\n                    return (adaptive: IAdaptive): IAdaptive => {\n                        adaptive.elementWidth = size.width;\n                        adaptive.elementHeight = size.height;\n\n                        return adaptive;\n                    };\n                }))\n            .subscribe(this._adaptiveOperation$);\n\n        this._renderService.renderMode$.pipe(\n            map(\n                (renderMode: RenderMode): IAdaptiveOperation => {\n                    return (adaptive: IAdaptive): IAdaptive => {\n                        adaptive.renderMode = renderMode;\n\n                        return adaptive;\n                    };\n                }))\n            .subscribe(this._adaptiveOperation$);\n    }\n\n    public get element$(): Observable<Element> {\n        return this._element$;\n    }\n\n    public get render$(): Subject<IVNodeHash> {\n        return this._render$;\n    }\n\n    public get renderAdaptive$(): Subject<IVNodeHash> {\n        return this._renderAdaptive$;\n    }\n\n    public clear(name: string): void {\n        this._renderAdaptive$.next({name: name, vnode: null});\n        this._render$.next({name: name, vnode: null});\n    }\n}\n\nexport default DOMRenderer;\n",
     "export enum GLRenderStage {\n    Background,\n    Foreground,\n}\n\nexport default GLRenderStage;\n",
     "import {merge as observableMerge, combineLatest as observableCombineLatest, Observable, Subject, Subscription} from \"rxjs\";\n\nimport {mergeMap, scan, filter, share, startWith, distinctUntilChanged, map, first, publishReplay, refCount} from \"rxjs/operators\";\nimport * as THREE from \"three\";\n\nimport {\n    GLRenderStage,\n    IGLRenderFunction,\n    IGLRender,\n    IGLRenderHash,\n    RenderCamera,\n    RenderService,\n    ISize,\n} from \"../Render\";\nimport {DOM} from \"../Utils\";\n\ninterface IGLRenderer {\n    needsRender: boolean;\n    renderer: THREE.WebGLRenderer;\n}\n\ninterface IRenderCamera {\n    frameId: number;\n    needsRender: boolean;\n    perspective: THREE.PerspectiveCamera;\n}\n\ninterface IGLRenderHashes {\n    [name: string]: IGLRender;\n}\n\ninterface IEraser {\n    needsRender: boolean;\n}\n\ninterface IGLRendererOperation {\n    (renderer: IGLRenderer): IGLRenderer;\n}\n\ninterface IRenderCameraOperation {\n    (camera: IRenderCamera): IRenderCamera;\n}\n\ninterface IGLRenderHashesOperation extends Function {\n    (hashes: IGLRenderHashes): IGLRenderHashes;\n}\n\ninterface IEraserOperation {\n    (eraser: IEraser): IEraser;\n}\n\ninterface ICombination {\n    camera: IRenderCamera;\n    eraser: IEraser;\n    renderer: IGLRenderer;\n    renders: IGLRender[];\n}\n\nexport class GLRenderer {\n    private _renderService: RenderService;\n    private _dom: DOM;\n\n    private _renderFrame$: Subject<RenderCamera> = new Subject<RenderCamera>();\n\n    private _renderCameraOperation$: Subject<IRenderCameraOperation> = new Subject<IRenderCameraOperation>();\n    private _renderCamera$: Observable<IRenderCamera>;\n\n    private _render$: Subject<IGLRenderHash> = new Subject<IGLRenderHash>();\n    private _clear$: Subject<string> = new Subject<string>();\n    private _renderOperation$: Subject<IGLRenderHashesOperation> = new Subject<IGLRenderHashesOperation>();\n    private _renderCollection$: Observable<IGLRenderHashes>;\n\n    private _rendererOperation$: Subject<IGLRendererOperation> = new Subject<IGLRendererOperation>();\n    private _renderer$: Observable<IGLRenderer>;\n\n    private _eraserOperation$: Subject<IEraserOperation> = new Subject<IEraserOperation>();\n    private _eraser$: Observable<IEraser>;\n\n    private _webGLRenderer$: Observable<THREE.WebGLRenderer>;\n\n    private _renderFrameSubscription: Subscription;\n\n    constructor (canvasContainer: HTMLElement, renderService: RenderService, dom?: DOM) {\n        this._renderService = renderService;\n        this._dom = !!dom ? dom : new DOM();\n\n        this._renderer$ = this._rendererOperation$.pipe(\n            scan(\n                (renderer: IGLRenderer, operation: IGLRendererOperation): IGLRenderer => {\n                    return operation(renderer);\n                },\n                { needsRender: false, renderer: null }),\n            filter(\n                (renderer: IGLRenderer): boolean => {\n                    return !!renderer.renderer;\n                }));\n\n        this._renderCollection$ = this._renderOperation$.pipe(\n            scan(\n                (hashes: IGLRenderHashes, operation: IGLRenderHashesOperation): IGLRenderHashes => {\n                    return operation(hashes);\n                },\n                {}),\n            share());\n\n        this._renderCamera$ = this._renderCameraOperation$.pipe(\n            scan(\n                (rc: IRenderCamera, operation: IRenderCameraOperation): IRenderCamera => {\n                    return operation(rc);\n                },\n                { frameId: -1, needsRender: false, perspective: null }));\n\n        this._eraser$ = this._eraserOperation$.pipe(\n            startWith(\n                (eraser: IEraser): IEraser => {\n                    return eraser;\n                }),\n            scan(\n                (eraser: IEraser, operation: IEraserOperation): IEraser => {\n                    return operation(eraser);\n                },\n                { needsRender: false }));\n\n        observableCombineLatest(\n                this._renderer$,\n                this._renderCollection$,\n                this._renderCamera$,\n                this._eraser$).pipe(\n            map(\n                ([renderer, hashes, rc, eraser]: [IGLRenderer, IGLRenderHashes, IRenderCamera, IEraser]): ICombination => {\n                    let renders: IGLRender[] = Object.keys(hashes)\n                        .map((key: string): IGLRender => {\n                            return hashes[key];\n                        });\n\n                    return { camera: rc, eraser: eraser, renderer: renderer, renders: renders };\n                }),\n            filter(\n                (co: ICombination): boolean => {\n                    let needsRender: boolean =\n                        co.renderer.needsRender ||\n                        co.camera.needsRender ||\n                        co.eraser.needsRender;\n\n                    let frameId: number = co.camera.frameId;\n\n                    for (let render of co.renders) {\n                        if (render.frameId !== frameId) {\n                            return false;\n                        }\n\n                        needsRender = needsRender || render.needsRender;\n                    }\n\n                    return needsRender;\n                }),\n            distinctUntilChanged(\n                (n1: number, n2: number): boolean => {\n                    return n1 === n2;\n                },\n                (co: ICombination): number => {\n                    return co.eraser.needsRender ? -1 : co.camera.frameId;\n                }))\n            .subscribe(\n                (co: ICombination): void => {\n                    co.renderer.needsRender = false;\n                    co.camera.needsRender = false;\n                    co.eraser.needsRender = false;\n\n                    let perspectiveCamera: THREE.PerspectiveCamera = co.camera.perspective;\n\n                    let backgroundRenders: IGLRenderFunction[] = [];\n                    let foregroundRenders: IGLRenderFunction[] = [];\n\n                    for (let render of co.renders) {\n                        if (render.stage === GLRenderStage.Background) {\n                            backgroundRenders.push(render.render);\n                        } else if (render.stage === GLRenderStage.Foreground) {\n                            foregroundRenders.push(render.render);\n                        }\n                    }\n\n                    let renderer: THREE.WebGLRenderer = co.renderer.renderer;\n\n                    renderer.clear();\n\n                    for (let render of backgroundRenders) {\n                        render(perspectiveCamera, renderer);\n                    }\n\n                    renderer.clearDepth();\n\n                    for (let render of foregroundRenders) {\n                        render(perspectiveCamera, renderer);\n                    }\n                });\n\n        this._renderFrame$.pipe(\n            map(\n                (rc: RenderCamera): IRenderCameraOperation => {\n                    return (irc: IRenderCamera): IRenderCamera => {\n                        irc.frameId = rc.frameId;\n                        irc.perspective = rc.perspective;\n\n                        if (rc.changed === true) {\n                            irc.needsRender = true;\n                        }\n\n                        return irc;\n                    };\n                }))\n            .subscribe(this._renderCameraOperation$);\n\n        this._renderFrameSubscribe();\n\n        let renderHash$: Observable<IGLRenderHashesOperation> = this._render$.pipe(\n            map(\n                (hash: IGLRenderHash) => {\n                    return (hashes: IGLRenderHashes): IGLRenderHashes => {\n                        hashes[hash.name] = hash.render;\n\n                        return hashes;\n                    };\n                }));\n\n        let clearHash$: Observable<IGLRenderHashesOperation> = this._clear$.pipe(\n            map(\n                (name: string) => {\n                    return (hashes: IGLRenderHashes): IGLRenderHashes => {\n                        delete hashes[name];\n\n                        return hashes;\n                    };\n                }));\n\n        observableMerge(renderHash$, clearHash$)\n            .subscribe(this._renderOperation$);\n\n        this._webGLRenderer$ = this._render$.pipe(\n            first(),\n            map(\n                (hash: IGLRenderHash): THREE.WebGLRenderer => {\n                    const canvas: HTMLCanvasElement = this._dom.createElement(\"canvas\", \"mapillary-js-canvas\");\n                    canvas.style.position = \"absolute\";\n                    canvas.setAttribute(\"tabindex\", \"0\");\n                    canvasContainer.appendChild(canvas);\n\n                    const element: HTMLElement = renderService.element;\n                    const webGLRenderer: THREE.WebGLRenderer = new THREE.WebGLRenderer({ canvas: canvas });\n                    webGLRenderer.setPixelRatio(window.devicePixelRatio);\n                    webGLRenderer.setSize(element.offsetWidth, element.offsetHeight);\n                    webGLRenderer.setClearColor(new THREE.Color(0x202020), 1.0);\n                    webGLRenderer.autoClear = false;\n\n                    return webGLRenderer;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._webGLRenderer$.subscribe(() => { /*noop*/ });\n\n        let createRenderer$: Observable<IGLRendererOperation> = this._webGLRenderer$.pipe(\n            first(),\n            map(\n                (webGLRenderer: THREE.WebGLRenderer): IGLRendererOperation => {\n                    return (renderer: IGLRenderer): IGLRenderer => {\n                        renderer.needsRender = true;\n                        renderer.renderer = webGLRenderer;\n\n                        return renderer;\n                    };\n                }));\n\n        let resizeRenderer$: Observable<IGLRendererOperation> = this._renderService.size$.pipe(\n            map(\n                (size: ISize): IGLRendererOperation => {\n                    return (renderer: IGLRenderer): IGLRenderer => {\n                        if (renderer.renderer == null) {\n                            return renderer;\n                        }\n\n                        renderer.renderer.setSize(size.width, size.height);\n                        renderer.needsRender = true;\n\n                        return renderer;\n                    };\n                }));\n\n        let clearRenderer$: Observable<IGLRendererOperation> = this._clear$.pipe(\n            map(\n                (name: string) => {\n                    return (renderer: IGLRenderer): IGLRenderer => {\n                        if (renderer.renderer == null) {\n                            return renderer;\n                        }\n\n                        renderer.needsRender = true;\n\n                        return renderer;\n                    };\n                }));\n\n        observableMerge(createRenderer$, resizeRenderer$, clearRenderer$)\n            .subscribe(this._rendererOperation$);\n\n        let renderCollectionEmpty$: Observable<IGLRenderHashes> = this._renderCollection$.pipe(\n            filter(\n                (hashes: IGLRenderHashes): boolean => {\n                    return Object.keys(hashes).length === 0;\n                }),\n            share());\n\n        renderCollectionEmpty$\n            .subscribe(\n                (hashes: IGLRenderHashes): void => {\n                    if (this._renderFrameSubscription == null) {\n                        return;\n                    }\n\n                    this._renderFrameSubscription.unsubscribe();\n                    this._renderFrameSubscription = null;\n\n                    this._renderFrameSubscribe();\n                });\n\n        renderCollectionEmpty$.pipe(\n            map(\n                (hashes: IGLRenderHashes): IEraserOperation => {\n                    return (eraser: IEraser): IEraser => {\n                        eraser.needsRender = true;\n\n                        return eraser;\n                    };\n                }))\n            .subscribe(this._eraserOperation$);\n    }\n\n    public get render$(): Subject<IGLRenderHash> {\n        return this._render$;\n    }\n\n    public get webGLRenderer$(): Observable<THREE.WebGLRenderer> {\n        return this._webGLRenderer$;\n    }\n\n    public clear(name: string): void {\n        this._clear$.next(name);\n    }\n\n    private _renderFrameSubscribe(): void {\n        this._render$.pipe(\n            first(),\n            map(\n                (renderHash: IGLRenderHash): IRenderCameraOperation => {\n                    return (irc: IRenderCamera): IRenderCamera => {\n                        irc.needsRender = true;\n\n                        return irc;\n                    };\n                }))\n             .subscribe(\n                (operation: IRenderCameraOperation): void => {\n                    this._renderCameraOperation$.next(operation);\n                });\n\n        this._renderFrameSubscription = this._render$.pipe(\n            first(),\n            mergeMap(\n                (hash: IGLRenderHash): Observable<RenderCamera> => {\n                    return this._renderService.renderCameraFrame$;\n                }))\n            .subscribe(this._renderFrame$);\n    }\n}\n\nexport default GLRenderer;\n",
-    "import * as THREE from \"three\";\n\nimport {\n    Camera,\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../Geo\";\nimport {\n    RenderMode,\n    ISize,\n} from \"../Render\";\nimport {\n    IRotation,\n    IFrame,\n    State,\n} from \"../State\";\nimport { ICurrentState } from \"../state/interfaces/interfaces\";\n\nexport class RenderCamera {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _alpha: number;\n    private _renderMode: RenderMode;\n    private _zoom: number;\n    private _frameId: number;\n\n    private _camera: Camera;\n    private _perspective: THREE.PerspectiveCamera;\n\n    private _rotation: IRotation;\n\n    private _changed: boolean;\n    private _changedForFrame: number;\n\n    private _currentNodeId: string;\n    private _previousNodeId: string;\n\n    private _currentPano: boolean;\n    private _previousPano: boolean;\n\n    private _state: State;\n\n    private _currentProjectedPoints: number[][];\n    private _previousProjectedPoints: number[][];\n\n    private _currentFov: number;\n    private _previousFov: number;\n\n    private _initialFov: number;\n\n    constructor(elementWidth: number, elementHeight: number, renderMode: RenderMode) {\n        this._spatial = new Spatial();\n        this._viewportCoords = new ViewportCoords();\n\n        this._initialFov = 50;\n\n        this._alpha = -1;\n        this._renderMode = renderMode;\n        this._zoom = 0;\n\n        this._frameId = -1;\n\n        this._changed = false;\n        this._changedForFrame = -1;\n\n        this._currentNodeId = null;\n        this._previousNodeId = null;\n\n        this._currentPano = false;\n        this._previousPano = false;\n\n        this._state = null;\n\n        this._currentProjectedPoints = [];\n        this._previousProjectedPoints = [];\n\n        this._currentFov = this._initialFov;\n        this._previousFov = this._initialFov;\n\n        this._camera = new Camera();\n\n        this._perspective = new THREE.PerspectiveCamera(\n            this._initialFov,\n            this._computeAspect(elementWidth, elementHeight),\n            0.16,\n            10000);\n\n        this._perspective.matrixAutoUpdate = false;\n\n        this._rotation = { phi: 0, theta: 0 };\n    }\n\n    public get alpha(): number {\n        return this._alpha;\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get changed(): boolean {\n        return this._frameId === this._changedForFrame;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get perspective(): THREE.PerspectiveCamera {\n        return this._perspective;\n    }\n\n    public get renderMode(): RenderMode {\n        return this._renderMode;\n    }\n\n    public get rotation(): IRotation {\n        return this._rotation;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public setFrame(frame: IFrame): void {\n        const state: ICurrentState = frame.state;\n\n        if (state.state !== this._state) {\n            this._state = state.state;\n\n            this._changed = true;\n        }\n\n        const currentNodeId: string = state.currentNode.key;\n        const previousNodeId: string = !!state.previousNode ? state.previousNode.key : null;\n\n        if (currentNodeId !== this._currentNodeId) {\n            this._currentNodeId = currentNodeId;\n            this._currentPano = !!state.currentTransform.gpano;\n            this._currentProjectedPoints = this._computeProjectedPoints(state.currentTransform);\n\n            this._changed = true;\n        }\n\n        if (previousNodeId !== this._previousNodeId) {\n            this._previousNodeId = previousNodeId;\n            this._previousPano = !!state.previousTransform.gpano;\n            this._previousProjectedPoints = this._computeProjectedPoints(state.previousTransform);\n\n            this._changed = true;\n        }\n\n        const zoom: number = state.zoom;\n\n        if (zoom !== this._zoom) {\n            this._zoom = zoom;\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._currentFov = this._computeCurrentFov();\n            this._previousFov = this._computePreviousFov();\n        }\n\n        const alpha: number = state.alpha;\n\n        if (this._changed || alpha !== this._alpha) {\n            this._alpha = alpha;\n\n            this._perspective.fov = this._state === State.Earth ?\n                60 :\n                this._interpolateFov(\n                    this._currentFov,\n                    this._previousFov,\n                    this._alpha);\n\n            this._changed = true;\n        }\n\n        const camera: Camera = state.camera;\n\n        if (this._camera.diff(camera) > 1e-9) {\n            this._camera.copy(camera);\n\n            this._rotation = this._computeRotation(camera);\n\n            this._perspective.up.copy(camera.up);\n            this._perspective.position.copy(camera.position);\n            this._perspective.lookAt(camera.lookat);\n            this._perspective.updateMatrix();\n            this._perspective.updateMatrixWorld(false);\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._perspective.updateProjectionMatrix();\n        }\n\n        this._setFrameId(frame.id);\n    }\n\n    public setRenderMode(renderMode: RenderMode): void {\n        this._renderMode = renderMode;\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    public setSize(size: ISize): void {\n        this._perspective.aspect = this._computeAspect(size.width, size.height);\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    private _computeAspect(elementWidth: number, elementHeight: number): number {\n        return elementWidth === 0 ? 0 : elementWidth / elementHeight;\n    }\n\n    private _computeCurrentFov(): number {\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return this._currentPano ?\n            this._yToFov(1, this._zoom) :\n            this._computeVerticalFov(this._currentProjectedPoints, this._renderMode, this._zoom, this.perspective.aspect);\n    }\n\n    private _computeFov(): number {\n        this._currentFov = this._computeCurrentFov();\n        this._previousFov = this._computePreviousFov();\n\n        return this._interpolateFov(this._currentFov, this._previousFov, this._alpha);\n    }\n\n    private _computePreviousFov(): number {\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return !this._previousNodeId ?\n            this._currentFov :\n            this._previousPano ?\n                this._yToFov(1, this._zoom) :\n                this._computeVerticalFov(this._previousProjectedPoints, this._renderMode, this._zoom, this.perspective.aspect);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const os: number[][] = [[0.5, 0], [1, 0]];\n        const ds: number[][] = [[0.5, 0], [0, 0.5]];\n        const pointsPerSide: number = 100;\n\n        const basicPoints: number[][] = [];\n\n        for (let side: number = 0; side < os.length; ++side) {\n            const o: number[] = os[side];\n            const d: number[] = ds[side];\n\n            for (let i: number = 0; i <= pointsPerSide; ++i) {\n                basicPoints.push([o[0] + d[0] * i / pointsPerSide,\n                                o[1] + d[1] * i / pointsPerSide]);\n            }\n        }\n\n        const camera: THREE.Camera = new THREE.Camera();\n        camera.up.copy(transform.upVector());\n        camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));\n        camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));\n        camera.updateMatrix();\n        camera.updateMatrixWorld(true);\n\n        const projectedPoints: number[][] = basicPoints\n            .map(\n                (basicPoint: number[]): number[] => {\n                    const worldPoint: number[] = transform.unprojectBasic(basicPoint, 10000);\n                    const cameraPoint: number[] = this._viewportCoords.worldToCamera(worldPoint, camera);\n\n                    return [\n                        Math.abs(cameraPoint[0] / cameraPoint[2]),\n                        Math.abs(cameraPoint[1] / cameraPoint[2]),\n                    ];\n                });\n\n        return projectedPoints;\n    }\n\n    private _computeRequiredVerticalFov(projectedPoint: number[], zoom: number, aspect: number): number {\n        const maxY: number = Math.max(projectedPoint[0] / aspect, projectedPoint[1]);\n\n        return this._yToFov(maxY, zoom);\n    }\n\n    private _computeRotation(camera: Camera): IRotation {\n        let direction: THREE.Vector3 = camera.lookat.clone().sub(camera.position);\n        let up: THREE.Vector3 = camera.up.clone();\n\n        let upProjection: number = direction.clone().dot(up);\n        let planeProjection: THREE.Vector3 = direction.clone().sub(up.clone().multiplyScalar(upProjection));\n\n        let phi: number = Math.atan2(planeProjection.y, planeProjection.x);\n        let theta: number = Math.PI / 2 - this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n\n        return { phi: phi, theta: theta };\n    }\n\n    private _computeVerticalFov(projectedPoints: number[][], renderMode: RenderMode, zoom: number, aspect: number): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._computeRequiredVerticalFov(projectedPoint, zoom, aspect);\n                });\n\n        const fov: number = renderMode === RenderMode.Fill ?\n            Math.min(...fovs) * 0.995 :\n            Math.max(...fovs);\n\n        return fov;\n    }\n\n    private _yToFov(y: number, zoom: number): number {\n        return 2 * Math.atan(y / Math.pow(2, zoom)) * 180 / Math.PI;\n    }\n\n    private _interpolateFov(v1: number, v2: number, alpha: number): number {\n        return alpha * v1 + (1 - alpha) * v2;\n    }\n\n    private _setFrameId(frameId: number): void {\n        this._frameId = frameId;\n\n        if (this._changed) {\n            this._changed = false;\n            this._changedForFrame = frameId;\n        }\n    }\n}\n\nexport default RenderCamera;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    Camera,\n    Spatial,\n    Transform,\n    ViewportCoords,\n    Geo,\n} from \"../Geo\";\nimport {\n    RenderMode,\n    ISize,\n} from \"../Render\";\nimport {\n    IRotation,\n    IFrame,\n    State,\n} from \"../State\";\nimport { ICurrentState } from \"../state/interfaces/interfaces\";\n\nexport class RenderCamera {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _alpha: number;\n    private _renderMode: RenderMode;\n    private _zoom: number;\n    private _frameId: number;\n\n    private _camera: Camera;\n    private _perspective: THREE.PerspectiveCamera;\n\n    private _rotation: IRotation;\n\n    private _changed: boolean;\n    private _changedForFrame: number;\n\n    private _currentNodeId: string;\n    private _previousNodeId: string;\n\n    private _currentPano: boolean;\n    private _previousPano: boolean;\n\n    private _state: State;\n\n    private _currentProjectedPoints: number[][];\n    private _previousProjectedPoints: number[][];\n\n    private _currentFov: number;\n    private _previousFov: number;\n\n    private _initialFov: number;\n\n    constructor(elementWidth: number, elementHeight: number, renderMode: RenderMode) {\n        this._spatial = new Spatial();\n        this._viewportCoords = new ViewportCoords();\n\n        this._initialFov = 50;\n\n        this._alpha = -1;\n        this._renderMode = renderMode;\n        this._zoom = 0;\n\n        this._frameId = -1;\n\n        this._changed = false;\n        this._changedForFrame = -1;\n\n        this._currentNodeId = null;\n        this._previousNodeId = null;\n\n        this._currentPano = false;\n        this._previousPano = false;\n\n        this._state = null;\n\n        this._currentProjectedPoints = [];\n        this._previousProjectedPoints = [];\n\n        this._currentFov = this._initialFov;\n        this._previousFov = this._initialFov;\n\n        this._camera = new Camera();\n\n        this._perspective = new THREE.PerspectiveCamera(\n            this._initialFov,\n            this._computeAspect(elementWidth, elementHeight),\n            0.16,\n            10000);\n\n        this._perspective.matrixAutoUpdate = false;\n\n        this._rotation = { phi: 0, theta: 0 };\n    }\n\n    public get alpha(): number {\n        return this._alpha;\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get changed(): boolean {\n        return this._frameId === this._changedForFrame;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get perspective(): THREE.PerspectiveCamera {\n        return this._perspective;\n    }\n\n    public get renderMode(): RenderMode {\n        return this._renderMode;\n    }\n\n    public get rotation(): IRotation {\n        return this._rotation;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public setFrame(frame: IFrame): void {\n        const state: ICurrentState = frame.state;\n\n        if (state.state !== this._state) {\n            this._state = state.state;\n\n            this._changed = true;\n        }\n\n        const currentNodeId: string = state.currentNode.key;\n        const previousNodeId: string = !!state.previousNode ? state.previousNode.key : null;\n\n        if (currentNodeId !== this._currentNodeId) {\n            this._currentNodeId = currentNodeId;\n            this._currentPano = !!state.currentTransform.gpano;\n            this._currentProjectedPoints = this._computeProjectedPoints(state.currentTransform);\n\n            this._changed = true;\n        }\n\n        if (previousNodeId !== this._previousNodeId) {\n            this._previousNodeId = previousNodeId;\n            this._previousPano = !!state.previousTransform.gpano;\n            this._previousProjectedPoints = this._computeProjectedPoints(state.previousTransform);\n\n            this._changed = true;\n        }\n\n        const zoom: number = state.zoom;\n\n        if (zoom !== this._zoom) {\n            this._zoom = zoom;\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._currentFov = this._computeCurrentFov();\n            this._previousFov = this._computePreviousFov();\n        }\n\n        const alpha: number = state.alpha;\n\n        if (this._changed || alpha !== this._alpha) {\n            this._alpha = alpha;\n\n            this._perspective.fov = this._state === State.Earth ?\n                60 :\n                this._interpolateFov(\n                    this._currentFov,\n                    this._previousFov,\n                    this._alpha);\n\n            this._changed = true;\n        }\n\n        const camera: Camera = state.camera;\n\n        if (this._camera.diff(camera) > 1e-9) {\n            this._camera.copy(camera);\n\n            this._rotation = this._computeRotation(camera);\n\n            this._perspective.up.copy(camera.up);\n            this._perspective.position.copy(camera.position);\n            this._perspective.lookAt(camera.lookat);\n            this._perspective.updateMatrix();\n            this._perspective.updateMatrixWorld(false);\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._perspective.updateProjectionMatrix();\n        }\n\n        this._setFrameId(frame.id);\n    }\n\n    public setRenderMode(renderMode: RenderMode): void {\n        this._renderMode = renderMode;\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    public setSize(size: ISize): void {\n        this._perspective.aspect = this._computeAspect(size.width, size.height);\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    private _computeAspect(elementWidth: number, elementHeight: number): number {\n        return elementWidth === 0 ? 0 : elementWidth / elementHeight;\n    }\n\n    private _computeCurrentFov(): number {\n        if (this._perspective.aspect === 0) {\n            return 0;\n        }\n\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return this._currentPano ?\n            this._yToFov(1, this._zoom) :\n            this._computeVerticalFov(this._currentProjectedPoints, this._renderMode, this._zoom, this.perspective.aspect);\n    }\n\n    private _computeFov(): number {\n        this._currentFov = this._computeCurrentFov();\n        this._previousFov = this._computePreviousFov();\n\n        return this._interpolateFov(this._currentFov, this._previousFov, this._alpha);\n    }\n\n    private _computePreviousFov(): number {\n        if (this._perspective.aspect === 0) {\n            return 0;\n        }\n\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return !this._previousNodeId ?\n            this._currentFov :\n            this._previousPano ?\n                this._yToFov(1, this._zoom) :\n                this._computeVerticalFov(this._previousProjectedPoints, this._renderMode, this._zoom, this.perspective.aspect);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const vertices: number[][] = [[0.5, 0], [1, 0]];\n        const directions: number[][] = [[0.5, 0], [0, 0.5]];\n        const pointsPerLine: number = 100;\n\n        return Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);\n    }\n\n    private _computeRequiredVerticalFov(projectedPoint: number[], zoom: number, aspect: number): number {\n        const maxY: number = Math.max(projectedPoint[0] / aspect, projectedPoint[1]);\n\n        return this._yToFov(maxY, zoom);\n    }\n\n    private _computeRotation(camera: Camera): IRotation {\n        let direction: THREE.Vector3 = camera.lookat.clone().sub(camera.position);\n        let up: THREE.Vector3 = camera.up.clone();\n\n        let phi: number = this._spatial.azimuthal(direction.toArray(), up.toArray());\n        let theta: number = Math.PI / 2 - this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n\n        return { phi: phi, theta: theta };\n    }\n\n    private _computeVerticalFov(projectedPoints: number[][], renderMode: RenderMode, zoom: number, aspect: number): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._computeRequiredVerticalFov(projectedPoint, zoom, aspect);\n                });\n\n        const fov: number = renderMode === RenderMode.Fill ?\n            Math.min(...fovs) * 0.995 :\n            Math.max(...fovs);\n\n        return fov;\n    }\n\n    private _yToFov(y: number, zoom: number): number {\n        return 2 * Math.atan(y / Math.pow(2, zoom)) * 180 / Math.PI;\n    }\n\n    private _interpolateFov(v1: number, v2: number, alpha: number): number {\n        return alpha * v1 + (1 - alpha) * v2;\n    }\n\n    private _setFrameId(frameId: number): void {\n        this._frameId = frameId;\n\n        if (this._changed) {\n            this._changed = false;\n            this._changedForFrame = frameId;\n        }\n    }\n}\n\nexport default RenderCamera;\n",
     "/**\n * Enumeration for render mode\n * @enum {number}\n * @readonly\n * @description Modes for specifying how rendering is done\n * in the viewer. All modes preserves the original aspect\n * ratio of the images.\n */\nexport enum RenderMode {\n\n    /**\n     * Displays all content within the viewer.\n     *\n     * @description Black bars shown on both\n     * sides of the content. Bars are shown\n     * either below and above or to the left\n     * and right of the content depending on\n     * the aspect ratio relation between the\n     * image and the viewer.\n     */\n    Letterbox,\n\n    /**\n     * Fills the viewer by cropping content.\n     *\n     * @description Cropping is done either\n     * in horizontal or vertical direction\n     * depending on the aspect ratio relation\n     * between the image and the viewer.\n     */\n    Fill,\n}\n\nexport default RenderMode;\n",
     "import {withLatestFrom, map, startWith, scan, publishReplay, skip, refCount, tap, filter} from \"rxjs/operators\";\nimport {Observable, Subject, BehaviorSubject} from \"rxjs\";\n\nimport {Spatial} from \"../Geo\";\nimport {RenderCamera, RenderMode, ISize} from \"../Render\";\nimport {IFrame} from \"../State\";\n\ninterface IRenderCameraOperation {\n    (rc: RenderCamera): RenderCamera;\n}\n\nexport class RenderService {\n    private _bearing$: Observable<number>;\n\n    private _element: HTMLElement;\n    private _currentFrame$: Observable<IFrame>;\n\n    private _renderCameraOperation$: Subject<IRenderCameraOperation>;\n    private _renderCameraHolder$: Observable<RenderCamera>;\n    private _renderCameraFrame$: Observable<RenderCamera>;\n    private _renderCamera$: Observable<RenderCamera>;\n\n    private _resize$: Subject<void>;\n    private _size$: BehaviorSubject<ISize>;\n\n    private _spatial: Spatial;\n\n    private _renderMode$: BehaviorSubject<RenderMode>;\n\n    constructor(element: HTMLElement, currentFrame$: Observable<IFrame>, renderMode: RenderMode, renderCamera?: RenderCamera) {\n        this._element = element;\n        this._currentFrame$ = currentFrame$;\n\n        this._spatial = new Spatial();\n\n        renderMode = renderMode != null ? renderMode : RenderMode.Fill;\n\n        this._resize$ = new Subject<void>();\n        this._renderCameraOperation$ = new Subject<IRenderCameraOperation>();\n\n        this._size$ =\n            new BehaviorSubject<ISize>(\n                {\n                    height: this._element.offsetHeight,\n                    width: this._element.offsetWidth,\n                });\n\n        this._resize$.pipe(\n            map(\n                (): ISize => {\n                    return { height: this._element.offsetHeight, width: this._element.offsetWidth };\n                }))\n            .subscribe(this._size$);\n\n        this._renderMode$ = new BehaviorSubject<RenderMode>(renderMode);\n\n        this._renderCameraHolder$ = this._renderCameraOperation$.pipe(\n            startWith(\n                (rc: RenderCamera): RenderCamera => {\n                    return rc;\n                }),\n            scan(\n                (rc: RenderCamera, operation: IRenderCameraOperation): RenderCamera => {\n                    return operation(rc);\n                },\n                !!renderCamera ? renderCamera : new RenderCamera(this._element.offsetWidth, this._element.offsetHeight, renderMode)),\n            publishReplay(1),\n            refCount());\n\n        this._renderCameraFrame$ = this._currentFrame$.pipe(\n            withLatestFrom(this._renderCameraHolder$),\n            tap(\n                ([frame, rc]: [IFrame, RenderCamera]): void => {\n                    rc.setFrame(frame);\n                }),\n            map(\n                (args: [IFrame, RenderCamera]): RenderCamera => {\n                    return args[1];\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._renderCamera$ = this._renderCameraFrame$.pipe(\n            filter(\n                (rc: RenderCamera): boolean => {\n                    return rc.changed;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._bearing$ = this._renderCamera$.pipe(\n            map(\n                (rc: RenderCamera): number => {\n                    let bearing: number =\n                        this._spatial.radToDeg(\n                            this._spatial.azimuthalToBearing(rc.rotation.phi));\n\n                    return this._spatial.wrap(bearing, 0, 360);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._size$.pipe(\n            skip(1),\n            map(\n                (size: ISize) => {\n                    return (rc: RenderCamera): RenderCamera => {\n                        rc.setSize(size);\n\n                        return rc;\n                    };\n                }))\n            .subscribe(this._renderCameraOperation$);\n\n        this._renderMode$.pipe(\n            skip(1),\n            map(\n                (rm: RenderMode) => {\n                    return (rc: RenderCamera): RenderCamera => {\n                        rc.setRenderMode(rm);\n\n                        return rc;\n                    };\n                }))\n            .subscribe(this._renderCameraOperation$);\n\n        this._bearing$.subscribe(() => { /*noop*/ });\n        this._renderCameraHolder$.subscribe(() => { /*noop*/ });\n        this._size$.subscribe(() => { /*noop*/ });\n        this._renderMode$.subscribe(() => { /*noop*/ });\n        this._renderCamera$.subscribe(() => { /*noop*/ });\n        this._renderCameraFrame$.subscribe(() => { /*noop*/ });\n    }\n\n    public get bearing$(): Observable<number> {\n        return this._bearing$;\n    }\n\n    public get element(): HTMLElement {\n        return this._element;\n    }\n\n    public get resize$(): Subject<void> {\n        return this._resize$;\n    }\n\n    public get size$(): Observable<ISize> {\n        return this._size$;\n    }\n\n    public get renderMode$(): Subject<RenderMode> {\n        return this._renderMode$;\n    }\n\n    public get renderCameraFrame$(): Observable<RenderCamera> {\n        return this._renderCameraFrame$;\n    }\n\n    public get renderCamera$(): Observable<RenderCamera> {\n        return this._renderCamera$;\n    }\n}\n\nexport default RenderService;\n",
     "export class FrameGenerator {\n    private _cancelAnimationFrame: (handle: number) => void;\n    private _requestAnimationFrame: (cb: () => void) => number;\n\n    constructor(root: any) {\n        if (root.requestAnimationFrame) {\n            this._cancelAnimationFrame = root.cancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.requestAnimationFrame.bind(root);\n        } else if (root.mozRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.mozCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.mozRequestAnimationFrame.bind(root);\n        } else if (root.webkitRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.webkitCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.webkitRequestAnimationFrame.bind(root);\n        } else if (root.msRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.msCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.msRequestAnimationFrame.bind(root);\n        } else if (root.oRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.oCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.oRequestAnimationFrame.bind(root);\n        } else {\n            this._cancelAnimationFrame = root.clearTimeout.bind(root);\n            this._requestAnimationFrame = (cb: () => void): number => { return root.setTimeout(cb, 1000 / 60); };\n        }\n    }\n\n     public get cancelAnimationFrame(): (handle: number) => void {\n         return this._cancelAnimationFrame;\n     }\n\n     public get requestAnimationFrame(): (cb: () => void) => number {\n         return this._requestAnimationFrame;\n     }\n}\n\nexport default FrameGenerator;\n",
     "import {\n    BehaviorSubject,\n    Observable,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    first,\n    tap,\n    filter,\n    withLatestFrom,\n    startWith,\n    pairwise,\n    distinctUntilChanged,\n    publishReplay,\n    refCount,\n    bufferCount,\n    share,\n    switchMap,\n    map,\n    scan,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {Node} from \"../Graph\";\nimport {\n    Camera,\n    ILatLonAlt,\n    Transform,\n} from \"../Geo\";\nimport {\n    FrameGenerator,\n    IStateContext,\n    IFrame,\n    IRotation,\n    StateContext,\n    State,\n    TransitionMode,\n} from \"../State\";\n\ninterface IContextOperation {\n    (context: IStateContext): IStateContext;\n}\n\nexport class StateService {\n    private _start$: Subject<void>;\n\n    private _frame$: Subject<number>;\n\n    private _contextOperation$: BehaviorSubject<IContextOperation>;\n    private _context$: Observable<IStateContext>;\n    private _fps$: Observable<number>;\n    private _state$: Observable<State>;\n\n    private _currentState$: Observable<IFrame>;\n    private _lastState$: Observable<IFrame>;\n    private _currentNode$: Observable<Node>;\n    private _currentNodeExternal$: Observable<Node>;\n    private _currentCamera$: Observable<Camera>;\n    private _currentKey$: BehaviorSubject<string>;\n    private _currentTransform$: Observable<Transform>;\n    private _reference$: Observable<ILatLonAlt>;\n\n    private _inMotionOperation$: Subject<boolean>;\n    private _inMotion$: Observable<boolean>;\n\n    private _inTranslationOperation$: Subject<boolean>;\n    private _inTranslation$: Observable<boolean>;\n\n    private _appendNode$: Subject<Node> = new Subject<Node>();\n\n    private _frameGenerator: FrameGenerator;\n    private _frameId: number;\n\n    private _fpsSampleRate: number;\n\n    constructor(transitionMode?: TransitionMode) {\n        this._start$ = new Subject<void>();\n        this._frame$ = new Subject<number>();\n        this._fpsSampleRate = 30;\n\n        this._contextOperation$ = new BehaviorSubject<IContextOperation>(\n            (context: IStateContext): IStateContext => {\n                return context;\n            });\n\n        this._context$ = this._contextOperation$.pipe(\n            scan(\n                (context: IStateContext, operation: IContextOperation): IStateContext => {\n                    return operation(context);\n                },\n                new StateContext(transitionMode)),\n            publishReplay(1),\n            refCount());\n\n        this._state$ = this._context$.pipe(\n            map(\n                (context: IStateContext): State => {\n                    return context.state;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._fps$ = this._start$.pipe(\n            switchMap(\n                (): Observable<number> => {\n                    return this._frame$.pipe(\n                        bufferCount(1, this._fpsSampleRate),\n                        map(\n                            (frameIds: number[]): number => {\n                                return new Date().getTime();\n                            }),\n                        pairwise(),\n                        map(\n                            (times: [number, number]): number => {\n                                return Math.max(20, 1000 * this._fpsSampleRate / (times[1] - times[0]));\n                            }),\n                        startWith(60));\n                }),\n            share());\n\n        this._currentState$ = this._frame$.pipe(\n            withLatestFrom(\n                this._fps$,\n                this._context$,\n                (frameId: number, fps: number, context: IStateContext): [number, number, IStateContext] => {\n                    return [frameId, fps, context];\n                }),\n            filter(\n                (fc: [number, number, IStateContext]): boolean => {\n                    return fc[2].currentNode != null;\n                }),\n            tap(\n                (fc: [number, number, IStateContext]): void => {\n                    fc[2].update(fc[1]);\n                }),\n            map(\n                (fc: [number, number, IStateContext]): IFrame => {\n                    return { fps: fc[1], id: fc[0], state: fc[2] };\n                }),\n            share());\n\n        this._lastState$ = this._currentState$.pipe(\n            publishReplay(1),\n            refCount());\n\n        let nodeChanged$: Observable<IFrame> = this._currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (f: IFrame): string => {\n                    return f.state.currentNode.key;\n                }),\n            publishReplay(1),\n            refCount());\n\n        let nodeChangedSubject$: Subject<IFrame> = new Subject<IFrame>();\n\n        nodeChanged$\n            .subscribe(nodeChangedSubject$);\n\n        this._currentKey$ = new BehaviorSubject<string>(null);\n\n        nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): string => {\n                    return f.state.currentNode.key;\n                }))\n            .subscribe(this._currentKey$);\n\n        this._currentNode$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): Node => {\n                    return f.state.currentNode;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._currentCamera$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): Camera => {\n                    return f.state.currentCamera;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._currentTransform$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): Transform => {\n                    return f.state.currentTransform;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._reference$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): ILatLonAlt => {\n                    return f.state.reference;\n                }),\n            distinctUntilChanged(\n                (r1: ILatLon, r2: ILatLon): boolean => {\n                    return r1.lat === r2.lat && r1.lon === r2.lon;\n                },\n                (reference: ILatLonAlt): ILatLon => {\n                    return { lat: reference.lat, lon: reference.lon };\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._currentNodeExternal$ = nodeChanged$.pipe(\n            map(\n                (f: IFrame): Node => {\n                    return f.state.currentNode;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._appendNode$.pipe(\n            map(\n                (node: Node) => {\n                    return (context: IStateContext): IStateContext => {\n                        context.append([node]);\n\n                        return context;\n                    };\n                }))\n            .subscribe(this._contextOperation$);\n\n        this._inMotionOperation$ = new Subject<boolean>();\n\n        nodeChanged$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return true;\n                }))\n            .subscribe(this._inMotionOperation$);\n\n        this._inMotionOperation$.pipe(\n            distinctUntilChanged(),\n            filter(\n                (moving: boolean): boolean => {\n                    return moving;\n                }),\n            switchMap(\n                (moving: boolean): Observable<boolean> => {\n                    return this._currentState$.pipe(\n                        filter(\n                            (frame: IFrame): boolean => {\n                                return frame.state.nodesAhead === 0;\n                            }),\n                        map(\n                            (frame: IFrame): [Camera, number] => {\n                                return [frame.state.camera.clone(), frame.state.zoom];\n                            }),\n                        pairwise(),\n                        map(\n                            (pair: [[Camera, number], [Camera, number]]): boolean => {\n                                let c1: Camera = pair[0][0];\n                                let c2: Camera = pair[1][0];\n\n                                let z1: number = pair[0][1];\n                                let z2: number = pair[1][1];\n\n                                return c1.diff(c2) > 1e-5 || Math.abs(z1 - z2) > 1e-5;\n                            }),\n                        first(\n                            (changed: boolean): boolean => {\n                                return !changed;\n                            }));\n                }))\n            .subscribe(this._inMotionOperation$);\n\n        this._inMotion$ = this._inMotionOperation$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._inTranslationOperation$ = new Subject<boolean>();\n\n        nodeChanged$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return true;\n                }))\n            .subscribe(this._inTranslationOperation$);\n\n        this._inTranslationOperation$.pipe(\n            distinctUntilChanged(),\n            filter(\n                (inTranslation: boolean): boolean => {\n                    return inTranslation;\n                }),\n            switchMap(\n                (inTranslation: boolean): Observable<boolean> => {\n                    return this._currentState$.pipe(\n                        filter(\n                            (frame: IFrame): boolean => {\n                                return frame.state.nodesAhead === 0;\n                            }),\n                        map(\n                            (frame: IFrame): THREE.Vector3 => {\n                                return frame.state.camera.position.clone();\n                            }),\n                        pairwise(),\n                        map(\n                            (pair: [THREE.Vector3, THREE.Vector3]): boolean => {\n                                return pair[0].distanceToSquared(pair[1]) !== 0;\n                            }),\n                        first(\n                            (changed: boolean): boolean => {\n                                return !changed;\n                            }));\n                }))\n            .subscribe(this._inTranslationOperation$);\n\n        this._inTranslation$ = this._inTranslationOperation$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._state$.subscribe(() => { /*noop*/ });\n        this._currentNode$.subscribe(() => { /*noop*/ });\n        this._currentCamera$.subscribe(() => { /*noop*/ });\n        this._currentTransform$.subscribe(() => { /*noop*/ });\n        this._reference$.subscribe(() => { /*noop*/ });\n        this._currentNodeExternal$.subscribe(() => { /*noop*/ });\n        this._lastState$.subscribe(() => { /*noop*/ });\n        this._inMotion$.subscribe(() => { /*noop*/ });\n        this._inTranslation$.subscribe(() => { /*noop*/ });\n\n        this._frameId = null;\n        this._frameGenerator = new FrameGenerator(window);\n    }\n\n    public get currentState$(): Observable<IFrame> {\n        return this._currentState$;\n    }\n\n    public get currentNode$(): Observable<Node> {\n        return this._currentNode$;\n    }\n\n    public get currentKey$(): Observable<string> {\n        return this._currentKey$;\n    }\n\n    public get currentNodeExternal$(): Observable<Node> {\n        return this._currentNodeExternal$;\n    }\n\n    public get currentCamera$(): Observable<Camera> {\n        return this._currentCamera$;\n    }\n\n    public get currentTransform$(): Observable<Transform> {\n        return this._currentTransform$;\n    }\n\n    public get state$(): Observable<State> {\n        return this._state$;\n    }\n\n    public get reference$(): Observable<ILatLonAlt> {\n        return this._reference$;\n    }\n\n    public get inMotion$(): Observable<boolean> {\n        return this._inMotion$;\n    }\n\n    public get inTranslation$(): Observable<boolean> {\n        return this._inTranslation$;\n    }\n\n    public get appendNode$(): Subject<Node> {\n        return this._appendNode$;\n    }\n\n    public earth(): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.earth(); });\n    }\n\n    public traverse(): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.traverse(); });\n    }\n\n    public wait(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.wait(); });\n    }\n\n    public waitInteractively(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.waitInteractively(); });\n    }\n\n    public appendNodes(nodes: Node[]): void {\n        this._invokeContextOperation((context: IStateContext) => { context.append(nodes); });\n    }\n\n    public prependNodes(nodes: Node[]): void {\n        this._invokeContextOperation((context: IStateContext) => { context.prepend(nodes); });\n    }\n\n    public removeNodes(n: number): void {\n        this._invokeContextOperation((context: IStateContext) => { context.remove(n); });\n    }\n\n    public clearNodes(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.clear(); });\n    }\n\n    public clearPriorNodes(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.clearPrior(); });\n    }\n\n    public cutNodes(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.cut(); });\n    }\n\n    public setNodes(nodes: Node[]): void {\n        this._invokeContextOperation((context: IStateContext) => { context.set(nodes); });\n    }\n\n    public rotate(delta: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotate(delta); });\n    }\n\n    public rotateUnbounded(delta: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateUnbounded(delta); });\n    }\n\n    public rotateWithoutInertia(delta: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateWithoutInertia(delta); });\n    }\n\n    public rotateBasic(basicRotation: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateBasic(basicRotation); });\n    }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateBasicUnbounded(basicRotation); });\n    }\n\n    public rotateBasicWithoutInertia(basicRotation: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateBasicWithoutInertia(basicRotation); });\n    }\n\n    public rotateToBasic(basic: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateToBasic(basic); });\n    }\n\n    public move(delta: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.move(delta); });\n    }\n\n    public moveTo(position: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.moveTo(position); });\n    }\n\n    public dolly(delta: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.dolly(delta); });\n    }\n\n    public orbit(rotation: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.orbit(rotation); });\n    }\n\n    public truck(direction: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.truck(direction); });\n    }\n\n    /**\n     * Change zoom level while keeping the reference point position approximately static.\n     *\n     * @parameter {number} delta - Change in zoom level.\n     * @parameter {Array<number>} reference - Reference point in basic coordinates.\n     */\n    public zoomIn(delta: number, reference: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.zoomIn(delta, reference); });\n    }\n\n    public getCenter(): Observable<number[]> {\n        return this._lastState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): number[] => {\n                    return (<IStateContext>frame.state).getCenter();\n                }));\n    }\n\n    public getZoom(): Observable<number> {\n        return this._lastState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): number => {\n                    return frame.state.zoom;\n                }));\n    }\n\n    public setCenter(center: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.setCenter(center); });\n    }\n\n    public setSpeed(speed: number): void {\n        this._invokeContextOperation((context: IStateContext) => { context.setSpeed(speed); });\n    }\n\n    public setTransitionMode(mode: TransitionMode): void {\n        this._invokeContextOperation((context: IStateContext) => { context.setTransitionMode(mode); });\n    }\n\n    public setZoom(zoom: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.setZoom(zoom); });\n    }\n\n    public start(): void {\n        if (this._frameId == null) {\n            this._start$.next(null);\n            this._frameId = this._frameGenerator.requestAnimationFrame(this._frame.bind(this));\n            this._frame$.next(this._frameId);\n        }\n    }\n\n    public stop(): void {\n        if (this._frameId != null) {\n            this._frameGenerator.cancelAnimationFrame(this._frameId);\n            this._frameId = null;\n        }\n    }\n\n    private _invokeContextOperation(action: (context: IStateContext) => void): void {\n        this._contextOperation$\n            .next(\n                (context: IStateContext): IStateContext => {\n                    action(context);\n\n                    return context;\n                });\n    }\n\n    private _frame(time: number): void {\n        this._frameId = this._frameGenerator.requestAnimationFrame(this._frame.bind(this));\n        this._frame$.next(this._frameId);\n    }\n}\n",
     "/**\n * Enumeration for transition mode\n * @enum {number}\n * @readonly\n * @description Modes for specifying how transitions\n * between nodes are performed.\n */\nexport enum TransitionMode {\n    /**\n     * Default transitions.\n     *\n     * @description The viewer dynamically determines\n     * whether transitions should be performed with or\n     * without motion and blending for each transition\n     * based on the underlying data.\n     */\n    Default,\n\n    /**\n     * Instantaneous transitions.\n     *\n     * @description All transitions are performed\n     * without motion or blending.\n     */\n    Instantaneous,\n}\n\nexport default TransitionMode;\n",
     "import * as THREE from \"three\";\n\nimport {\n    InteractiveWaitingState,\n    IRotation,\n    IState,\n    StateBase,\n    TraversingState,\n    WaitingState,\n} from \"../../State\";\nimport {\n    Camera,\n} from \"../../Geo\";\n\nexport class EarthState extends StateBase {\n    constructor(state: IState) {\n        super(state);\n\n        const viewingDirection: THREE.Vector3 = this._camera.lookat\n            .clone()\n            .sub(this._camera.position)\n            .normalize();\n\n        this._camera.lookat.copy(this._camera.position);\n        this._camera.position.z = state.camera.position.z + 20;\n        this._camera.position.x = state.camera.position.x - 16 * viewingDirection.x;\n        this._camera.position.y = state.camera.position.y - 16 * viewingDirection.y;\n        this._camera.up.set(0, 0, 1);\n    }\n\n    public traverse(): StateBase {\n        return new TraversingState(this);\n    }\n\n    public wait(): StateBase {\n        return new WaitingState(this);\n    }\n\n    public waitInteractively(): StateBase {\n        return new InteractiveWaitingState(this);\n    }\n\n    public dolly(delta: number): void {\n        const camera: Camera = this._camera;\n        const offset: THREE.Vector3 = new THREE.Vector3()\n            .copy(camera.position)\n            .sub(camera.lookat);\n\n        const length: number = offset.length();\n        const scaled: number = length * Math.pow(2, -delta);\n        const clipped: number = Math.max(1, Math.min(scaled, 1000));\n\n        offset.normalize();\n        offset.multiplyScalar(clipped);\n\n        camera.position.copy(camera.lookat).add(offset);\n    }\n\n    public orbit(rotation: IRotation): void {\n        const camera: Camera = this._camera;\n        const q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(camera.up, new THREE.Vector3( 0, 0, 1 ));\n        const qInverse: THREE.Quaternion = q.clone().inverse();\n\n        const offset: THREE.Vector3 = new THREE.Vector3();\n        offset.copy(camera.position).sub(camera.lookat);\n        offset.applyQuaternion(q);\n        const length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += rotation.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += rotation.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n        offset.applyQuaternion(qInverse);\n\n        camera.position.copy(camera.lookat).add(offset.multiplyScalar(length));\n    }\n\n    public truck(direction: number[]): void {\n        this._camera.position.add(new THREE.Vector3().fromArray(direction));\n        this._camera.lookat.add(new THREE.Vector3().fromArray(direction));\n    }\n\n    public update(): void { /*noop*/ }\n}\n\nexport default EarthState;\n",
-    "import * as THREE from \"three\";\n\nimport {\n    IGPano,\n} from \"../../API\";\nimport {\n    Camera,\n    Transform,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IRotation,\n    IState,\n    RotationDelta,\n    StateBase,\n} from \"../../State\";\n\nexport abstract class InteractiveStateBase extends StateBase {\n    /**\n     * Animation speed in transitions per frame at 60 FPS. Run time\n     * animation speed is adjusted to FPS.\n     */\n    protected _animationSpeed: number;\n\n    protected _rotationDelta: RotationDelta;\n    protected _requestedRotationDelta: RotationDelta;\n\n    protected _basicRotation: number[];\n    protected _requestedBasicRotation: number[];\n    protected _requestedBasicRotationUnbounded: number[];\n\n    protected _rotationAcceleration: number;\n    protected _rotationIncreaseAlpha: number;\n    protected _rotationDecreaseAlpha: number;\n    protected _rotationThreshold: number;\n    protected _unboundedRotationAlpha: number;\n\n    protected _desiredZoom: number;\n    protected _minZoom: number;\n    protected _maxZoom: number;\n    protected _lookatDepth: number;\n    protected _desiredLookat: THREE.Vector3;\n    protected _desiredCenter: number[];\n\n    constructor(state: IState) {\n        super(state);\n\n        this._animationSpeed = 1 / 40;\n\n        this._rotationDelta = new RotationDelta(0, 0);\n        this._requestedRotationDelta = null;\n\n        this._basicRotation = [0, 0];\n        this._requestedBasicRotation = null;\n        this._requestedBasicRotationUnbounded = null;\n\n        this._rotationAcceleration = 0.86;\n        this._rotationIncreaseAlpha = 0.97;\n        this._rotationDecreaseAlpha = 0.9;\n        this._rotationThreshold = 1e-3;\n        this._unboundedRotationAlpha = 0.8;\n\n        this._desiredZoom = state.zoom;\n        this._minZoom = 0;\n        this._maxZoom = 3;\n        this._lookatDepth = 10;\n\n        this._desiredLookat = null;\n        this._desiredCenter = null;\n    }\n\n    public rotate(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta.phi = this._requestedRotationDelta.phi + rotationDelta.phi;\n            this._requestedRotationDelta.theta = this._requestedRotationDelta.theta + rotationDelta.theta;\n        } else {\n            this._requestedRotationDelta = new RotationDelta(rotationDelta.phi, rotationDelta.theta);\n        }\n    }\n\n    public rotateUnbounded(delta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n\n        if (!this._desiredLookat) {\n            return;\n        }\n\n        const q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(this._currentCamera.up, new THREE.Vector3(0, 0, 1));\n        const qInverse: THREE.Quaternion = q.clone().inverse();\n\n        const offset: THREE.Vector3 = new THREE.Vector3()\n            .copy(this._desiredLookat)\n            .sub(this._camera.position)\n            .applyQuaternion(q);\n\n        const length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n\n        offset.applyQuaternion(qInverse);\n\n        this._desiredLookat\n            .copy(this._camera.position)\n            .add(offset.multiplyScalar(length));\n    }\n\n    public rotateWithoutInertia(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        const threshold: number = Math.PI / (10 * Math.pow(2, this._zoom));\n        const delta: IRotation = {\n            phi: this._spatial.clamp(rotationDelta.phi, -threshold, threshold),\n            theta: this._spatial.clamp(rotationDelta.theta, -threshold, threshold),\n        };\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n    }\n\n    public rotateBasic(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation[0] += basicRotation[0];\n            this._requestedBasicRotation[1] += basicRotation[1];\n\n            let threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n            this._requestedBasicRotation[0] =\n                this._spatial.clamp(this._requestedBasicRotation[0], -threshold, threshold);\n\n            this._requestedBasicRotation[1] =\n                this._spatial.clamp(this._requestedBasicRotation[1], -threshold, threshold);\n        } else {\n            this._requestedBasicRotation = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            this._requestedBasicRotationUnbounded[0] += basicRotation[0];\n            this._requestedBasicRotationUnbounded[1] += basicRotation[1];\n        } else {\n            this._requestedBasicRotationUnbounded = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicWithoutInertia(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        const threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n        const basicRotation: number[] = basic.slice();\n        basicRotation[0] = this._spatial.clamp(basicRotation[0], -threshold, threshold);\n        basicRotation[1] = this._spatial.clamp(basicRotation[1], -threshold, threshold);\n\n        this._applyRotationBasic(basicRotation);\n    }\n\n    public rotateToBasic(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n\n        basic[0] = this._spatial.clamp(basic[0], 0, 1);\n        basic[1] = this._spatial.clamp(basic[1], 0, 1);\n\n        let lookat: number[] = this.currentTransform.unprojectBasic(basic, this._lookatDepth);\n        this._currentCamera.lookat.fromArray(lookat);\n    }\n\n    public zoomIn(delta: number, reference: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = Math.max(this._minZoom, Math.min(this._maxZoom, this._desiredZoom + delta));\n\n        let currentCenter: number[] = this.currentTransform.projectBasic(\n            this._currentCamera.lookat.toArray());\n\n        let currentCenterX: number = currentCenter[0];\n        let currentCenterY: number = currentCenter[1];\n\n        let zoom0: number = Math.pow(2, this._zoom);\n        let zoom1: number = Math.pow(2, this._desiredZoom);\n\n        let refX: number = reference[0];\n        let refY: number = reference[1];\n\n        if (this.currentTransform.gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            if (refX - currentCenterX > 0.5) {\n                refX = refX - 1;\n            } else if (currentCenterX - refX > 0.5) {\n                refX = 1 + refX;\n            }\n        }\n\n        let newCenterX: number = refX - zoom0 / zoom1 * (refX - currentCenterX);\n        let newCenterY: number = refY - zoom0 / zoom1 * (refY - currentCenterY);\n\n        let gpano: IGPano = this.currentTransform.gpano;\n\n        if (this._currentNode.fullPano) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0.05, 0.95);\n        } else if (gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0, 1);\n        } else {\n            newCenterX = this._spatial.clamp(newCenterX, 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY, 0, 1);\n        }\n\n        this._desiredLookat = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic([newCenterX, newCenterY], this._lookatDepth));\n    }\n\n    public setCenter(center: number[]): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n        this._desiredZoom = this._zoom;\n\n        let clamped: number[] = [\n            this._spatial.clamp(center[0], 0, 1),\n            this._spatial.clamp(center[1], 0, 1),\n        ];\n\n        if (this._currentNode == null) {\n            this._desiredCenter = clamped;\n            return;\n        }\n\n        this._desiredCenter = null;\n\n        let currentLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n        let previousLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(previousTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        this._currentCamera.lookat.copy(currentLookat);\n        this._previousCamera.lookat.copy(previousLookat);\n    }\n\n    public setZoom(zoom: number): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        this._zoom = this._spatial.clamp(zoom, this._minZoom, this._maxZoom);\n        this._desiredZoom = this._zoom;\n    }\n\n    protected _applyRotation(delta: IRotation, camera: Camera): void {\n        if (camera == null) {\n            return;\n        }\n\n        let q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(camera.up, new THREE.Vector3(0, 0, 1));\n        let qInverse: THREE.Quaternion = q.clone().inverse();\n\n        let offset: THREE.Vector3 = new THREE.Vector3();\n        offset.copy(camera.lookat).sub(camera.position);\n        offset.applyQuaternion(q);\n        let length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n        offset.applyQuaternion(qInverse);\n\n        camera.lookat.copy(camera.position).add(offset.multiplyScalar(length));\n    }\n\n    protected _applyRotationBasic(basicRotation: number[]): void {\n        let currentNode: Node = this._currentNode;\n        let previousNode: Node = this._previousNode != null ?\n            this.previousNode :\n            this.currentNode;\n\n        let currentCamera: Camera = this._currentCamera;\n        let previousCamera: Camera = this._previousCamera;\n\n        let currentTransform: Transform = this.currentTransform;\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n\n        let currentBasic: number[] = currentTransform.projectBasic(currentCamera.lookat.toArray());\n        let previousBasic: number[] = previousTransform.projectBasic(previousCamera.lookat.toArray());\n\n        let currentGPano: IGPano = currentTransform.gpano;\n        let previousGPano: IGPano = previousTransform.gpano;\n\n        if (currentNode.fullPano) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (currentGPano != null &&\n            currentTransform.gpano.CroppedAreaImageWidthPixels === currentTransform.gpano.FullPanoWidthPixels) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            currentBasic[0] = this._spatial.clamp(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        if (previousNode.fullPano) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (previousGPano != null &&\n            previousTransform.gpano.CroppedAreaImageWidthPixels === previousTransform.gpano.FullPanoWidthPixels) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            previousBasic[0] = this._spatial.clamp(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        let currentLookat: number[] = currentTransform.unprojectBasic(currentBasic, this._lookatDepth);\n        currentCamera.lookat.fromArray(currentLookat);\n\n        let previousLookat: number[] = previousTransform.unprojectBasic(previousBasic, this._lookatDepth);\n        previousCamera.lookat.fromArray(previousLookat);\n    }\n\n    protected _updateZoom(animationSpeed: number): void {\n        let diff: number = this._desiredZoom - this._zoom;\n        let sign: number = diff > 0 ? 1 : diff < 0 ? -1 : 0;\n\n        if (diff === 0) {\n            return;\n        } else if (Math.abs(diff) < 2e-3) {\n            this._zoom = this._desiredZoom;\n            if (this._desiredLookat != null) {\n                this._desiredLookat = null;\n            }\n        } else {\n            this._zoom += sign * Math.max(Math.abs(5 * animationSpeed * diff), 2e-3);\n        }\n    }\n\n    protected _updateLookat(animationSpeed: number): void {\n        if (this._desiredLookat === null) {\n            return;\n        }\n\n        let diff: number = this._desiredLookat.distanceToSquared(this._currentCamera.lookat);\n\n        if (Math.abs(diff) < 1e-6) {\n            this._currentCamera.lookat.copy(this._desiredLookat);\n            this._desiredLookat = null;\n        } else {\n            this._currentCamera.lookat.lerp(this._desiredLookat, 5 * animationSpeed);\n        }\n    }\n\n    protected _updateRotation(): void {\n        if (this._requestedRotationDelta != null) {\n            let length: number = this._rotationDelta.lengthSquared();\n            let requestedLength: number = this._requestedRotationDelta.lengthSquared();\n\n            if (requestedLength > length) {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationIncreaseAlpha);\n            } else {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationDecreaseAlpha);\n            }\n\n            this._requestedRotationDelta = null;\n\n            return;\n        }\n\n        if (this._rotationDelta.isZero) {\n            return;\n        }\n\n        this._rotationDelta.multiply(this._rotationAcceleration);\n        this._rotationDelta.threshold(this._rotationThreshold);\n    }\n\n    protected _updateRotationBasic(): void {\n        if (this._requestedBasicRotation != null) {\n            let x: number = this._basicRotation[0];\n            let y: number = this._basicRotation[1];\n\n            let reqX: number = this._requestedBasicRotation[0];\n            let reqY: number = this._requestedBasicRotation[1];\n\n            if (Math.abs(reqX) > Math.abs(x)) {\n                this._basicRotation[0] = (1 - this._rotationIncreaseAlpha) * x + this._rotationIncreaseAlpha * reqX;\n            } else {\n                this._basicRotation[0] = (1 - this._rotationDecreaseAlpha) * x + this._rotationDecreaseAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > Math.abs(y)) {\n                this._basicRotation[1] = (1 - this._rotationIncreaseAlpha) * y + this._rotationIncreaseAlpha * reqY;\n            } else {\n                this._basicRotation[1] = (1 - this._rotationDecreaseAlpha) * y + this._rotationDecreaseAlpha * reqY;\n            }\n\n            this._requestedBasicRotation = null;\n\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            let reqX: number = this._requestedBasicRotationUnbounded[0];\n            let reqY: number = this._requestedBasicRotationUnbounded[1];\n\n            if (Math.abs(reqX) > 0) {\n                this._basicRotation[0] = (1 - this._unboundedRotationAlpha) * this._basicRotation[0] + this._unboundedRotationAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > 0) {\n                this._basicRotation[1] = (1 - this._unboundedRotationAlpha) * this._basicRotation[1] + this._unboundedRotationAlpha * reqY;\n            }\n\n            if (this._desiredLookat != null) {\n                let desiredBasicLookat: number[] = this.currentTransform.projectBasic(this._desiredLookat.toArray());\n\n                desiredBasicLookat[0] += reqX;\n                desiredBasicLookat[1] += reqY;\n\n                this._desiredLookat = new THREE.Vector3()\n                    .fromArray(this.currentTransform.unprojectBasic(desiredBasicLookat, this._lookatDepth));\n            }\n\n            this._requestedBasicRotationUnbounded = null;\n        }\n\n        if (this._basicRotation[0] === 0 && this._basicRotation[1] === 0) {\n            return;\n        }\n\n        this._basicRotation[0] = this._rotationAcceleration * this._basicRotation[0];\n        this._basicRotation[1] = this._rotationAcceleration * this._basicRotation[1];\n\n        if (Math.abs(this._basicRotation[0]) < this._rotationThreshold / Math.pow(2, this._zoom) &&\n            Math.abs(this._basicRotation[1]) < this._rotationThreshold / Math.pow(2, this._zoom)) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _clearRotation(): void {\n        if (this._currentNode.fullPano) {\n            return;\n        }\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta = null;\n        }\n\n        if (!this._rotationDelta.isZero) {\n            this._rotationDelta.reset();\n        }\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation = null;\n        }\n\n        if (this._basicRotation[0] > 0 || this._basicRotation[1] > 0) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _setDesiredCenter(): void {\n        if (this._desiredCenter == null) {\n            return;\n        }\n\n        let lookatDirection: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(this._desiredCenter, this._lookatDepth))\n            .sub(this._currentCamera.position);\n\n        this._currentCamera.lookat.copy(this._currentCamera.position.clone().add(lookatDirection));\n        this._previousCamera.lookat.copy(this._previousCamera.position.clone().add(lookatDirection));\n\n        this._desiredCenter = null;\n    }\n\n    protected _setDesiredZoom(): void {\n        this._desiredZoom =\n            this._currentNode.fullPano || this._previousNode == null ?\n            this._zoom : 0;\n    }\n}\n\nexport default InteractiveStateBase;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    IGPano,\n} from \"../../API\";\nimport {\n    Camera,\n    Transform,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IRotation,\n    IState,\n    RotationDelta,\n    StateBase,\n} from \"../../State\";\n\nexport abstract class InteractiveStateBase extends StateBase {\n    /**\n     * Animation speed in transitions per frame at 60 FPS. Run time\n     * animation speed is adjusted to FPS.\n     */\n    protected _animationSpeed: number;\n\n    protected _rotationDelta: RotationDelta;\n    protected _requestedRotationDelta: RotationDelta;\n\n    protected _basicRotation: number[];\n    protected _requestedBasicRotation: number[];\n    protected _requestedBasicRotationUnbounded: number[];\n\n    protected _rotationAcceleration: number;\n    protected _rotationIncreaseAlpha: number;\n    protected _rotationDecreaseAlpha: number;\n    protected _rotationThreshold: number;\n    protected _unboundedRotationAlpha: number;\n\n    protected _desiredZoom: number;\n    protected _minZoom: number;\n    protected _maxZoom: number;\n    protected _lookatDepth: number;\n    protected _desiredLookat: THREE.Vector3;\n    protected _desiredCenter: number[];\n\n    constructor(state: IState) {\n        super(state);\n\n        this._animationSpeed = 1 / 40;\n\n        this._rotationDelta = new RotationDelta(0, 0);\n        this._requestedRotationDelta = null;\n\n        this._basicRotation = [0, 0];\n        this._requestedBasicRotation = null;\n        this._requestedBasicRotationUnbounded = null;\n\n        this._rotationAcceleration = 0.86;\n        this._rotationIncreaseAlpha = 0.97;\n        this._rotationDecreaseAlpha = 0.9;\n        this._rotationThreshold = 1e-3;\n        this._unboundedRotationAlpha = 0.8;\n\n        this._desiredZoom = state.zoom;\n        this._minZoom = 0;\n        this._maxZoom = 3;\n        this._lookatDepth = 10;\n\n        this._desiredLookat = null;\n        this._desiredCenter = null;\n    }\n\n    public rotate(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        if (rotationDelta.phi === 0 && rotationDelta.theta === 0) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta.phi = this._requestedRotationDelta.phi + rotationDelta.phi;\n            this._requestedRotationDelta.theta = this._requestedRotationDelta.theta + rotationDelta.theta;\n        } else {\n            this._requestedRotationDelta = new RotationDelta(rotationDelta.phi, rotationDelta.theta);\n        }\n    }\n\n    public rotateUnbounded(delta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n\n        if (!this._desiredLookat) {\n            return;\n        }\n\n        const q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(this._currentCamera.up, new THREE.Vector3(0, 0, 1));\n        const qInverse: THREE.Quaternion = q.clone().inverse();\n\n        const offset: THREE.Vector3 = new THREE.Vector3()\n            .copy(this._desiredLookat)\n            .sub(this._camera.position)\n            .applyQuaternion(q);\n\n        const length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n\n        offset.applyQuaternion(qInverse);\n\n        this._desiredLookat\n            .copy(this._camera.position)\n            .add(offset.multiplyScalar(length));\n    }\n\n    public rotateWithoutInertia(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        const threshold: number = Math.PI / (10 * Math.pow(2, this._zoom));\n        const delta: IRotation = {\n            phi: this._spatial.clamp(rotationDelta.phi, -threshold, threshold),\n            theta: this._spatial.clamp(rotationDelta.theta, -threshold, threshold),\n        };\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n    }\n\n    public rotateBasic(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation[0] += basicRotation[0];\n            this._requestedBasicRotation[1] += basicRotation[1];\n\n            let threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n            this._requestedBasicRotation[0] =\n                this._spatial.clamp(this._requestedBasicRotation[0], -threshold, threshold);\n\n            this._requestedBasicRotation[1] =\n                this._spatial.clamp(this._requestedBasicRotation[1], -threshold, threshold);\n        } else {\n            this._requestedBasicRotation = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            this._requestedBasicRotationUnbounded[0] += basicRotation[0];\n            this._requestedBasicRotationUnbounded[1] += basicRotation[1];\n        } else {\n            this._requestedBasicRotationUnbounded = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicWithoutInertia(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        const threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n        const basicRotation: number[] = basic.slice();\n        basicRotation[0] = this._spatial.clamp(basicRotation[0], -threshold, threshold);\n        basicRotation[1] = this._spatial.clamp(basicRotation[1], -threshold, threshold);\n\n        this._applyRotationBasic(basicRotation);\n    }\n\n    public rotateToBasic(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n\n        basic[0] = this._spatial.clamp(basic[0], 0, 1);\n        basic[1] = this._spatial.clamp(basic[1], 0, 1);\n\n        let lookat: number[] = this.currentTransform.unprojectBasic(basic, this._lookatDepth);\n        this._currentCamera.lookat.fromArray(lookat);\n    }\n\n    public zoomIn(delta: number, reference: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = Math.max(this._minZoom, Math.min(this._maxZoom, this._desiredZoom + delta));\n\n        let currentCenter: number[] = this.currentTransform.projectBasic(\n            this._currentCamera.lookat.toArray());\n\n        let currentCenterX: number = currentCenter[0];\n        let currentCenterY: number = currentCenter[1];\n\n        let zoom0: number = Math.pow(2, this._zoom);\n        let zoom1: number = Math.pow(2, this._desiredZoom);\n\n        let refX: number = reference[0];\n        let refY: number = reference[1];\n\n        if (this.currentTransform.gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            if (refX - currentCenterX > 0.5) {\n                refX = refX - 1;\n            } else if (currentCenterX - refX > 0.5) {\n                refX = 1 + refX;\n            }\n        }\n\n        let newCenterX: number = refX - zoom0 / zoom1 * (refX - currentCenterX);\n        let newCenterY: number = refY - zoom0 / zoom1 * (refY - currentCenterY);\n\n        let gpano: IGPano = this.currentTransform.gpano;\n\n        if (this._currentNode.fullPano) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0.05, 0.95);\n        } else if (gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0, 1);\n        } else {\n            newCenterX = this._spatial.clamp(newCenterX, 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY, 0, 1);\n        }\n\n        this._desiredLookat = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic([newCenterX, newCenterY], this._lookatDepth));\n    }\n\n    public setCenter(center: number[]): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n        this._desiredZoom = this._zoom;\n\n        let clamped: number[] = [\n            this._spatial.clamp(center[0], 0, 1),\n            this._spatial.clamp(center[1], 0, 1),\n        ];\n\n        if (this._currentNode == null) {\n            this._desiredCenter = clamped;\n            return;\n        }\n\n        this._desiredCenter = null;\n\n        let currentLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n        let previousLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(previousTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        this._currentCamera.lookat.copy(currentLookat);\n        this._previousCamera.lookat.copy(previousLookat);\n    }\n\n    public setZoom(zoom: number): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        this._zoom = this._spatial.clamp(zoom, this._minZoom, this._maxZoom);\n        this._desiredZoom = this._zoom;\n    }\n\n    protected _applyRotation(delta: IRotation, camera: Camera): void {\n        if (camera == null) {\n            return;\n        }\n\n        let q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(camera.up, new THREE.Vector3(0, 0, 1));\n        let qInverse: THREE.Quaternion = q.clone().inverse();\n\n        let offset: THREE.Vector3 = new THREE.Vector3();\n        offset.copy(camera.lookat).sub(camera.position);\n        offset.applyQuaternion(q);\n        let length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n        offset.applyQuaternion(qInverse);\n\n        camera.lookat.copy(camera.position).add(offset.multiplyScalar(length));\n    }\n\n    protected _applyRotationBasic(basicRotation: number[]): void {\n        let currentNode: Node = this._currentNode;\n        let previousNode: Node = this._previousNode != null ?\n            this.previousNode :\n            this.currentNode;\n\n        let currentCamera: Camera = this._currentCamera;\n        let previousCamera: Camera = this._previousCamera;\n\n        let currentTransform: Transform = this.currentTransform;\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n\n        let currentBasic: number[] = currentTransform.projectBasic(currentCamera.lookat.toArray());\n        let previousBasic: number[] = previousTransform.projectBasic(previousCamera.lookat.toArray());\n\n        let currentGPano: IGPano = currentTransform.gpano;\n        let previousGPano: IGPano = previousTransform.gpano;\n\n        if (currentNode.fullPano) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (currentGPano != null &&\n            currentTransform.gpano.CroppedAreaImageWidthPixels === currentTransform.gpano.FullPanoWidthPixels) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            currentBasic[0] = this._spatial.clamp(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        if (previousNode.fullPano) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (previousGPano != null &&\n            previousTransform.gpano.CroppedAreaImageWidthPixels === previousTransform.gpano.FullPanoWidthPixels) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            previousBasic[0] = this._spatial.clamp(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        let currentLookat: number[] = currentTransform.unprojectBasic(currentBasic, this._lookatDepth);\n        currentCamera.lookat.fromArray(currentLookat);\n\n        let previousLookat: number[] = previousTransform.unprojectBasic(previousBasic, this._lookatDepth);\n        previousCamera.lookat.fromArray(previousLookat);\n    }\n\n    protected _updateZoom(animationSpeed: number): void {\n        let diff: number = this._desiredZoom - this._zoom;\n        let sign: number = diff > 0 ? 1 : diff < 0 ? -1 : 0;\n\n        if (diff === 0) {\n            return;\n        } else if (Math.abs(diff) < 2e-3) {\n            this._zoom = this._desiredZoom;\n            if (this._desiredLookat != null) {\n                this._desiredLookat = null;\n            }\n        } else {\n            this._zoom += sign * Math.max(Math.abs(5 * animationSpeed * diff), 2e-3);\n        }\n    }\n\n    protected _updateLookat(animationSpeed: number): void {\n        if (this._desiredLookat === null) {\n            return;\n        }\n\n        let diff: number = this._desiredLookat.distanceToSquared(this._currentCamera.lookat);\n\n        if (Math.abs(diff) < 1e-6) {\n            this._currentCamera.lookat.copy(this._desiredLookat);\n            this._desiredLookat = null;\n        } else {\n            this._currentCamera.lookat.lerp(this._desiredLookat, 5 * animationSpeed);\n        }\n    }\n\n    protected _updateRotation(): void {\n        if (this._requestedRotationDelta != null) {\n            let length: number = this._rotationDelta.lengthSquared();\n            let requestedLength: number = this._requestedRotationDelta.lengthSquared();\n\n            if (requestedLength > length) {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationIncreaseAlpha);\n            } else {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationDecreaseAlpha);\n            }\n\n            this._requestedRotationDelta = null;\n\n            return;\n        }\n\n        if (this._rotationDelta.isZero) {\n            return;\n        }\n\n        const alpha: number = this.currentNode.fullPano ? 1 : this._alpha;\n\n        this._rotationDelta.multiply(this._rotationAcceleration * alpha);\n        this._rotationDelta.threshold(this._rotationThreshold);\n    }\n\n    protected _updateRotationBasic(): void {\n        if (this._requestedBasicRotation != null) {\n            let x: number = this._basicRotation[0];\n            let y: number = this._basicRotation[1];\n\n            let reqX: number = this._requestedBasicRotation[0];\n            let reqY: number = this._requestedBasicRotation[1];\n\n            if (Math.abs(reqX) > Math.abs(x)) {\n                this._basicRotation[0] = (1 - this._rotationIncreaseAlpha) * x + this._rotationIncreaseAlpha * reqX;\n            } else {\n                this._basicRotation[0] = (1 - this._rotationDecreaseAlpha) * x + this._rotationDecreaseAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > Math.abs(y)) {\n                this._basicRotation[1] = (1 - this._rotationIncreaseAlpha) * y + this._rotationIncreaseAlpha * reqY;\n            } else {\n                this._basicRotation[1] = (1 - this._rotationDecreaseAlpha) * y + this._rotationDecreaseAlpha * reqY;\n            }\n\n            this._requestedBasicRotation = null;\n\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            let reqX: number = this._requestedBasicRotationUnbounded[0];\n            let reqY: number = this._requestedBasicRotationUnbounded[1];\n\n            if (Math.abs(reqX) > 0) {\n                this._basicRotation[0] = (1 - this._unboundedRotationAlpha) * this._basicRotation[0] + this._unboundedRotationAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > 0) {\n                this._basicRotation[1] = (1 - this._unboundedRotationAlpha) * this._basicRotation[1] + this._unboundedRotationAlpha * reqY;\n            }\n\n            if (this._desiredLookat != null) {\n                let desiredBasicLookat: number[] = this.currentTransform.projectBasic(this._desiredLookat.toArray());\n\n                desiredBasicLookat[0] += reqX;\n                desiredBasicLookat[1] += reqY;\n\n                this._desiredLookat = new THREE.Vector3()\n                    .fromArray(this.currentTransform.unprojectBasic(desiredBasicLookat, this._lookatDepth));\n            }\n\n            this._requestedBasicRotationUnbounded = null;\n        }\n\n        if (this._basicRotation[0] === 0 && this._basicRotation[1] === 0) {\n            return;\n        }\n\n        this._basicRotation[0] = this._rotationAcceleration * this._basicRotation[0];\n        this._basicRotation[1] = this._rotationAcceleration * this._basicRotation[1];\n\n        if (Math.abs(this._basicRotation[0]) < this._rotationThreshold / Math.pow(2, this._zoom) &&\n            Math.abs(this._basicRotation[1]) < this._rotationThreshold / Math.pow(2, this._zoom)) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _clearRotation(): void {\n        if (this._currentNode.fullPano) {\n            return;\n        }\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta = null;\n        }\n\n        if (!this._rotationDelta.isZero) {\n            this._rotationDelta.reset();\n        }\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation = null;\n        }\n\n        if (this._basicRotation[0] > 0 || this._basicRotation[1] > 0) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _setDesiredCenter(): void {\n        if (this._desiredCenter == null) {\n            return;\n        }\n\n        let lookatDirection: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(this._desiredCenter, this._lookatDepth))\n            .sub(this._currentCamera.position);\n\n        this._currentCamera.lookat.copy(this._currentCamera.position.clone().add(lookatDirection));\n        this._previousCamera.lookat.copy(this._previousCamera.position.clone().add(lookatDirection));\n\n        this._desiredCenter = null;\n    }\n\n    protected _setDesiredZoom(): void {\n        this._desiredZoom =\n            this._currentNode.fullPano || this._previousNode == null ?\n            this._zoom : 0;\n    }\n}\n\nexport default InteractiveStateBase;\n",
     "import {\n    Node,\n} from \"../../Graph\";\nimport {\n    IState,\n    InteractiveStateBase,\n    StateBase,\n    TraversingState,\n    WaitingState,\n} from \"../../State\";\n\nexport class InteractiveWaitingState extends InteractiveStateBase {\n    constructor(state: IState) {\n        super(state);\n\n        this._adjustCameras();\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public traverse(): StateBase {\n        return new TraversingState(this);\n    }\n\n    public wait(): StateBase {\n        return new WaitingState(this);\n    }\n\n    public prepend(nodes: Node[]): void {\n        super.prepend(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public set(nodes: Node[]): void {\n        super.set(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public move(delta: number): void {\n        this._alpha = Math.max(0, Math.min(1, this._alpha + delta));\n    }\n\n    public moveTo(position: number): void {\n        this._alpha = Math.max(0, Math.min(1, position));\n    }\n\n    public update(fps: number): void {\n        this._updateRotation();\n        if (!this._rotationDelta.isZero) {\n            this._applyRotation(this._rotationDelta, this._previousCamera);\n            this._applyRotation(this._rotationDelta, this._currentCamera);\n        }\n\n        this._updateRotationBasic();\n        if (this._basicRotation[0] !== 0 || this._basicRotation[1] !== 0) {\n            this._applyRotationBasic(this._basicRotation);\n        }\n\n        let animationSpeed: number = this._animationSpeed * (60 / fps);\n        this._updateZoom(animationSpeed);\n        this._updateLookat(animationSpeed);\n\n        this._camera.lerpCameras(this._previousCamera, this._currentCamera, this.alpha);\n    }\n\n    protected _getAlpha(): number {\n        return this._motionless ? Math.round(this._alpha) : this._alpha;\n    }\n\n    protected _setCurrentCamera(): void {\n        super._setCurrentCamera();\n\n        this._adjustCameras();\n    }\n\n    private _adjustCameras(): void {\n        if (this._previousNode == null) {\n            return;\n        }\n\n        if (this._currentNode.fullPano) {\n            let lookat: THREE.Vector3 = this._camera.lookat.clone().sub(this._camera.position);\n            this._currentCamera.lookat.copy(lookat.clone().add(this._currentCamera.position));\n        }\n\n        if (this._previousNode.fullPano) {\n            let lookat: THREE.Vector3 = this._currentCamera.lookat.clone().sub(this._currentCamera.position);\n            this._previousCamera.lookat.copy(lookat.clone().add(this._previousCamera.position));\n        }\n    }\n}\n\nexport default InteractiveWaitingState;\n",
-    "import {ArgumentMapillaryError} from \"../../Error\";\nimport {Node} from \"../../Graph\";\nimport {\n    Camera,\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    IRotation,\n    IState,\n    TransitionMode,\n} from \"../../State\";\n\nexport abstract class StateBase implements IState {\n    protected _spatial: Spatial;\n    protected _geoCoords: GeoCoords;\n\n    protected _reference: ILatLonAlt;\n\n    protected _alpha: number;\n    protected _camera: Camera;\n    protected _zoom: number;\n\n    protected _currentIndex: number;\n\n    protected _trajectory: Node[];\n    protected _currentNode: Node;\n    protected _previousNode: Node;\n\n    protected _trajectoryTransforms: Transform[];\n\n    protected _trajectoryCameras: Camera[];\n    protected _currentCamera: Camera;\n    protected _previousCamera: Camera;\n\n    protected _motionless: boolean;\n\n    private _referenceThreshold: number;\n    private _transitionMode: TransitionMode;\n\n    constructor(state: IState) {\n        this._spatial = new Spatial();\n        this._geoCoords = new GeoCoords();\n\n        this._referenceThreshold = 0.01;\n        this._transitionMode = state.transitionMode;\n\n        this._reference = state.reference;\n\n        this._alpha = state.alpha;\n        this._camera = state.camera.clone();\n        this._zoom = state.zoom;\n\n        this._currentIndex = state.currentIndex;\n\n        this._trajectory = state.trajectory.slice();\n        this._trajectoryTransforms = [];\n        this._trajectoryCameras = [];\n\n        for (let node of this._trajectory) {\n            let translation: number[] = this._nodeToTranslation(node, this._reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._trajectory.length > 1 && this.currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n\n        this._currentCamera = this._trajectoryCameras.length > 0 ?\n            this._trajectoryCameras[this._currentIndex].clone() :\n            new Camera();\n\n        this._previousCamera = this._trajectoryCameras.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    public get reference(): ILatLonAlt {\n        return this._reference;\n    }\n\n    public get alpha(): number {\n        return this._getAlpha();\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public get trajectory(): Node[] {\n        return this._trajectory;\n    }\n\n    public get currentIndex(): number {\n        return this._currentIndex;\n    }\n\n    public get currentNode(): Node {\n        return this._currentNode;\n    }\n\n    public get previousNode(): Node {\n        return this._previousNode;\n    }\n\n    public get currentCamera(): Camera {\n        return this._currentCamera;\n    }\n\n    public get currentTransform(): Transform {\n        return this._trajectoryTransforms.length > 0 ?\n            this._trajectoryTransforms[this.currentIndex] : null;\n    }\n\n    public get previousTransform(): Transform {\n        return this._trajectoryTransforms.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryTransforms[this.currentIndex - 1] : null;\n    }\n\n    public get motionless(): boolean {\n        return this._motionless;\n    }\n\n    public get transitionMode(): TransitionMode {\n        return this._transitionMode;\n    }\n\n    public earth(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public traverse(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public wait(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public waitInteractively(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public move(delta: number): void { /*noop*/ }\n\n    public moveTo(position: number): void { /*noop*/ }\n\n    public rotate(delta: IRotation): void { /*noop*/ }\n\n    public rotateUnbounded(delta: IRotation): void { /*noop*/ }\n\n    public rotateWithoutInertia(delta: IRotation): void { /*noop*/ }\n\n    public rotateBasic(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicWithoutInertia(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateToBasic(basic: number[]): void { /*noop*/ }\n\n    public setSpeed(speed: number): void { /*noop*/ }\n\n    public zoomIn(delta: number, reference: number[]): void { /*noop*/ }\n\n    public update(fps: number): void { /*noop*/ }\n\n    public setCenter(center: number[]): void { /*noop*/ }\n\n    public setZoom(zoom: number): void { /*noop*/ }\n\n    public dolly(delta: number): void { /*noop*/ }\n\n    public orbit(rotation: IRotation): void { /*noop*/ }\n\n    public truck(direction: number[]): void { /*noop*/ }\n\n    public append(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentIndex < 0) {\n            this.set(nodes);\n        } else {\n            this._trajectory = this._trajectory.concat(nodes);\n            this._appendToTrajectories(nodes);\n        }\n    }\n\n    public prepend(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        this._trajectory = nodes.slice().concat(this._trajectory);\n        this._currentIndex += nodes.length;\n\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        } else {\n            this._prependToTrajectories(nodes);\n        }\n\n        this._setCurrentCamera();\n    }\n\n    public remove(n: number): void {\n        if (n < 0) {\n            throw Error(\"n must be a positive integer\");\n        }\n\n        if (this._currentIndex - 1 < n) {\n            throw Error(\"Current and previous nodes can not be removed\");\n        }\n\n        for (let i: number = 0; i < n; i++) {\n            this._trajectory.shift();\n            this._trajectoryTransforms.shift();\n            this._trajectoryCameras.shift();\n            this._currentIndex--;\n        }\n\n        this._setCurrentNode();\n    }\n\n    public clearPrior(): void {\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public clear(): void {\n        this.cut();\n\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public cut(): void {\n        while (this._trajectory.length - 1 > this._currentIndex) {\n            this._trajectory.pop();\n            this._trajectoryTransforms.pop();\n            this._trajectoryCameras.pop();\n        }\n    }\n\n    public set(nodes: Node[]): void {\n        this._setTrajectory(nodes);\n        this._setCurrentNode();\n        this._setReference(this._currentNode);\n        this._setTrajectories();\n        this._setCurrentCamera();\n    }\n\n    public getCenter(): number[] {\n        return this._currentNode != null ?\n            this.currentTransform.projectBasic(this._camera.lookat.toArray()) :\n            [0.5, 0.5];\n    }\n\n    public setTransitionMode(mode: TransitionMode): void {\n        this._transitionMode = mode;\n    }\n\n    protected _getAlpha(): number { return 1; }\n\n    protected _setCurrent(): void {\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        }\n\n        this._setCurrentCamera();\n    }\n\n    protected _setCurrentCamera(): void {\n        this._currentCamera = this._trajectoryCameras[this._currentIndex].clone();\n        this._previousCamera = this._currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    protected _motionlessTransition(): boolean {\n        let nodesSet: boolean = this._currentNode != null && this._previousNode != null;\n\n        return nodesSet && (\n            this._transitionMode === TransitionMode.Instantaneous || !(\n                this._currentNode.merged &&\n                this._previousNode.merged &&\n                this._withinOriginalDistance() &&\n                this._sameConnectedComponent()\n            ));\n    }\n\n    private _setReference(node: Node): boolean {\n        // do not reset reference if node is within threshold distance\n        if (Math.abs(node.latLon.lat - this.reference.lat) < this._referenceThreshold &&\n            Math.abs(node.latLon.lon - this.reference.lon) < this._referenceThreshold) {\n            return false;\n        }\n\n        // do not reset reference if previous node exist and transition is with motion\n        if (this._previousNode != null && !this._motionlessTransition()) {\n            return false;\n        }\n\n        this._reference.lat = node.latLon.lat;\n        this._reference.lon = node.latLon.lon;\n        this._reference.alt = node.alt;\n\n        return true;\n    }\n\n    private _setCurrentNode(): void {\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n    }\n\n    private _setTrajectory(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw new ArgumentMapillaryError(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentNode != null) {\n            this._trajectory = [this._currentNode].concat(nodes);\n            this._currentIndex = 1;\n        } else {\n            this._trajectory = nodes.slice();\n            this._currentIndex = 0;\n        }\n    }\n\n    private _setTrajectories(): void {\n        this._trajectoryTransforms.length = 0;\n        this._trajectoryCameras.length = 0;\n\n        this._appendToTrajectories(this._trajectory);\n    }\n\n    private _appendToTrajectories(nodes: Node[]): void {\n        for (let node of nodes) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when node is added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n    }\n\n    private _prependToTrajectories(nodes: Node[]): void {\n        for (let node of nodes.reverse()) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2);\n\n            this._trajectoryTransforms.unshift(transform);\n            this._trajectoryCameras.unshift(new Camera(transform));\n        }\n    }\n\n    private _nodeToTranslation(node: Node, reference: ILatLonAlt): number[] {\n        return Geo.computeTranslation(\n            { alt: node.alt, lat: node.latLon.lat, lon: node.latLon.lon },\n            node.rotation,\n            reference);\n    }\n\n    private _sameConnectedComponent(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        return !!current && !!previous &&\n            current.mergeCC === previous.mergeCC;\n    }\n\n    private _withinOriginalDistance(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        if (!current || !previous) {\n            return true;\n        }\n\n        // 50 km/h moves 28m in 2s\n        let distance: number = this._spatial.distanceFromLatLon(\n            current.originalLatLon.lat,\n            current.originalLatLon.lon,\n            previous.originalLatLon.lat,\n            previous.originalLatLon.lon);\n\n        return distance < 25;\n    }\n}\n",
+    "import {ArgumentMapillaryError} from \"../../Error\";\nimport {Node} from \"../../Graph\";\nimport {\n    Camera,\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    IRotation,\n    IState,\n    TransitionMode,\n} from \"../../State\";\n\nexport abstract class StateBase implements IState {\n    protected _spatial: Spatial;\n    protected _geoCoords: GeoCoords;\n\n    protected _reference: ILatLonAlt;\n\n    protected _alpha: number;\n    protected _camera: Camera;\n    protected _zoom: number;\n\n    protected _currentIndex: number;\n\n    protected _trajectory: Node[];\n    protected _currentNode: Node;\n    protected _previousNode: Node;\n\n    protected _trajectoryTransforms: Transform[];\n\n    protected _trajectoryCameras: Camera[];\n    protected _currentCamera: Camera;\n    protected _previousCamera: Camera;\n\n    protected _motionless: boolean;\n\n    private _referenceThreshold: number;\n    private _transitionMode: TransitionMode;\n\n    constructor(state: IState) {\n        this._spatial = new Spatial();\n        this._geoCoords = new GeoCoords();\n\n        this._referenceThreshold = 0.01;\n        this._transitionMode = state.transitionMode;\n\n        this._reference = state.reference;\n\n        this._alpha = state.alpha;\n        this._camera = state.camera.clone();\n        this._zoom = state.zoom;\n\n        this._currentIndex = state.currentIndex;\n\n        this._trajectory = state.trajectory.slice();\n        this._trajectoryTransforms = [];\n        this._trajectoryCameras = [];\n\n        for (let node of this._trajectory) {\n            let translation: number[] = this._nodeToTranslation(node, this._reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2,\n                node.cameraProjection);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._trajectory.length > 1 && this.currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n\n        this._currentCamera = this._trajectoryCameras.length > 0 ?\n            this._trajectoryCameras[this._currentIndex].clone() :\n            new Camera();\n\n        this._previousCamera = this._trajectoryCameras.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    public get reference(): ILatLonAlt {\n        return this._reference;\n    }\n\n    public get alpha(): number {\n        return this._getAlpha();\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public get trajectory(): Node[] {\n        return this._trajectory;\n    }\n\n    public get currentIndex(): number {\n        return this._currentIndex;\n    }\n\n    public get currentNode(): Node {\n        return this._currentNode;\n    }\n\n    public get previousNode(): Node {\n        return this._previousNode;\n    }\n\n    public get currentCamera(): Camera {\n        return this._currentCamera;\n    }\n\n    public get currentTransform(): Transform {\n        return this._trajectoryTransforms.length > 0 ?\n            this._trajectoryTransforms[this.currentIndex] : null;\n    }\n\n    public get previousTransform(): Transform {\n        return this._trajectoryTransforms.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryTransforms[this.currentIndex - 1] : null;\n    }\n\n    public get motionless(): boolean {\n        return this._motionless;\n    }\n\n    public get transitionMode(): TransitionMode {\n        return this._transitionMode;\n    }\n\n    public earth(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public traverse(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public wait(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public waitInteractively(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public move(delta: number): void { /*noop*/ }\n\n    public moveTo(position: number): void { /*noop*/ }\n\n    public rotate(delta: IRotation): void { /*noop*/ }\n\n    public rotateUnbounded(delta: IRotation): void { /*noop*/ }\n\n    public rotateWithoutInertia(delta: IRotation): void { /*noop*/ }\n\n    public rotateBasic(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicWithoutInertia(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateToBasic(basic: number[]): void { /*noop*/ }\n\n    public setSpeed(speed: number): void { /*noop*/ }\n\n    public zoomIn(delta: number, reference: number[]): void { /*noop*/ }\n\n    public update(fps: number): void { /*noop*/ }\n\n    public setCenter(center: number[]): void { /*noop*/ }\n\n    public setZoom(zoom: number): void { /*noop*/ }\n\n    public dolly(delta: number): void { /*noop*/ }\n\n    public orbit(rotation: IRotation): void { /*noop*/ }\n\n    public truck(direction: number[]): void { /*noop*/ }\n\n    public append(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentIndex < 0) {\n            this.set(nodes);\n        } else {\n            this._trajectory = this._trajectory.concat(nodes);\n            this._appendToTrajectories(nodes);\n        }\n    }\n\n    public prepend(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        this._trajectory = nodes.slice().concat(this._trajectory);\n        this._currentIndex += nodes.length;\n\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        } else {\n            this._prependToTrajectories(nodes);\n        }\n\n        this._setCurrentCamera();\n    }\n\n    public remove(n: number): void {\n        if (n < 0) {\n            throw Error(\"n must be a positive integer\");\n        }\n\n        if (this._currentIndex - 1 < n) {\n            throw Error(\"Current and previous nodes can not be removed\");\n        }\n\n        for (let i: number = 0; i < n; i++) {\n            this._trajectory.shift();\n            this._trajectoryTransforms.shift();\n            this._trajectoryCameras.shift();\n            this._currentIndex--;\n        }\n\n        this._setCurrentNode();\n    }\n\n    public clearPrior(): void {\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public clear(): void {\n        this.cut();\n\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public cut(): void {\n        while (this._trajectory.length - 1 > this._currentIndex) {\n            this._trajectory.pop();\n            this._trajectoryTransforms.pop();\n            this._trajectoryCameras.pop();\n        }\n    }\n\n    public set(nodes: Node[]): void {\n        this._setTrajectory(nodes);\n        this._setCurrentNode();\n        this._setReference(this._currentNode);\n        this._setTrajectories();\n        this._setCurrentCamera();\n    }\n\n    public getCenter(): number[] {\n        return this._currentNode != null ?\n            this.currentTransform.projectBasic(this._camera.lookat.toArray()) :\n            [0.5, 0.5];\n    }\n\n    public setTransitionMode(mode: TransitionMode): void {\n        this._transitionMode = mode;\n    }\n\n    protected _getAlpha(): number { return 1; }\n\n    protected _setCurrent(): void {\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        }\n\n        this._setCurrentCamera();\n    }\n\n    protected _setCurrentCamera(): void {\n        this._currentCamera = this._trajectoryCameras[this._currentIndex].clone();\n        this._previousCamera = this._currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    protected _motionlessTransition(): boolean {\n        let nodesSet: boolean = this._currentNode != null && this._previousNode != null;\n\n        return nodesSet && (\n            this._transitionMode === TransitionMode.Instantaneous || !(\n                this._currentNode.merged &&\n                this._previousNode.merged &&\n                this._withinOriginalDistance() &&\n                this._sameConnectedComponent()\n            ));\n    }\n\n    private _setReference(node: Node): boolean {\n        // do not reset reference if node is within threshold distance\n        if (Math.abs(node.latLon.lat - this.reference.lat) < this._referenceThreshold &&\n            Math.abs(node.latLon.lon - this.reference.lon) < this._referenceThreshold) {\n            return false;\n        }\n\n        // do not reset reference if previous node exist and transition is with motion\n        if (this._previousNode != null && !this._motionlessTransition()) {\n            return false;\n        }\n\n        this._reference.lat = node.latLon.lat;\n        this._reference.lon = node.latLon.lon;\n        this._reference.alt = node.alt;\n\n        return true;\n    }\n\n    private _setCurrentNode(): void {\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n    }\n\n    private _setTrajectory(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw new ArgumentMapillaryError(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentNode != null) {\n            this._trajectory = [this._currentNode].concat(nodes);\n            this._currentIndex = 1;\n        } else {\n            this._trajectory = nodes.slice();\n            this._currentIndex = 0;\n        }\n    }\n\n    private _setTrajectories(): void {\n        this._trajectoryTransforms.length = 0;\n        this._trajectoryCameras.length = 0;\n\n        this._appendToTrajectories(this._trajectory);\n    }\n\n    private _appendToTrajectories(nodes: Node[]): void {\n        for (let node of nodes) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when node is added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2,\n                node.cameraProjection);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n    }\n\n    private _prependToTrajectories(nodes: Node[]): void {\n        for (let node of nodes.reverse()) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2,\n                node.cameraProjection);\n\n            this._trajectoryTransforms.unshift(transform);\n            this._trajectoryCameras.unshift(new Camera(transform));\n        }\n    }\n\n    private _nodeToTranslation(node: Node, reference: ILatLonAlt): number[] {\n        return Geo.computeTranslation(\n            { alt: node.alt, lat: node.latLon.lat, lon: node.latLon.lon },\n            node.rotation,\n            reference);\n    }\n\n    private _sameConnectedComponent(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        return !!current && !!previous &&\n            current.mergeCC === previous.mergeCC;\n    }\n\n    private _withinOriginalDistance(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        if (!current || !previous) {\n            return true;\n        }\n\n        // 50 km/h moves 28m in 2s\n        let distance: number = this._spatial.distanceFromLatLon(\n            current.originalLatLon.lat,\n            current.originalLatLon.lon,\n            previous.originalLatLon.lat,\n            previous.originalLatLon.lon);\n\n        return distance < 25;\n    }\n}\n",
     "import * as THREE from \"three\";\nimport * as UnitBezier from \"@mapbox/unitbezier\";\n\nimport {\n    EarthState,\n    IState,\n    InteractiveStateBase,\n    InteractiveWaitingState,\n    StateBase,\n    WaitingState,\n} from \"../../State\";\nimport {\n    Node,\n} from \"../../Graph\";\n\nexport class TraversingState extends InteractiveStateBase {\n    private _baseAlpha: number;\n\n    private _speedCoefficient: number;\n\n    private _unitBezier: UnitBezier;\n    private _useBezier: boolean;\n\n    constructor (state: IState) {\n        super(state);\n\n        this._adjustCameras();\n\n        this._motionless = this._motionlessTransition();\n\n        this._baseAlpha = this._alpha;\n        this._speedCoefficient = 1;\n        this._unitBezier = new UnitBezier(0.74, 0.67, 0.38, 0.96);\n        this._useBezier = false;\n    }\n\n    public earth(): StateBase {\n        return new EarthState(this);\n    }\n\n    public wait(): StateBase {\n        return new WaitingState(this);\n    }\n\n    public waitInteractively(): StateBase {\n        return new InteractiveWaitingState(this);\n    }\n\n    public append(nodes: Node[]): void {\n        let emptyTrajectory: boolean = this._trajectory.length === 0;\n\n        if (emptyTrajectory) {\n            this._resetTransition();\n        }\n\n        super.append(nodes);\n\n        if (emptyTrajectory) {\n            this._setDesiredCenter();\n            this._setDesiredZoom();\n        }\n    }\n\n    public prepend(nodes: Node[]): void {\n        let emptyTrajectory: boolean = this._trajectory.length === 0;\n\n        if (emptyTrajectory) {\n            this._resetTransition();\n        }\n\n        super.prepend(nodes);\n\n        if (emptyTrajectory) {\n            this._setDesiredCenter();\n            this._setDesiredZoom();\n        }\n    }\n\n    public set(nodes: Node[]): void {\n        super.set(nodes);\n\n        this._desiredLookat = null;\n\n        this._resetTransition();\n        this._clearRotation();\n\n        this._setDesiredCenter();\n        this._setDesiredZoom();\n\n        if (this._trajectory.length < 3) {\n            this._useBezier = true;\n        }\n    }\n\n    public setSpeed(speed: number): void {\n        this._speedCoefficient = this._spatial.clamp(speed, 0, 10);\n    }\n\n    public update(fps: number): void {\n        if (this._alpha === 1 && this._currentIndex + this._alpha < this._trajectory.length) {\n            this._currentIndex += 1;\n\n            this._useBezier = this._trajectory.length < 3 &&\n                this._currentIndex + 1 === this._trajectory.length;\n\n            this._setCurrent();\n            this._resetTransition();\n            this._clearRotation();\n\n            this._desiredZoom = this._currentNode.fullPano ? this._zoom : 0;\n\n            this._desiredLookat = null;\n        }\n\n        let animationSpeed: number = this._animationSpeed * (60 / fps);\n        this._baseAlpha = Math.min(1, this._baseAlpha + this._speedCoefficient * animationSpeed);\n        if (this._useBezier) {\n            this._alpha = this._unitBezier.solve(this._baseAlpha);\n        } else {\n            this._alpha = this._baseAlpha;\n        }\n\n        this._updateRotation();\n        if (!this._rotationDelta.isZero) {\n            this._applyRotation(this._rotationDelta, this._previousCamera);\n            this._applyRotation(this._rotationDelta, this._currentCamera);\n        }\n\n        this._updateRotationBasic();\n        if (this._basicRotation[0] !== 0 || this._basicRotation[1] !== 0) {\n            this._applyRotationBasic(this._basicRotation);\n        }\n\n        this._updateZoom(animationSpeed);\n        this._updateLookat(animationSpeed);\n\n        this._camera.lerpCameras(this._previousCamera, this._currentCamera, this.alpha);\n    }\n\n    protected _getAlpha(): number {\n        return this._motionless ? Math.ceil(this._alpha) : this._alpha;\n    }\n\n    protected _setCurrentCamera(): void {\n        super._setCurrentCamera();\n\n        this._adjustCameras();\n    }\n\n    private _adjustCameras(): void {\n        if (this._previousNode == null) {\n            return;\n        }\n\n        let lookat: THREE.Vector3 = this._camera.lookat.clone().sub(this._camera.position);\n        this._previousCamera.lookat.copy(lookat.clone().add(this._previousCamera.position));\n\n        if (this._currentNode.fullPano) {\n            this._currentCamera.lookat.copy(lookat.clone().add(this._currentCamera.position));\n        }\n    }\n\n    private _resetTransition(): void {\n        this._alpha = 0;\n        this._baseAlpha = 0;\n\n        this._motionless = this._motionlessTransition();\n    }\n}\n\nexport default TraversingState;\n",
     "import {\n    Node,\n} from \"../../Graph\";\nimport {\n    IState,\n    StateBase,\n    InteractiveWaitingState,\n    TraversingState,\n} from \"../../State\";\n\nexport class WaitingState extends StateBase {\n    constructor(state: IState) {\n        super(state);\n\n        this._zoom = 0;\n\n        this._adjustCameras();\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public traverse(): StateBase {\n        return new TraversingState(this);\n    }\n\n    public waitInteractively(): StateBase {\n        return new InteractiveWaitingState(this);\n    }\n\n    public prepend(nodes: Node[]): void {\n        super.prepend(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public set(nodes: Node[]): void {\n        super.set(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public move(delta: number): void {\n        this._alpha = Math.max(0, Math.min(1, this._alpha + delta));\n    }\n\n    public moveTo(position: number): void {\n        this._alpha = Math.max(0, Math.min(1, position));\n    }\n\n    public update(fps: number): void {\n        this._camera.lerpCameras(this._previousCamera, this._currentCamera, this.alpha);\n    }\n\n    protected _getAlpha(): number {\n        return this._motionless ? Math.round(this._alpha) : this._alpha;\n    }\n\n    protected _setCurrentCamera(): void {\n        super._setCurrentCamera();\n\n        this._adjustCameras();\n    }\n\n    private _adjustCameras(): void {\n        if (this._previousNode == null) {\n            return;\n        }\n\n        if (this._currentNode.fullPano) {\n            let lookat: THREE.Vector3 = this._camera.lookat.clone().sub(this._camera.position);\n            this._currentCamera.lookat.copy(lookat.clone().add(this._currentCamera.position));\n        }\n\n        if (this._previousNode.fullPano) {\n            let lookat: THREE.Vector3 = this._currentCamera.lookat.clone().sub(this._currentCamera.position);\n            this._previousCamera.lookat.copy(lookat.clone().add(this._previousCamera.position));\n        }\n    }\n}\n\nexport default WaitingState;\n",
     "import {Observable, Subscriber} from \"rxjs\";\n\n/**\n * @class ImageTileLoader\n *\n * @classdesc Represents a loader of image tiles.\n */\nexport class ImageTileLoader {\n    private _origin: string;\n    private _scheme: string;\n    private _host: string;\n\n    /**\n     * Create a new node image tile loader instance.\n     *\n     * @param {string} scheme - The URI scheme.\n     * @param {string} host - The URI host.\n     * @param {string} [origin] - The origin query param.\n     */\n    constructor(scheme: string, host: string, origin?: string) {\n        this._scheme = scheme;\n        this._host = host;\n        this._origin = origin != null ? `?origin=${origin}` : \"\";\n    }\n\n    /**\n     * Retrieve an image tile.\n     *\n     * @description Retrieve an image tile by specifying the area\n     * as well as the scaled size.\n     *\n     * @param {string} identifier - The identifier of the image.\n     * @param {number} x - The top left x pixel coordinate for the tile\n     * in the original image.\n     * @param {number} y - The top left y pixel coordinate for the tile\n     * in the original image.\n     * @param {number} w - The pixel width of the tile in the original image.\n     * @param {number} h - The pixel height of the tile in the original image.\n     * @param {number} scaledW - The scaled width of the returned tile.\n     * @param {number} scaledH - The scaled height of the returned tile.\n     */\n    public getTile(\n        identifier: string,\n        x: number,\n        y: number,\n        w: number,\n        h: number,\n        scaledW: number,\n        scaledH: number): [Observable<HTMLImageElement>, Function] {\n\n        let characteristics: string = `/${identifier}/${x},${y},${w},${h}/${scaledW},${scaledH}/0/default.jpg`;\n        let url: string =\n            this._scheme +\n            \"://\" +\n            this._host +\n            characteristics +\n            this._origin;\n\n        let xmlHTTP: XMLHttpRequest = null;\n\n        return [Observable.create(\n            (subscriber: Subscriber<HTMLImageElement>): void => {\n                xmlHTTP = new XMLHttpRequest();\n                xmlHTTP.open(\"GET\", url, true);\n                xmlHTTP.responseType = \"arraybuffer\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = (event: Event) => {\n                    if (xmlHTTP.status !== 200) {\n                        subscriber.error(\n                            new Error(\n                                `Failed to fetch tile (${identifier}: ${x},${y},${w},${h}). ` +\n                                `Status: ${xmlHTTP.status}, ${xmlHTTP.statusText}`));\n\n                        return;\n                    }\n\n                    let image: HTMLImageElement = new Image();\n                    image.crossOrigin = \"Anonymous\";\n\n                    image.onload = (e: Event) => {\n                        subscriber.next(image);\n                        subscriber.complete();\n                    };\n\n                    image.onerror = (error: ErrorEvent) => {\n                        subscriber.error(new Error(`Failed to load tile image (${identifier}: ${x},${y},${w},${h})`));\n                    };\n\n                    let blob: Blob = new Blob([xmlHTTP.response]);\n                    image.src = window.URL.createObjectURL(blob);\n                };\n\n                xmlHTTP.onerror = (error: Event) => {\n                    subscriber.error(new Error(`Failed to fetch tile (${identifier}: ${x},${y},${w},${h})`));\n                };\n\n                xmlHTTP.ontimeout = (error: Event) => {\n                    subscriber.error(new Error(`Tile request timed out (${identifier}: ${x},${y},${w},${h})`));\n                };\n\n                xmlHTTP.onabort = (event: Event) => {\n                    subscriber.error(new Error(`Tile request was aborted (${identifier}: ${x},${y},${w},${h})`));\n                };\n\n                xmlHTTP.send(null);\n            }),\n            (): void => {\n                if (xmlHTTP != null) {\n                    xmlHTTP.abort();\n                }\n            },\n        ];\n    }\n}\n\nexport default ImageTileLoader;\n",
     "export class EventEmitter {\n    private _events: {[eventType: string]: any[]};\n\n    constructor () {\n        this._events = {};\n    }\n\n    /**\n     * Subscribe to an event by its name.\n     * @param {string }eventType - The name of the event to subscribe to.\n     * @param {any} fn - The handler called when the event occurs.\n     */\n    public on(eventType: string, fn: any): void {\n        this._events[eventType] = this._events[eventType] || [];\n        this._events[eventType].push(fn);\n        return;\n    }\n\n    /**\n     * Unsubscribe from an event by its name.\n     * @param {string} eventType - The name of the event to subscribe to.\n     * @param {any} fn - The handler to remove.\n     */\n    public off(eventType: string, fn: any): void {\n        if (!eventType) {\n            this._events = {};\n            return;\n        }\n\n        if (!this._listens(eventType)) {\n            let idx: number = this._events[eventType].indexOf(fn);\n            if (idx >= 0) {\n                this._events[eventType].splice(idx, 1);\n            }\n            if (this._events[eventType].length) {\n                delete this._events[eventType];\n            }\n        } else {\n            delete this._events[eventType];\n        }\n\n        return;\n    }\n\n    public fire(eventType: string, data: any): void {\n        if (!this._listens(eventType)) {\n            return;\n        }\n\n        for (let fn of this._events[eventType]) {\n            fn.call(this, data);\n        }\n        return;\n    }\n\n    private _listens(eventType: string): boolean {\n        return !!(this._events && this._events[eventType]);\n    }\n}\n\nexport default EventEmitter;\n",
     "import {\n    ImageSize,\n    IViewerOptions,\n} from \"../Viewer\";\n\nexport class Settings {\n    private static _baseImageSize: number;\n    private static _basePanoramaSize: number;\n    private static _maxImageSize: number;\n\n    public static setOptions(options: IViewerOptions): void {\n        Settings._baseImageSize = options.baseImageSize != null ?\n            options.baseImageSize :\n            ImageSize.Size640;\n\n        Settings._basePanoramaSize = options.basePanoramaSize != null ?\n            options.basePanoramaSize :\n            ImageSize.Size2048;\n\n        Settings._maxImageSize = options.maxImageSize != null ?\n            options.maxImageSize :\n            ImageSize.Size2048;\n    }\n\n    public static get baseImageSize(): number {\n        return Settings._baseImageSize;\n    }\n\n    public static get basePanoramaSize(): number {\n        return Settings._basePanoramaSize;\n    }\n\n    public static get maxImageSize(): number {\n        return Settings._maxImageSize;\n    }\n}\n\nexport default Settings;\n",
     "export function isBrowser(): boolean {\n    return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\nexport function isArraySupported(): boolean {\n    return !!(\n        Array.prototype &&\n        Array.prototype.filter &&\n        Array.prototype.indexOf &&\n        Array.prototype.map &&\n        Array.prototype.reverse\n    );\n}\n\nexport function isFunctionSupported(): boolean {\n    return !!(Function.prototype && Function.prototype.bind);\n}\n\nexport function isJSONSupported(): boolean {\n    return \"JSON\" in window && \"parse\" in JSON && \"stringify\" in JSON;\n}\n\nexport function isObjectSupported(): boolean {\n    return !!(\n        Object.keys &&\n        Object.assign\n    );\n}\n\nexport function isBlobSupported(): boolean {\n    return \"Blob\" in window && \"URL\" in window;\n}\n\nlet isWebGLSupportedCache: boolean = undefined;\nexport function isWebGLSupportedCached(): boolean {\n    if (isWebGLSupportedCache === undefined) {\n        isWebGLSupportedCache = isWebGLSupported();\n    }\n\n    return isWebGLSupportedCache;\n}\n\nexport function isWebGLSupported(): boolean {\n    const webGLContextAttributes: WebGLContextAttributes = {\n        alpha: false,\n        antialias: false,\n        depth: true,\n        failIfMajorPerformanceCaveat: false,\n        premultipliedAlpha: true,\n        preserveDrawingBuffer: false,\n        stencil: true,\n    };\n\n    const canvas: HTMLCanvasElement = document.createElement(\"canvas\");\n    const context: WebGLRenderingContext =\n        canvas.getContext(\"webgl\", webGLContextAttributes) ||\n        canvas.getContext(\"experimental-webgl\", webGLContextAttributes);\n\n    if (!context) {\n        return false;\n    }\n\n    const requiredExtensions: string[] = [\n        \"OES_standard_derivatives\",\n    ];\n\n    const supportedExtensions: string[] = context.getSupportedExtensions();\n    for (const requiredExtension of requiredExtensions) {\n        if (supportedExtensions.indexOf(requiredExtension) === -1) {\n            return false;\n        }\n    }\n\n    return true;\n}\n",
-    "import {IUrlOptions} from \"../Viewer\";\n\nexport class Urls {\n    private static _apiHost: string = \"a.mapillary.com\";\n    private static _atomicReconstructionHost: string = \"d3necqxnn15whe.cloudfront.net\";\n    private static _exploreHost: string = \"www.mapillary.com\";\n    private static _imageHost: string = \"d1cuyjsrcm0gby.cloudfront.net\";\n    private static _imageTileHost: string = \"d2qb1440i7l50o.cloudfront.net\";\n    private static _meshHost: string = \"d1brzeo354iq2l.cloudfront.net\";\n    private static _origin: string = \"mapillary.webgl\";\n    private static _scheme: string = \"https\";\n\n    public static get explore(): string {\n        return `${Urls._scheme}://${Urls._exploreHost}`;\n    }\n\n    public static get origin(): string {\n        return Urls._origin;\n    }\n\n    public static get tileScheme(): string {\n        return Urls._scheme;\n    }\n\n    public static get tileDomain(): string {\n        return Urls._imageTileHost;\n    }\n\n    public static atomicReconstruction(key: string): string {\n        return `${Urls._scheme}://${Urls._atomicReconstructionHost}/${key}/sfm/v1.0/atomic_reconstruction.json`;\n    }\n\n    public static exporeImage(key: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/?pKey=${key}&focus=photo`;\n    }\n\n    public static exporeUser(username: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/user/${username}`;\n    }\n\n    public static falcorModel(clientId: string): string {\n        return `${Urls._scheme}://${Urls._apiHost}/v3/model.json?client_id=${clientId}`;\n    }\n\n    public static protoMesh(key: string): string {\n        return `${Urls._scheme}://${Urls._meshHost}/v2/mesh/${key}`;\n    }\n\n    public static thumbnail(key: string, size: number, origin?: string): string {\n        const query: string = !!origin ? `?origin=${origin}` : \"\";\n\n        return `${Urls._scheme}://${Urls._imageHost}/${key}/thumb-${size}.jpg${query}`;\n    }\n\n    public static setOptions(options: IUrlOptions): void {\n        if (!options) {\n            return;\n        }\n\n        if (!!options.apiHost) {\n            Urls._apiHost = options.apiHost;\n        }\n\n        if (!!options.atomicReconstructionHost) {\n            Urls._atomicReconstructionHost = options.atomicReconstructionHost;\n        }\n\n        if (!!options.exploreHost) {\n            Urls._exploreHost = options.exploreHost;\n        }\n\n        if (!!options.imageHost) {\n            Urls._imageHost = options.imageHost;\n        }\n\n        if (!!options.imageTileHost) {\n            Urls._imageTileHost = options.imageTileHost;\n        }\n\n        if (!!options.meshHost) {\n            Urls._meshHost = options.meshHost;\n        }\n\n        if (!!options.scheme) {\n            Urls._scheme = options.scheme;\n        }\n    }\n}\n\nexport default Urls;\n",
+    "import {IUrlOptions} from \"../Viewer\";\n\nexport class Urls {\n    private static _apiHost: string = \"a.mapillary.com\";\n    private static _atomicReconstructionHost: string = \"atomic-reconstructions.mapillary.com\";\n    private static _exploreHost: string = \"www.mapillary.com\";\n    private static _imageHost: string = \"images.mapillary.com\";\n    private static _imageTileHost: string = \"loris.mapillary.com\";\n    private static _meshHost: string = \"meshes.mapillary.com\";\n    private static _origin: string = \"mapillary.webgl\";\n    private static _scheme: string = \"https\";\n\n    public static get explore(): string {\n        return `${Urls._scheme}://${Urls._exploreHost}`;\n    }\n\n    public static get origin(): string {\n        return Urls._origin;\n    }\n\n    public static get tileScheme(): string {\n        return Urls._scheme;\n    }\n\n    public static get tileDomain(): string {\n        return Urls._imageTileHost;\n    }\n\n    public static atomicReconstruction(key: string): string {\n        return `${Urls._scheme}://${Urls._atomicReconstructionHost}/${key}/sfm/v1.0/atomic_reconstruction.json`;\n    }\n\n    public static exporeImage(key: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/?pKey=${key}&focus=photo`;\n    }\n\n    public static exporeUser(username: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/user/${username}`;\n    }\n\n    public static falcorModel(clientId: string): string {\n        return `${Urls._scheme}://${Urls._apiHost}/v3/model.json?client_id=${clientId}`;\n    }\n\n    public static protoMesh(key: string): string {\n        return `${Urls._scheme}://${Urls._meshHost}/v2/mesh/${key}`;\n    }\n\n    public static thumbnail(key: string, size: number, origin?: string): string {\n        const query: string = !!origin ? `?origin=${origin}` : \"\";\n\n        return `${Urls._scheme}://${Urls._imageHost}/${key}/thumb-${size}.jpg${query}`;\n    }\n\n    public static setOptions(options: IUrlOptions): void {\n        if (!options) {\n            return;\n        }\n\n        if (!!options.apiHost) {\n            Urls._apiHost = options.apiHost;\n        }\n\n        if (!!options.atomicReconstructionHost) {\n            Urls._atomicReconstructionHost = options.atomicReconstructionHost;\n        }\n\n        if (!!options.exploreHost) {\n            Urls._exploreHost = options.exploreHost;\n        }\n\n        if (!!options.imageHost) {\n            Urls._imageHost = options.imageHost;\n        }\n\n        if (!!options.imageTileHost) {\n            Urls._imageTileHost = options.imageTileHost;\n        }\n\n        if (!!options.meshHost) {\n            Urls._meshHost = options.meshHost;\n        }\n\n        if (!!options.scheme) {\n            Urls._scheme = options.scheme;\n        }\n    }\n}\n\nexport default Urls;\n",
     "/**\n * Enumeration for alignments\n * @enum {number}\n * @readonly\n */\nexport enum Alignment {\n    /**\n     * Align to bottom\n     */\n    Bottom,\n\n    /**\n     * Align to bottom left\n     */\n    BottomLeft,\n\n    /**\n     * Align to bottom right\n     */\n    BottomRight,\n\n    /**\n     * Align to center\n     */\n    Center,\n\n    /**\n     * Align to left\n     */\n    Left,\n\n    /**\n     * Align to right\n     */\n    Right,\n\n    /**\n     * Align to top\n     */\n    Top,\n\n    /**\n     * Align to top left\n     */\n    TopLeft,\n\n    /**\n     * Align to top right\n     */\n    TopRight,\n}\n\nexport default Alignment;\n",
     "import {\n    empty as observableEmpty,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    catchError,\n    timeout,\n    first,\n    distinctUntilChanged,\n    map,\n    bufferCount,\n    withLatestFrom,\n    switchMap,\n    skip,\n    mergeMap,\n} from \"rxjs/operators\";\n\nimport {\n    GraphMode,\n    GraphService,\n    IEdgeStatus,\n    Node,\n} from \"../Graph\";\nimport {\n    IFrame,\n    StateService,\n} from \"../State\";\n\nexport class CacheService {\n    private _graphService: GraphService;\n    private _stateService: StateService;\n\n    private _started: boolean;\n\n    private _uncacheSubscription: Subscription;\n    private _cacheNodeSubscription: Subscription;\n\n    constructor(graphService: GraphService, stateService: StateService) {\n        this._graphService = graphService;\n        this._stateService = stateService;\n\n        this._started = false;\n    }\n\n    public get started(): boolean {\n        return this._started;\n    }\n\n    public start(): void {\n        if (this._started) {\n            return;\n        }\n\n        this._uncacheSubscription = this._stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            map(\n                (frame: IFrame): [string[], string] => {\n                    const trajectory: Node[] = frame.state.trajectory;\n                    const trajectoryKeys: string[] = trajectory\n                        .map(\n                            (n: Node): string => {\n                                return n.key;\n                            });\n\n                    const sequenceKey: string = trajectory[trajectory.length - 1].sequenceKey;\n\n                    return [trajectoryKeys, sequenceKey];\n                }),\n            bufferCount(1, 5),\n            withLatestFrom(this._graphService.graphMode$),\n            switchMap(\n                ([keepBuffer, graphMode]: [[string[], string][], GraphMode]): Observable<void> => {\n                    let keepKeys: string[] = keepBuffer[0][0];\n                    let keepSequenceKey: string = graphMode === GraphMode.Sequence ?\n                        keepBuffer[0][1] : undefined;\n\n                    return this._graphService.uncache$(keepKeys, keepSequenceKey);\n                }))\n            .subscribe(() => { /*noop*/ });\n\n        this._cacheNodeSubscription = this._graphService.graphMode$.pipe(\n            skip(1),\n            withLatestFrom(this._stateService.currentState$),\n            switchMap(\n                ([mode, frame]: [GraphMode, IFrame]): Observable<IEdgeStatus> => {\n                    return mode === GraphMode.Sequence ?\n                        this._keyToEdges(\n                            frame.state.currentNode.key,\n                            (node: Node): Observable<IEdgeStatus> => {\n                                return node.sequenceEdges$;\n                            }) :\n                        observableFrom(frame.state.trajectory\n                                .map(\n                                    (node: Node): string => {\n                                        return node.key;\n                                    })\n                                .slice(frame.state.currentIndex)).pipe(\n                            mergeMap(\n                                (key: string): Observable<IEdgeStatus> => {\n                                    return this._keyToEdges(\n                                        key,\n                                        (node: Node): Observable<IEdgeStatus> => {\n                                            return node.spatialEdges$;\n                                        });\n                                },\n                                6));\n                }))\n            .subscribe(() => { /*noop*/ });\n\n        this._started = true;\n    }\n\n    public stop(): void {\n        if (!this._started) {\n            return;\n        }\n\n        this._uncacheSubscription.unsubscribe();\n        this._uncacheSubscription = null;\n\n        this._cacheNodeSubscription.unsubscribe();\n        this._cacheNodeSubscription = null;\n\n        this._started = false;\n    }\n\n    private _keyToEdges(key: string, nodeToEdgeMap: (node: Node) => Observable<IEdgeStatus>): Observable<IEdgeStatus> {\n        return this._graphService.cacheNode$(key).pipe(\n            switchMap(nodeToEdgeMap),\n            first(\n                (status: IEdgeStatus): boolean => {\n                    return status.cached;\n                }),\n            timeout(15000),\n            catchError(\n                (error: Error): Observable<IEdgeStatus> => {\n                    console.error(`Failed to cache edges (${key}).`, error);\n\n                    return observableEmpty();\n                }));\n    }\n}\n\nexport default CacheService;\n",
-    "import {first, switchMap, distinctUntilChanged} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {Node} from \"../Graph\";\nimport {\n    Component,\n    ComponentService,\n    CoverComponent,\n    CoverState,\n    IComponentConfiguration,\n    ICoverConfiguration,\n} from \"../Component\";\nimport {\n    Container,\n    IComponentOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\n\nexport class ComponentController {\n    private _container: Container;\n    private _coverComponent: CoverComponent;\n    private _observer: Observer;\n    private _navigator: Navigator;\n    private _componentService: ComponentService;\n    private _options: IComponentOptions;\n    private _key: string;\n    private _navigable: boolean;\n\n    constructor(\n        container: Container,\n        navigator: Navigator,\n        observer: Observer,\n        key: string,\n        options: IComponentOptions,\n        componentService?: ComponentService) {\n        this._container = container;\n        this._observer = observer;\n        this._navigator = navigator;\n        this._options = options != null ? options : {};\n        this._key = key;\n        this._navigable = key == null;\n        this._componentService = !!componentService ?\n            componentService :\n            new ComponentService(this._container, this._navigator);\n\n        this._coverComponent = this._componentService.getCover();\n\n        this._initializeComponents();\n\n        if (key) {\n            this._initilizeCoverComponent();\n            this._subscribeCoverComponent();\n        } else {\n            this._navigator.movedToKey$.pipe(\n                first(\n                    (k: string): boolean => {\n                        return k != null;\n                    }))\n                .subscribe(\n                    (k: string): void => {\n                        this._key = k;\n                        this._componentService.deactivateCover();\n                        this._coverComponent.configure({ key: this._key, state: CoverState.Hidden });\n                        this._subscribeCoverComponent();\n                        this._navigator.stateService.start();\n                        this._navigator.cacheService.start();\n                        this._observer.startEmit();\n                    });\n        }\n    }\n\n    public get navigable(): boolean {\n        return this._navigable;\n    }\n\n    public get<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentService.get<TComponent>(name);\n    }\n\n    public activate(name: string): void {\n        this._componentService.activate(name);\n    }\n\n    public activateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Visible });\n    }\n\n    public deactivate(name: string): void {\n        this._componentService.deactivate(name);\n    }\n\n    public deactivateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Loading });\n    }\n\n    private _initializeComponents(): void {\n        let options: IComponentOptions = this._options;\n\n        this._uFalse(options.background, \"background\");\n        this._uFalse(options.debug, \"debug\");\n        this._uFalse(options.image, \"image\");\n        this._uFalse(options.marker, \"marker\");\n        this._uFalse(options.navigation, \"navigation\");\n        this._uFalse(options.popup, \"popup\");\n        this._uFalse(options.route, \"route\");\n        this._uFalse(options.slider, \"slider\");\n        this._uFalse(options.spatialData, \"spatialData\");\n        this._uFalse(options.tag, \"tag\");\n\n        this._uTrue(options.attribution, \"attribution\");\n        this._uTrue(options.bearing, \"bearing\");\n        this._uTrue(options.cache, \"cache\");\n        this._uTrue(options.direction, \"direction\");\n        this._uTrue(options.imagePlane, \"imagePlane\");\n        this._uTrue(options.keyboard, \"keyboard\");\n        this._uTrue(options.loading, \"loading\");\n        this._uTrue(options.mouse, \"mouse\");\n        this._uTrue(options.sequence, \"sequence\");\n        this._uTrue(options.stats, \"stats\");\n        this._uTrue(options.zoom, \"zoom\");\n    }\n\n    private _initilizeCoverComponent(): void {\n        let options: IComponentOptions = this._options;\n\n        this._coverComponent.configure({ key: this._key });\n        if (options.cover === undefined || options.cover) {\n            this.activateCover();\n        } else {\n            this.deactivateCover();\n        }\n    }\n\n    private _setNavigable(navigable: boolean): void {\n        if (this._navigable === navigable) {\n            return;\n        }\n\n        this._navigable = navigable;\n        this._observer.navigable$.next(navigable);\n    }\n\n    private _subscribeCoverComponent(): void {\n        this._coverComponent.configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (c: ICoverConfiguration): CoverState => {\n                    return c.state;\n                }))\n        .subscribe((conf: ICoverConfiguration) => {\n            if (conf.state === CoverState.Loading) {\n                this._navigator.stateService.currentKey$.pipe(\n                    first(),\n                    switchMap(\n                        (key: string): Observable<Node> => {\n                            const keyChanged: boolean = key == null || key !== conf.key;\n\n                            if (keyChanged) {\n                                this._setNavigable(false);\n                            }\n\n                            return keyChanged ?\n                                this._navigator.moveToKey$(conf.key) :\n                                this._navigator.stateService.currentNode$.pipe(\n                                    first());\n                        }))\n                    .subscribe(\n                        (): void => {\n                            this._navigator.stateService.start();\n                            this._navigator.cacheService.start();\n                            this._observer.startEmit();\n                            this._coverComponent.configure({ state: CoverState.Hidden });\n                            this._componentService.deactivateCover();\n                            this._setNavigable(true);\n                        },\n                        (error: Error): void => {\n                            console.error(\"Failed to deactivate cover.\", error);\n\n                            this._coverComponent.configure({ state: CoverState.Visible });\n                        });\n            } else if (conf.state === CoverState.Visible) {\n                this._observer.stopEmit();\n                this._navigator.stateService.stop();\n                this._navigator.cacheService.stop();\n                this._navigator.playService.stop();\n                this._componentService.activateCover();\n                this._setNavigable(conf.key == null);\n            }\n        });\n    }\n\n    private _uFalse<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.deactivate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n\n    private _uTrue<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.activate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n}\n",
+    "import {first, switchMap, distinctUntilChanged} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {Node} from \"../Graph\";\nimport {\n    Component,\n    ComponentService,\n    CoverComponent,\n    CoverState,\n    IComponentConfiguration,\n    ICoverConfiguration,\n} from \"../Component\";\nimport {\n    Container,\n    IComponentOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\n\nexport class ComponentController {\n    private _container: Container;\n    private _coverComponent: CoverComponent;\n    private _observer: Observer;\n    private _navigator: Navigator;\n    private _componentService: ComponentService;\n    private _options: IComponentOptions;\n    private _key: string;\n    private _navigable: boolean;\n\n    constructor(\n        container: Container,\n        navigator: Navigator,\n        observer: Observer,\n        key: string,\n        options: IComponentOptions,\n        componentService?: ComponentService) {\n        this._container = container;\n        this._observer = observer;\n        this._navigator = navigator;\n        this._options = options != null ? options : {};\n        this._key = key;\n        this._navigable = key == null;\n        this._componentService = !!componentService ?\n            componentService :\n            new ComponentService(this._container, this._navigator);\n\n        this._coverComponent = this._componentService.getCover();\n\n        this._initializeComponents();\n\n        if (key) {\n            this._initilizeCoverComponent();\n            this._subscribeCoverComponent();\n        } else {\n            this._navigator.movedToKey$.pipe(\n                first(\n                    (k: string): boolean => {\n                        return k != null;\n                    }))\n                .subscribe(\n                    (k: string): void => {\n                        this._key = k;\n                        this._componentService.deactivateCover();\n                        this._coverComponent.configure({ key: this._key, state: CoverState.Hidden });\n                        this._subscribeCoverComponent();\n                        this._navigator.stateService.start();\n                        this._navigator.cacheService.start();\n                        this._navigator.panService.start();\n                        this._observer.startEmit();\n                    });\n        }\n    }\n\n    public get navigable(): boolean {\n        return this._navigable;\n    }\n\n    public get<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentService.get<TComponent>(name);\n    }\n\n    public activate(name: string): void {\n        this._componentService.activate(name);\n    }\n\n    public activateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Visible });\n    }\n\n    public deactivate(name: string): void {\n        this._componentService.deactivate(name);\n    }\n\n    public deactivateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Loading });\n    }\n\n    private _initializeComponents(): void {\n        let options: IComponentOptions = this._options;\n\n        this._uFalse(options.background, \"background\");\n        this._uFalse(options.debug, \"debug\");\n        this._uFalse(options.image, \"image\");\n        this._uFalse(options.marker, \"marker\");\n        this._uFalse(options.navigation, \"navigation\");\n        this._uFalse(options.popup, \"popup\");\n        this._uFalse(options.route, \"route\");\n        this._uFalse(options.slider, \"slider\");\n        this._uFalse(options.spatialData, \"spatialData\");\n        this._uFalse(options.tag, \"tag\");\n\n        this._uTrue(options.attribution, \"attribution\");\n        this._uTrue(options.bearing, \"bearing\");\n        this._uTrue(options.cache, \"cache\");\n        this._uTrue(options.direction, \"direction\");\n        this._uTrue(options.imagePlane, \"imagePlane\");\n        this._uTrue(options.keyboard, \"keyboard\");\n        this._uTrue(options.loading, \"loading\");\n        this._uTrue(options.mouse, \"mouse\");\n        this._uTrue(options.sequence, \"sequence\");\n        this._uTrue(options.stats, \"stats\");\n        this._uTrue(options.zoom, \"zoom\");\n    }\n\n    private _initilizeCoverComponent(): void {\n        let options: IComponentOptions = this._options;\n\n        this._coverComponent.configure({ key: this._key });\n        if (options.cover === undefined || options.cover) {\n            this.activateCover();\n        } else {\n            this.deactivateCover();\n        }\n    }\n\n    private _setNavigable(navigable: boolean): void {\n        if (this._navigable === navigable) {\n            return;\n        }\n\n        this._navigable = navigable;\n        this._observer.navigable$.next(navigable);\n    }\n\n    private _subscribeCoverComponent(): void {\n        this._coverComponent.configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (c: ICoverConfiguration): CoverState => {\n                    return c.state;\n                }))\n        .subscribe((conf: ICoverConfiguration) => {\n            if (conf.state === CoverState.Loading) {\n                this._navigator.stateService.currentKey$.pipe(\n                    first(),\n                    switchMap(\n                        (key: string): Observable<Node> => {\n                            const keyChanged: boolean = key == null || key !== conf.key;\n\n                            if (keyChanged) {\n                                this._setNavigable(false);\n                            }\n\n                            return keyChanged ?\n                                this._navigator.moveToKey$(conf.key) :\n                                this._navigator.stateService.currentNode$.pipe(\n                                    first());\n                        }))\n                    .subscribe(\n                        (): void => {\n                            this._navigator.stateService.start();\n                            this._navigator.cacheService.start();\n                            this._navigator.panService.start();\n                            this._observer.startEmit();\n                            this._coverComponent.configure({ state: CoverState.Hidden });\n                            this._componentService.deactivateCover();\n                            this._setNavigable(true);\n                        },\n                        (error: Error): void => {\n                            console.error(\"Failed to deactivate cover.\", error);\n\n                            this._coverComponent.configure({ state: CoverState.Visible });\n                        });\n            } else if (conf.state === CoverState.Visible) {\n                this._observer.stopEmit();\n                this._navigator.stateService.stop();\n                this._navigator.cacheService.stop();\n                this._navigator.playService.stop();\n                this._navigator.panService.stop();\n                this._componentService.activateCover();\n                this._setNavigable(conf.key == null);\n            }\n        });\n    }\n\n    private _uFalse<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.deactivate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n\n    private _uTrue<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.activate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n}\n",
     "import {\n    GLRenderer,\n    DOMRenderer,\n    RenderService,\n} from \"../Render\";\nimport {StateService} from \"../State\";\nimport {DOM} from \"../Utils\";\nimport {\n    IViewerOptions,\n    KeyboardService,\n    MouseService,\n    TouchService,\n    SpriteService,\n} from \"../Viewer\";\n\nexport class Container {\n    public id: string;\n\n    public renderService: RenderService;\n\n    public glRenderer: GLRenderer;\n    public domRenderer: DOMRenderer;\n\n    public keyboardService: KeyboardService;\n    public mouseService: MouseService;\n    public touchService: TouchService;\n\n    public spriteService: SpriteService;\n\n    private _canvasContainer: HTMLElement;\n    private _container: HTMLElement;\n    private _domContainer: HTMLElement;\n\n    private _dom: DOM;\n\n    constructor (id: string, stateService: StateService, options: IViewerOptions, dom?: DOM) {\n        this.id = id;\n        this._dom = !!dom ? dom : new DOM();\n\n        this._container = this._dom.document.getElementById(id);\n\n        if (!this._container) {\n            throw new Error(`Container '${id}' not found.`);\n        }\n\n        this._container.classList.add(\"mapillary-js\");\n\n        this._canvasContainer = this._dom.createElement(\"div\", \"mapillary-js-interactive\", this._container);\n        this._domContainer = this._dom.createElement(\"div\", \"mapillary-js-dom\", this._container);\n\n        this.renderService = new RenderService(this._container, stateService.currentState$, options.renderMode);\n\n        this.glRenderer = new GLRenderer(this._canvasContainer, this.renderService, this._dom);\n        this.domRenderer = new DOMRenderer(this._domContainer, this.renderService, stateService.currentState$);\n\n        this.keyboardService = new KeyboardService(this._canvasContainer);\n        this.mouseService = new MouseService(this._container, this._canvasContainer, this._domContainer, document);\n        this.touchService = new TouchService(this._canvasContainer, this._domContainer);\n\n        this.spriteService = new SpriteService(options.sprite);\n    }\n\n    public get element(): HTMLElement {\n        return this._container;\n    }\n\n    public get canvasContainer(): HTMLElement {\n        return this._canvasContainer;\n    }\n\n    public get domContainer(): HTMLElement {\n        return this._domContainer;\n    }\n}\n\nexport default Container;\n",
     "/**\n * Enumeration for image sizes\n * @enum {number}\n * @readonly\n * @description Image sizes in pixels for the long side of the image.\n */\nexport enum ImageSize {\n\n    /**\n     * 320 pixels image size\n     */\n    Size320 = 320,\n\n    /**\n     * 640 pixels image size\n     */\n    Size640 = 640,\n\n    /**\n     * 1024 pixels image size\n     */\n    Size1024 = 1024,\n\n    /**\n     * 2048 pixels image size\n     */\n    Size2048 = 2048,\n}\n",
     "import {fromEvent as observableFromEvent, Observable} from \"rxjs\";\n\nexport class KeyboardService {\n    private _keyDown$: Observable<KeyboardEvent>;\n    private _keyUp$: Observable<KeyboardEvent>;\n\n    constructor(canvasContainer: HTMLElement) {\n        this._keyDown$ = observableFromEvent<KeyboardEvent>(canvasContainer, \"keydown\");\n        this._keyUp$ = observableFromEvent<KeyboardEvent>(canvasContainer, \"keyup\");\n    }\n\n    public get keyDown$(): Observable<KeyboardEvent> {\n        return this._keyDown$;\n    }\n\n    public get keyUp$(): Observable<KeyboardEvent> {\n        return this._keyUp$;\n    }\n}\n\nexport default KeyboardService;\n",
     "import {map, distinctUntilChanged, debounceTime, refCount, publishReplay, scan, startWith} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\ninterface ILoader {\n    task: string;\n    loading: boolean;\n}\n\nexport class LoadingService {\n    private _loaders$: Observable<{[key: string]: boolean}>;\n    private _loadersSubject$: Subject<any> = new Subject<any>();\n\n    constructor () {\n        this._loaders$ = this._loadersSubject$.pipe(\n            scan(\n                (loaders: {[key: string]: boolean}, loader: ILoader): {[key: string]: boolean} => {\n                    if (loader.task !== undefined) {\n                        loaders[loader.task] = loader.loading;\n                    }\n                    return loaders;\n                },\n                {}),\n            startWith({}),\n            publishReplay(1),\n            refCount());\n    }\n\n    public get loading$(): Observable<boolean> {\n        return this._loaders$.pipe(\n            map(\n                (loaders: {[key: string]: boolean}): boolean => {\n                    for (const key in loaders) {\n                        if (!loaders.hasOwnProperty(key)) {\n                            continue;\n                        }\n\n                        if (loaders[key]) {\n                            return true;\n                        }\n                    }\n\n                    return false;\n                }),\n            debounceTime(100),\n            distinctUntilChanged());\n    }\n\n    public taskLoading$(task: string): Observable<boolean> {\n        return this._loaders$.pipe(\n            map(\n                (loaders: {[key: string]: boolean}): boolean => {\n                    return !!loaders[task];\n                }),\n            debounceTime(100),\n            distinctUntilChanged());\n    }\n\n    public startLoading(task: string): void {\n        this._loadersSubject$.next({loading: true, task: task});\n    }\n\n    public stopLoading(task: string): void {\n        this._loadersSubject$.next({loading: false, task: task});\n    }\n}\n\nexport default LoadingService;\n",
     "import {\n    concat as observableConcat,\n    merge as observableMerge,\n    combineLatest as observableCombineLatest,\n    fromEvent as observableFromEvent,\n    of as observableOf,\n    BehaviorSubject,\n    Observable,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    distinctUntilChanged,\n    publishReplay,\n    refCount,\n    scan,\n    map,\n    startWith,\n    filter,\n    share,\n    takeUntil,\n    take,\n    withLatestFrom,\n    first,\n    bufferCount,\n} from \"rxjs/operators\";\n\nimport {\n    IMouseClaim,\n    IMouseDeferPixels,\n} from \"../Viewer\";\n\nexport class MouseService {\n    private _activeSubject$: BehaviorSubject<boolean>;\n    private _active$: Observable<boolean>;\n\n    private _domMouseDown$: Observable<MouseEvent>;\n    private _domMouseMove$: Observable<MouseEvent>;\n\n    private _domMouseDragStart$: Observable<MouseEvent>;\n    private _domMouseDrag$: Observable<MouseEvent>;\n    private _domMouseDragEnd$: Observable<MouseEvent | FocusEvent>;\n\n    private _documentMouseMove$: Observable<MouseEvent>;\n    private _documentMouseUp$: Observable<MouseEvent>;\n\n    private _mouseDown$: Observable<MouseEvent>;\n    private _mouseMove$: Observable<MouseEvent>;\n    private _mouseLeave$: Observable<MouseEvent>;\n    private _mouseUp$: Observable<MouseEvent>;\n    private _mouseOut$: Observable<MouseEvent>;\n    private _mouseOver$: Observable<MouseEvent>;\n\n    private _contextMenu$: Observable<MouseEvent>;\n    private _consistentContextMenu$: Observable<MouseEvent>;\n    private _click$: Observable<MouseEvent>;\n    private _dblClick$: Observable<MouseEvent>;\n\n    private _mouseWheel$: Observable<WheelEvent>;\n\n    private _mouseDragStart$: Observable<MouseEvent>;\n    private _mouseDrag$: Observable<MouseEvent>;\n    private _mouseDragEnd$: Observable<MouseEvent | FocusEvent>;\n\n    private _deferPixelClaims$: Subject<IMouseDeferPixels>;\n    private _deferPixels$: Observable<number>;\n    private _proximateClick$: Observable<MouseEvent>;\n    private _staticClick$: Observable<MouseEvent>;\n\n    private _claimMouse$: Subject<IMouseClaim>;\n    private _claimWheel$: Subject<IMouseClaim>;\n\n    private _mouseOwner$: Observable<string>;\n    private _wheelOwner$: Observable<string>;\n\n    constructor(\n        container: EventTarget,\n        canvasContainer: EventTarget,\n        domContainer: EventTarget,\n        doc: EventTarget) {\n\n        this._activeSubject$ = new BehaviorSubject<boolean>(false);\n\n        this._active$ = this._activeSubject$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._claimMouse$ = new Subject<IMouseClaim>();\n        this._claimWheel$ = new Subject<IMouseClaim>();\n\n        this._deferPixelClaims$ = new Subject<IMouseDeferPixels>();\n        this._deferPixels$ = this._deferPixelClaims$.pipe(\n            scan(\n                (claims: { [key: string]: number }, claim: IMouseDeferPixels): { [key: string]: number } => {\n                    if (claim.deferPixels == null) {\n                        delete claims[claim.name];\n                    } else {\n                        claims[claim.name] = claim.deferPixels;\n                    }\n\n                    return claims;\n                },\n                {}),\n            map(\n                (claims: { [key: string]: number }): number => {\n                    let deferPixelMax: number = -1;\n                    for (const key in claims) {\n                        if (!claims.hasOwnProperty(key)) {\n                            continue;\n                        }\n\n                        const deferPixels: number = claims[key];\n                        if (deferPixels > deferPixelMax) {\n                            deferPixelMax = deferPixels;\n                        }\n                    }\n\n                    return deferPixelMax;\n                }),\n            startWith(-1),\n            publishReplay(1),\n            refCount());\n\n        this._deferPixels$.subscribe((): void => { /* noop */ });\n\n        this._documentMouseMove$ = observableFromEvent<MouseEvent>(doc, \"mousemove\");\n        this._documentMouseUp$ = observableFromEvent<MouseEvent>(doc, \"mouseup\");\n\n        this._mouseDown$ = observableFromEvent<MouseEvent>(canvasContainer, \"mousedown\");\n        this._mouseLeave$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseleave\");\n        this._mouseMove$ = observableFromEvent<MouseEvent>(canvasContainer, \"mousemove\");\n        this._mouseUp$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseup\");\n        this._mouseOut$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseout\");\n        this._mouseOver$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseover\");\n\n        this._domMouseDown$ = observableFromEvent<MouseEvent>(domContainer, \"mousedown\");\n        this._domMouseMove$ = observableFromEvent<MouseEvent>(domContainer, \"mousemove\");\n\n        this._click$ = observableFromEvent<MouseEvent>(canvasContainer, \"click\");\n        this._contextMenu$ = observableFromEvent<MouseEvent>(canvasContainer, \"contextmenu\");\n\n        this._dblClick$ = observableMerge(\n                observableFromEvent<MouseEvent>(container, \"click\"),\n                observableFromEvent<MouseEvent>(canvasContainer, \"dblclick\")).pipe(\n            bufferCount(3, 1),\n            filter(\n                (events: MouseEvent[]): boolean => {\n                    const event1: MouseEvent = events[0];\n                    const event2: MouseEvent = events[1];\n                    const event3: MouseEvent = events[2];\n\n                    return event1.type === \"click\" &&\n                        event2.type === \"click\" &&\n                        event3.type === \"dblclick\" &&\n                        (<HTMLElement>event1.target).parentNode === canvasContainer &&\n                        (<HTMLElement>event2.target).parentNode === canvasContainer;\n                }),\n            map(\n                (events: MouseEvent[]): MouseEvent => {\n                    return events[2];\n                }),\n            share());\n\n        observableMerge(\n                this._domMouseDown$,\n                this._domMouseMove$,\n                this._dblClick$,\n                this._contextMenu$)\n            .subscribe(\n                (event: MouseEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._mouseWheel$ = observableMerge(\n                observableFromEvent<WheelEvent>(canvasContainer, \"wheel\"),\n                observableFromEvent<WheelEvent>(domContainer, \"wheel\")).pipe(\n            share());\n\n        this._consistentContextMenu$ = observableMerge(\n                this._mouseDown$,\n                this._mouseMove$,\n                this._mouseOut$,\n                this._mouseUp$,\n                this._contextMenu$).pipe(\n            bufferCount(3, 1),\n            filter(\n                (events: MouseEvent[]): boolean => {\n                    // fire context menu on mouse up both on mac and windows\n                    return events[0].type === \"mousedown\" &&\n                        events[1].type === \"contextmenu\" &&\n                        events[2].type === \"mouseup\";\n                }),\n            map(\n                (events: MouseEvent[]): MouseEvent => {\n                    return events[1];\n                }),\n            share());\n\n        const dragStop$: Observable<MouseEvent | FocusEvent> = observableMerge(\n                observableFromEvent<FocusEvent>(window, \"blur\"),\n                this._documentMouseUp$.pipe(\n                    filter(\n                        (e: MouseEvent): boolean => {\n                            return e.button === 0;\n                        }))).pipe(\n            share());\n\n        const mouseDragInitiate$: Observable<[MouseEvent, MouseEvent]> =\n            this._createMouseDragInitiate$(this._mouseDown$, dragStop$, true).pipe(share());\n\n        this._mouseDragStart$ = this._createMouseDragStart$(mouseDragInitiate$).pipe(share());\n        this._mouseDrag$ = this._createMouseDrag$(mouseDragInitiate$, dragStop$).pipe(share());\n        this._mouseDragEnd$ = this._createMouseDragEnd$(this._mouseDragStart$, dragStop$).pipe(share());\n\n        const domMouseDragInitiate$: Observable<[MouseEvent, MouseEvent]> =\n            this._createMouseDragInitiate$(this._domMouseDown$, dragStop$, false).pipe(share());\n\n        this._domMouseDragStart$ = this._createMouseDragStart$(domMouseDragInitiate$).pipe(share());\n        this._domMouseDrag$ = this._createMouseDrag$(domMouseDragInitiate$, dragStop$).pipe(share());\n        this._domMouseDragEnd$ = this._createMouseDragEnd$(this._domMouseDragStart$, dragStop$).pipe(share());\n\n        this._proximateClick$ = this._mouseDown$.pipe(\n            switchMap(\n                (mouseDown: MouseEvent): Observable<MouseEvent> => {\n                    return this._click$.pipe(\n                        takeUntil(this._createDeferredMouseMove$(mouseDown, this._documentMouseMove$)),\n                        take(1));\n                }),\n            share());\n\n        this._staticClick$ = this._mouseDown$.pipe(\n            switchMap(\n                (e: MouseEvent): Observable<MouseEvent> => {\n                    return this._click$.pipe(\n                        takeUntil(this._documentMouseMove$),\n                        take(1));\n                }),\n            share());\n\n        this._mouseDragStart$.subscribe();\n        this._mouseDrag$.subscribe();\n        this._mouseDragEnd$.subscribe();\n\n        this._domMouseDragStart$.subscribe();\n        this._domMouseDrag$.subscribe();\n        this._domMouseDragEnd$.subscribe();\n\n        this._staticClick$.subscribe();\n\n        this._mouseOwner$ = this._createOwner$(this._claimMouse$).pipe(\n            publishReplay(1),\n            refCount());\n\n        this._wheelOwner$ = this._createOwner$(this._claimWheel$).pipe(\n            publishReplay(1),\n            refCount());\n\n        this._mouseOwner$.subscribe(() => { /* noop */ });\n        this._wheelOwner$.subscribe(() => { /* noop */ });\n    }\n\n    public get active$(): Observable<boolean> {\n        return this._active$;\n    }\n\n    public get activate$(): Subject<boolean> {\n        return this._activeSubject$;\n    }\n\n    public get documentMouseMove$(): Observable<MouseEvent> {\n        return this._documentMouseMove$;\n    }\n\n    public get documentMouseUp$(): Observable<MouseEvent> {\n        return this._documentMouseUp$;\n    }\n\n    public get domMouseDragStart$(): Observable<MouseEvent> {\n        return this._domMouseDragStart$;\n    }\n\n    public get domMouseDrag$(): Observable<MouseEvent> {\n        return this._domMouseDrag$;\n    }\n\n    public get domMouseDragEnd$(): Observable<MouseEvent | FocusEvent> {\n        return this._domMouseDragEnd$;\n    }\n\n    public get domMouseDown$(): Observable<MouseEvent> {\n        return this._domMouseDown$;\n    }\n\n    public get domMouseMove$(): Observable<MouseEvent> {\n        return this._domMouseMove$;\n    }\n\n    public get mouseOwner$(): Observable<string> {\n        return this._mouseOwner$;\n    }\n\n    public get mouseDown$(): Observable<MouseEvent> {\n        return this._mouseDown$;\n    }\n\n    public get mouseMove$(): Observable<MouseEvent> {\n        return this._mouseMove$;\n    }\n\n    public get mouseLeave$(): Observable<MouseEvent> {\n        return this._mouseLeave$;\n    }\n\n    public get mouseOut$(): Observable<MouseEvent> {\n        return this._mouseOut$;\n    }\n\n    public get mouseOver$(): Observable<MouseEvent> {\n        return this._mouseOver$;\n    }\n\n    public get mouseUp$(): Observable<MouseEvent> {\n        return this._mouseUp$;\n    }\n\n    public get click$(): Observable<MouseEvent> {\n        return this._click$;\n    }\n\n    public get dblClick$(): Observable<MouseEvent> {\n        return this._dblClick$;\n    }\n\n    public get contextMenu$(): Observable<MouseEvent> {\n        return this._consistentContextMenu$;\n    }\n\n    public get mouseWheel$(): Observable<WheelEvent> {\n        return this._mouseWheel$;\n    }\n\n    public get mouseDragStart$(): Observable<MouseEvent> {\n        return this._mouseDragStart$;\n    }\n\n    public get mouseDrag$(): Observable<MouseEvent> {\n        return this._mouseDrag$;\n    }\n\n    public get mouseDragEnd$(): Observable<MouseEvent | FocusEvent> {\n        return this._mouseDragEnd$;\n    }\n\n    public get proximateClick$(): Observable<MouseEvent> {\n        return this._proximateClick$;\n    }\n\n    public get staticClick$(): Observable<MouseEvent> {\n        return this._staticClick$;\n    }\n\n    public claimMouse(name: string, zindex: number): void {\n        this._claimMouse$.next({ name: name, zindex: zindex });\n    }\n\n    public unclaimMouse(name: string): void {\n        this._claimMouse$.next({ name: name, zindex: null });\n    }\n\n    public deferPixels(name: string, deferPixels: number): void {\n        this._deferPixelClaims$.next({ name: name, deferPixels: deferPixels });\n    }\n\n    public undeferPixels(name: string): void {\n        this._deferPixelClaims$.next({ name: name, deferPixels: null });\n    }\n\n    public claimWheel(name: string, zindex: number): void {\n        this._claimWheel$.next({name: name, zindex: zindex});\n    }\n\n    public unclaimWheel(name: string): void {\n        this._claimWheel$.next({name: name, zindex: null});\n    }\n\n    public filtered$<T>(name: string, observable$: Observable<T>): Observable<T> {\n        return this._filtered(name, observable$, this._mouseOwner$);\n    }\n\n    public filteredWheel$<T>(name: string, observable$: Observable<T>): Observable<T> {\n        return this._filtered(name, observable$, this._wheelOwner$);\n    }\n\n    private _createDeferredMouseMove$(\n        origin: MouseEvent,\n        mouseMove$: Observable<MouseEvent>): Observable<MouseEvent> {\n        return mouseMove$.pipe(\n            map(\n                (mouseMove: MouseEvent): [MouseEvent, number] => {\n                    const deltaX: number = mouseMove.clientX - origin.clientX;\n                    const deltaY: number = mouseMove.clientY - origin.clientY;\n\n                    return [mouseMove, Math.sqrt(deltaX * deltaX + deltaY * deltaY)];\n                }),\n            withLatestFrom(this._deferPixels$),\n            filter(\n                ([[mouseMove, delta], deferPixels]: [[MouseEvent, number], number]): boolean => {\n                    return delta > deferPixels;\n                }),\n            map(\n                ([[mouseMove, delta], deferPixels]: [[MouseEvent, number], number]): MouseEvent => {\n                    return mouseMove;\n                }));\n    }\n\n    private _createMouseDrag$(\n        mouseDragStartInitiate$: Observable<[MouseEvent, MouseEvent]>,\n        stop$: Observable<Event>): Observable<MouseEvent> {\n\n        return mouseDragStartInitiate$.pipe(\n            map(\n                ([mouseDown, mouseMove]: [MouseEvent, MouseEvent]): MouseEvent => {\n                    return mouseMove;\n                }),\n            switchMap(\n                (mouseMove: MouseEvent): Observable<MouseEvent> => {\n                    return observableConcat(\n                            observableOf(mouseMove),\n                            this._documentMouseMove$).pipe(\n                        takeUntil(stop$));\n                }));\n    }\n\n    private _createMouseDragEnd$<T>(mouseDragStart$: Observable<MouseEvent>, stop$: Observable<T>): Observable<T> {\n        return mouseDragStart$.pipe(\n            switchMap(\n                (event: MouseEvent): Observable<T> => {\n                    return stop$.pipe(first());\n                }));\n    }\n\n    private _createMouseDragStart$(mouseDragStartInitiate$: Observable<[MouseEvent, MouseEvent]>): Observable<MouseEvent> {\n        return mouseDragStartInitiate$.pipe(\n            map(\n                ([mouseDown, mouseMove]: [MouseEvent, MouseEvent]): MouseEvent => {\n                    return mouseDown;\n                }));\n    }\n\n    private _createMouseDragInitiate$(\n        mouseDown$: Observable<MouseEvent>,\n        stop$: Observable<Event>,\n        defer: boolean): Observable<[MouseEvent, MouseEvent]> {\n\n        return mouseDown$.pipe(\n            filter(\n                (mouseDown: MouseEvent): boolean => {\n                    return mouseDown.button === 0;\n                }),\n            switchMap(\n                (mouseDown: MouseEvent): Observable<[MouseEvent, MouseEvent]> => {\n                    return observableCombineLatest(\n                            observableOf(mouseDown),\n                            defer ?\n                                this._createDeferredMouseMove$(mouseDown, this._documentMouseMove$) :\n                                this._documentMouseMove$).pipe(\n                        takeUntil(stop$),\n                        take(1));\n                }));\n    }\n\n    private _createOwner$(claim$: Observable<IMouseClaim>): Observable<string> {\n        return claim$.pipe(\n            scan(\n                (claims: { [key: string]: number }, claim: IMouseClaim): { [key: string]: number } => {\n                    if (claim.zindex == null) {\n                        delete claims[claim.name];\n                    } else {\n                        claims[claim.name] = claim.zindex;\n                    }\n\n                    return claims;\n                },\n                {}),\n            map(\n                (claims: { [key: string]: number }): string => {\n                    let owner: string = null;\n                    let zIndexMax: number = -1;\n\n                    for (const name in claims) {\n                        if (!claims.hasOwnProperty(name)) {\n                            continue;\n                        }\n\n                        if (claims[name] > zIndexMax) {\n                            zIndexMax = claims[name];\n                            owner = name;\n                        }\n                    }\n\n                    return owner;\n                }),\n            startWith(null));\n    }\n\n    private _filtered<T>(name: string, observable$: Observable<T>, owner$: Observable<string>): Observable<T> {\n        return observable$.pipe(\n            withLatestFrom(owner$),\n            filter(\n                ([item, owner]: [T, string]): boolean => {\n                    return owner === name;\n                }),\n            map(\n                ([item, owner]: [T, string]): T => {\n                    return item;\n                }));\n    }\n}\n\nexport default MouseService;\n",
-    "import {from as observableFrom, throwError as observableThrowError, BehaviorSubject, Observable, ReplaySubject, Subscription} from \"rxjs\";\n\nimport {last, tap, map, mergeAll, finalize, mergeMap, first} from \"rxjs/operators\";\n\nimport {\n    APIv3,\n    IFullNode,\n} from \"../API\";\nimport {\n    FilterExpression,\n    Graph,\n    GraphService,\n    IEdgeStatus,\n    ImageLoadingService,\n    Node,\n} from \"../Graph\";\nimport {EdgeDirection} from \"../Edge\";\nimport {AbortMapillaryError} from \"../Error\";\nimport {\n    StateService,\n    IFrame,\n} from \"../State\";\nimport {\n    CacheService,\n    IViewerOptions,\n    LoadingService,\n    PlayService,\n} from \"../Viewer\";\n\nexport class Navigator {\n    private _apiV3: APIv3;\n\n    private _cacheService: CacheService;\n    private _graphService: GraphService;\n    private _imageLoadingService: ImageLoadingService;\n    private _loadingService: LoadingService;\n    private _loadingName: string;\n    private _playService: PlayService;\n    private _stateService: StateService;\n\n    private _keyRequested$: BehaviorSubject<string>;\n    private _movedToKey$: BehaviorSubject<string>;\n\n    private _request$: ReplaySubject<Node>;\n    private _requestSubscription: Subscription;\n    private _nodeRequestSubscription: Subscription;\n\n    constructor (\n        clientId: string,\n        options: IViewerOptions,\n        token?: string,\n        apiV3?: APIv3,\n        graphService?: GraphService,\n        imageLoadingService?: ImageLoadingService,\n        loadingService?: LoadingService,\n        stateService?: StateService,\n        cacheService?: CacheService,\n        playService?: PlayService) {\n\n        this._apiV3 = apiV3 != null ? apiV3 : new APIv3(clientId, token);\n\n        this._imageLoadingService = imageLoadingService != null ? imageLoadingService : new ImageLoadingService();\n\n        this._graphService = graphService != null ?\n            graphService :\n            new GraphService(new Graph(this.apiV3), this._imageLoadingService);\n\n        this._loadingService = loadingService != null ? loadingService : new LoadingService();\n        this._loadingName = \"navigator\";\n\n        this._stateService = stateService != null ? stateService : new StateService(options.transitionMode);\n\n        this._cacheService = cacheService != null ?\n            cacheService :\n            new CacheService(this._graphService, this._stateService);\n\n        this._playService = playService != null ?\n            playService :\n            new PlayService(this._graphService, this._stateService);\n\n        this._keyRequested$ = new BehaviorSubject<string>(null);\n        this._movedToKey$ = new BehaviorSubject<string>(null);\n\n        this._request$ = null;\n        this._requestSubscription = null;\n        this._nodeRequestSubscription = null;\n    }\n\n    public get apiV3(): APIv3 {\n        return this._apiV3;\n    }\n\n    public get cacheService(): CacheService {\n        return this._cacheService;\n    }\n\n    public get graphService(): GraphService {\n        return this._graphService;\n    }\n\n    public get imageLoadingService(): ImageLoadingService {\n        return this._imageLoadingService;\n    }\n\n    public get loadingService(): LoadingService {\n        return this._loadingService;\n    }\n\n    public get movedToKey$(): Observable<string> {\n        return this._movedToKey$;\n    }\n\n    public get playService(): PlayService {\n        return this._playService;\n    }\n\n    public get stateService(): StateService {\n        return this._stateService;\n    }\n\n    public moveToKey$(key: string): Observable<Node> {\n        this._abortRequest(`to key ${key}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this._moveToKey$(key);\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveDir$(direction: EdgeDirection): Observable<Node> {\n        this._abortRequest(`in dir ${EdgeDirection[direction]}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.stateService.currentNode$.pipe(\n            first(),\n            mergeMap(\n                (node: Node): Observable<string> => {\n                    return ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                        node.sequenceEdges$ :\n                        node.spatialEdges$).pipe(\n                            first(),\n                            map(\n                                (status: IEdgeStatus): string => {\n                                    for (let edge of status.edges) {\n                                        if (edge.data.direction === direction) {\n                                            return edge.to;\n                                        }\n                                    }\n\n                                    return null;\n                                }));\n                }),\n            mergeMap(\n                (directionKey: string) => {\n                    if (directionKey == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`Direction (${direction}) does not exist for current node.`));\n                    }\n\n                    return this._moveToKey$(directionKey);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveCloseTo$(lat: number, lon: number): Observable<Node> {\n        this._abortRequest(`to lat ${lat}, lon ${lon}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.apiV3.imageCloseTo$(lat, lon).pipe(\n            mergeMap(\n                (fullNode: IFullNode): Observable<Node> => {\n                    if (fullNode == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`No image found close to lat ${lat}, lon ${lon}.`));\n                    }\n\n                    return this._moveToKey$(fullNode.key);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public setFilter$(filter: FilterExpression): Observable<void> {\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            mergeMap(\n                (key: string): Observable<Node> => {\n                    if (key != null) {\n                        return this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last());\n                    }\n\n                    return this._keyRequested$.pipe(\n                        first(),\n                        mergeMap(\n                            (requestedKey: string): Observable<Node> => {\n                                if (requestedKey != null) {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._graphService.cacheNode$(requestedKey);\n                                            }));\n                                }\n\n                                return this._graphService.setFilter$(filter).pipe(\n                                    map(\n                                        (): Node => {\n                                            return undefined;\n                                        }));\n                            }));\n                }),\n            map(\n                (node: Node): void => {\n                    return undefined;\n                }));\n    }\n\n    public setToken$(token?: string): Observable<void> {\n        this._abortRequest(\"to set token\");\n\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            tap(\n                (key: string): void => {\n                    this._apiV3.setToken(token);\n                }),\n            mergeMap(\n                (key: string): Observable<void> => {\n                    return key == null ?\n                        this._graphService.reset$([]) :\n                        this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.reset$(keys).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last(),\n                            map(\n                                (node: Node): void => {\n                                    return undefined;\n                                }));\n                    }));\n    }\n\n    private _cacheKeys$(keys: string[]): Observable<Node> {\n        let cacheNodes$: Observable<Node>[] = keys\n            .map(\n                (key: string): Observable<Node> => {\n                        return this._graphService.cacheNode$(key);\n                });\n\n        return observableFrom<Observable<Node>>(cacheNodes$).pipe(\n            mergeAll());\n    }\n\n    private _abortRequest(reason: string): void {\n        if (this._requestSubscription != null) {\n            this._requestSubscription.unsubscribe();\n            this._requestSubscription = null;\n        }\n\n        if (this._nodeRequestSubscription != null) {\n            this._nodeRequestSubscription.unsubscribe();\n            this._nodeRequestSubscription = null;\n        }\n\n        if (this._request$ != null) {\n            if (!(this._request$.isStopped || this._request$.hasError)) {\n                this._request$.error(new AbortMapillaryError(`Request aborted by a subsequent request ${reason}.`));\n            }\n\n            this._request$ = null;\n        }\n    }\n\n    private _makeRequest$(node$: Observable<Node>): Observable<Node> {\n        const request$: ReplaySubject<Node> = new ReplaySubject<Node>(1);\n        this._requestSubscription = request$\n            .subscribe(undefined, (): void => { /*noop*/ });\n\n        this._request$ = request$;\n\n        this._nodeRequestSubscription = node$\n            .subscribe(\n                (node: Node): void => {\n                    this._request$ = null;\n\n                    request$.next(node);\n                    request$.complete();\n                },\n                (error: Error): void => {\n                    this._request$ = null;\n\n                    request$.error(error);\n                });\n\n        return request$;\n    }\n\n    private _moveToKey$(key: string): Observable<Node> {\n        this._keyRequested$.next(key);\n\n        return this._graphService.cacheNode$(key).pipe(\n            tap(\n                (node: Node) => {\n                    this._stateService.setNodes([node]);\n                    this._movedToKey$.next(node.key);\n                }),\n            finalize(\n                (): void => {\n                    this._loadingService.stopLoading(this._loadingName);\n                }));\n    }\n\n    private _trajectoryKeys$(): Observable<string[]> {\n        return this._stateService.currentState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): string[] => {\n                    return frame.state.trajectory\n                            .map(\n                                (node: Node): string => {\n                                    return node.key;\n                                });\n                }));\n    }\n}\n\nexport default Navigator;\n",
+    "import {from as observableFrom, throwError as observableThrowError, BehaviorSubject, Observable, ReplaySubject, Subscription} from \"rxjs\";\n\nimport {last, tap, map, mergeAll, finalize, mergeMap, first} from \"rxjs/operators\";\n\nimport {\n    APIv3,\n    IFullNode,\n} from \"../API\";\nimport {\n    FilterExpression,\n    Graph,\n    GraphService,\n    IEdgeStatus,\n    ImageLoadingService,\n    Node,\n} from \"../Graph\";\nimport {EdgeDirection} from \"../Edge\";\nimport {AbortMapillaryError} from \"../Error\";\nimport {\n    StateService,\n    IFrame,\n} from \"../State\";\nimport {\n    CacheService,\n    IViewerOptions,\n    LoadingService,\n    PlayService,\n} from \"../Viewer\";\nimport { PanService } from \"./PanService\";\n\nexport class Navigator {\n    private _apiV3: APIv3;\n\n    private _cacheService: CacheService;\n    private _graphService: GraphService;\n    private _imageLoadingService: ImageLoadingService;\n    private _loadingService: LoadingService;\n    private _loadingName: string;\n    private _panService: PanService;\n    private _playService: PlayService;\n    private _stateService: StateService;\n\n    private _keyRequested$: BehaviorSubject<string>;\n    private _movedToKey$: BehaviorSubject<string>;\n\n    private _request$: ReplaySubject<Node>;\n    private _requestSubscription: Subscription;\n    private _nodeRequestSubscription: Subscription;\n\n    constructor (\n        clientId: string,\n        options: IViewerOptions,\n        token?: string,\n        apiV3?: APIv3,\n        graphService?: GraphService,\n        imageLoadingService?: ImageLoadingService,\n        loadingService?: LoadingService,\n        stateService?: StateService,\n        cacheService?: CacheService,\n        playService?: PlayService,\n        panService?: PanService) {\n\n        this._apiV3 = apiV3 != null ? apiV3 : new APIv3(clientId, token);\n\n        this._imageLoadingService = imageLoadingService != null ? imageLoadingService : new ImageLoadingService();\n\n        this._graphService = graphService != null ?\n            graphService :\n            new GraphService(new Graph(this.apiV3), this._imageLoadingService);\n\n        this._loadingService = loadingService != null ? loadingService : new LoadingService();\n        this._loadingName = \"navigator\";\n\n        this._stateService = stateService != null ? stateService : new StateService(options.transitionMode);\n\n        this._cacheService = cacheService != null ?\n            cacheService :\n            new CacheService(this._graphService, this._stateService);\n\n        this._playService = playService != null ?\n            playService :\n            new PlayService(this._graphService, this._stateService);\n\n        this._panService = panService != null ?\n            panService :\n            new PanService(this._graphService, this._stateService, options.combinedPanning);\n\n        this._keyRequested$ = new BehaviorSubject<string>(null);\n        this._movedToKey$ = new BehaviorSubject<string>(null);\n\n        this._request$ = null;\n        this._requestSubscription = null;\n        this._nodeRequestSubscription = null;\n    }\n\n    public get apiV3(): APIv3 {\n        return this._apiV3;\n    }\n\n    public get cacheService(): CacheService {\n        return this._cacheService;\n    }\n\n    public get graphService(): GraphService {\n        return this._graphService;\n    }\n\n    public get imageLoadingService(): ImageLoadingService {\n        return this._imageLoadingService;\n    }\n\n    public get loadingService(): LoadingService {\n        return this._loadingService;\n    }\n\n    public get movedToKey$(): Observable<string> {\n        return this._movedToKey$;\n    }\n\n    public get panService(): PanService {\n        return this._panService;\n    }\n\n    public get playService(): PlayService {\n        return this._playService;\n    }\n\n    public get stateService(): StateService {\n        return this._stateService;\n    }\n\n    public moveToKey$(key: string): Observable<Node> {\n        this._abortRequest(`to key ${key}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this._moveToKey$(key);\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveDir$(direction: EdgeDirection): Observable<Node> {\n        this._abortRequest(`in dir ${EdgeDirection[direction]}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.stateService.currentNode$.pipe(\n            first(),\n            mergeMap(\n                (node: Node): Observable<string> => {\n                    return ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                        node.sequenceEdges$ :\n                        node.spatialEdges$).pipe(\n                            first(),\n                            map(\n                                (status: IEdgeStatus): string => {\n                                    for (let edge of status.edges) {\n                                        if (edge.data.direction === direction) {\n                                            return edge.to;\n                                        }\n                                    }\n\n                                    return null;\n                                }));\n                }),\n            mergeMap(\n                (directionKey: string) => {\n                    if (directionKey == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`Direction (${direction}) does not exist for current node.`));\n                    }\n\n                    return this._moveToKey$(directionKey);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveCloseTo$(lat: number, lon: number): Observable<Node> {\n        this._abortRequest(`to lat ${lat}, lon ${lon}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.apiV3.imageCloseTo$(lat, lon).pipe(\n            mergeMap(\n                (fullNode: IFullNode): Observable<Node> => {\n                    if (fullNode == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`No image found close to lat ${lat}, lon ${lon}.`));\n                    }\n\n                    return this._moveToKey$(fullNode.key);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public setFilter$(filter: FilterExpression): Observable<void> {\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            mergeMap(\n                (key: string): Observable<Node> => {\n                    if (key != null) {\n                        return this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last());\n                    }\n\n                    return this._keyRequested$.pipe(\n                        first(),\n                        mergeMap(\n                            (requestedKey: string): Observable<Node> => {\n                                if (requestedKey != null) {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._graphService.cacheNode$(requestedKey);\n                                            }));\n                                }\n\n                                return this._graphService.setFilter$(filter).pipe(\n                                    map(\n                                        (): Node => {\n                                            return undefined;\n                                        }));\n                            }));\n                }),\n            map(\n                (node: Node): void => {\n                    return undefined;\n                }));\n    }\n\n    public setToken$(token?: string): Observable<void> {\n        this._abortRequest(\"to set token\");\n\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            tap(\n                (key: string): void => {\n                    this._apiV3.setToken(token);\n                }),\n            mergeMap(\n                (key: string): Observable<void> => {\n                    return key == null ?\n                        this._graphService.reset$([]) :\n                        this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.reset$(keys).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last(),\n                            map(\n                                (node: Node): void => {\n                                    return undefined;\n                                }));\n                    }));\n    }\n\n    private _cacheKeys$(keys: string[]): Observable<Node> {\n        let cacheNodes$: Observable<Node>[] = keys\n            .map(\n                (key: string): Observable<Node> => {\n                        return this._graphService.cacheNode$(key);\n                });\n\n        return observableFrom<Observable<Node>>(cacheNodes$).pipe(\n            mergeAll());\n    }\n\n    private _abortRequest(reason: string): void {\n        if (this._requestSubscription != null) {\n            this._requestSubscription.unsubscribe();\n            this._requestSubscription = null;\n        }\n\n        if (this._nodeRequestSubscription != null) {\n            this._nodeRequestSubscription.unsubscribe();\n            this._nodeRequestSubscription = null;\n        }\n\n        if (this._request$ != null) {\n            if (!(this._request$.isStopped || this._request$.hasError)) {\n                this._request$.error(new AbortMapillaryError(`Request aborted by a subsequent request ${reason}.`));\n            }\n\n            this._request$ = null;\n        }\n    }\n\n    private _makeRequest$(node$: Observable<Node>): Observable<Node> {\n        const request$: ReplaySubject<Node> = new ReplaySubject<Node>(1);\n        this._requestSubscription = request$\n            .subscribe(undefined, (): void => { /*noop*/ });\n\n        this._request$ = request$;\n\n        this._nodeRequestSubscription = node$\n            .subscribe(\n                (node: Node): void => {\n                    this._request$ = null;\n\n                    request$.next(node);\n                    request$.complete();\n                },\n                (error: Error): void => {\n                    this._request$ = null;\n\n                    request$.error(error);\n                });\n\n        return request$;\n    }\n\n    private _moveToKey$(key: string): Observable<Node> {\n        this._keyRequested$.next(key);\n\n        return this._graphService.cacheNode$(key).pipe(\n            tap(\n                (node: Node) => {\n                    this._stateService.setNodes([node]);\n                    this._movedToKey$.next(node.key);\n                }),\n            finalize(\n                (): void => {\n                    this._loadingService.stopLoading(this._loadingName);\n                }));\n    }\n\n    private _trajectoryKeys$(): Observable<string[]> {\n        return this._stateService.currentState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): string[] => {\n                    return frame.state.trajectory\n                            .map(\n                                (node: Node): string => {\n                                    return node.key;\n                                });\n                }));\n    }\n}\n\nexport default Navigator;\n",
     "import {\n    merge as observableMerge,\n    empty as observableEmpty,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    distinctUntilChanged,\n    withLatestFrom,\n    switchMap,\n    auditTime,\n    first,\n    map,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    ILatLonAlt,\n    Transform,\n} from \"../Geo\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../Graph\";\nimport {RenderCamera} from \"../Render\";\nimport {EventEmitter} from \"../Utils\";\nimport {\n    Container,\n    IUnprojection,\n    IViewerMouseEvent,\n    Navigator,\n    Projection,\n    Viewer,\n} from \"../Viewer\";\n\nexport class Observer {\n    private _started: boolean;\n\n    private _navigable$: Subject<boolean>;\n\n    private _bearingSubscription: Subscription;\n    private _currentNodeSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _sequenceEdgesSubscription: Subscription;\n    private _spatialEdgesSubscription: Subscription;\n    private _viewerMouseEventSubscription: Subscription;\n\n    private _container: Container;\n    private _eventEmitter: EventEmitter;\n    private _navigator: Navigator;\n    private _projection: Projection;\n\n    constructor(eventEmitter: EventEmitter, navigator: Navigator, container: Container) {\n        this._container = container;\n        this._eventEmitter = eventEmitter;\n        this._navigator = navigator;\n        this._projection = new Projection();\n\n        this._started = false;\n\n        this._navigable$ = new Subject<boolean>();\n\n        // navigable and loading should always emit, also when cover is activated.\n        this._navigable$\n            .subscribe(\n                (navigable: boolean): void => {\n                    this._eventEmitter.fire(Viewer.navigablechanged, navigable);\n                });\n\n        this._navigator.loadingService.loading$\n            .subscribe(\n                (loading: boolean): void => {\n                    this._eventEmitter.fire(Viewer.loadingchanged, loading);\n                });\n    }\n\n    public get started(): boolean {\n        return this._started;\n    }\n\n    public get navigable$(): Subject<boolean> {\n        return this._navigable$;\n    }\n\n    public projectBasic$(basicPoint: number[]): Observable<number[]> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, transform]: [RenderCamera, Transform]): number[] => {\n                    const canvasPoint: number[] = this._projection.basicToCanvas(\n                        basicPoint,\n                        this._container.element,\n                        render,\n                        transform);\n\n                    return [Math.round(canvasPoint[0]), Math.round(canvasPoint[1])];\n                }));\n    }\n\n    public startEmit(): void {\n        if (this._started) {\n            return;\n        }\n\n        this._started = true;\n\n        this._currentNodeSubscription = this._navigator.stateService.currentNodeExternal$\n            .subscribe((node: Node): void => {\n                this._eventEmitter.fire(Viewer.nodechanged, node);\n            });\n\n        this._sequenceEdgesSubscription = this._navigator.stateService.currentNodeExternal$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.sequenceEdges$;\n                }))\n            .subscribe(\n                (status: IEdgeStatus): void => {\n                    this._eventEmitter.fire(Viewer.sequenceedgeschanged, status);\n                });\n\n        this._spatialEdgesSubscription = this._navigator.stateService.currentNodeExternal$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.spatialEdges$;\n                }))\n            .subscribe(\n                (status: IEdgeStatus): void => {\n                    this._eventEmitter.fire(Viewer.spatialedgeschanged, status);\n                });\n\n        this._moveSubscription = observableCombineLatest(\n                this._navigator.stateService.inMotion$,\n                this._container.mouseService.active$,\n                this._container.touchService.active$).pipe(\n            map(\n                (values: boolean[]): boolean => {\n                    return values[0] || values[1] || values[2];\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (started: boolean) => {\n                    if (started) {\n                        this._eventEmitter.fire(Viewer.movestart, null);\n                    } else {\n                        this._eventEmitter.fire(Viewer.moveend, null);\n                    }\n                });\n\n        this._bearingSubscription = this._container.renderService.bearing$.pipe(\n            auditTime(100),\n            distinctUntilChanged(\n                (b1: number, b2: number): boolean => {\n                    return Math.abs(b2 - b1) < 1;\n                }))\n            .subscribe(\n                (bearing): void => {\n                    this._eventEmitter.fire(Viewer.bearingchanged, bearing);\n                 });\n\n        const mouseMove$: Observable<MouseEvent> = this._container.mouseService.active$.pipe(\n            switchMap(\n                (active: boolean): Observable<MouseEvent> => {\n                    return active ?\n                        observableEmpty() :\n                        this._container.mouseService.mouseMove$;\n                }));\n\n        this._viewerMouseEventSubscription = observableMerge(\n                this._mapMouseEvent$(Viewer.click, this._container.mouseService.staticClick$),\n                this._mapMouseEvent$(Viewer.contextmenu, this._container.mouseService.contextMenu$),\n                this._mapMouseEvent$(Viewer.dblclick, this._container.mouseService.dblClick$),\n                this._mapMouseEvent$(Viewer.mousedown, this._container.mouseService.mouseDown$),\n                this._mapMouseEvent$(Viewer.mousemove, mouseMove$),\n                this._mapMouseEvent$(Viewer.mouseout, this._container.mouseService.mouseOut$),\n                this._mapMouseEvent$(Viewer.mouseover, this._container.mouseService.mouseOver$),\n                this._mapMouseEvent$(Viewer.mouseup, this._container.mouseService.mouseUp$)).pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.reference$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([[type, event], render, reference, transform]:\n                [[string, MouseEvent], RenderCamera, ILatLonAlt, Transform]): IViewerMouseEvent => {\n                    const unprojection: IUnprojection =\n                        this._projection.eventToUnprojection(\n                            event,\n                            this._container.element,\n                            render,\n                            reference,\n                            transform);\n\n                    return  {\n                        basicPoint: unprojection.basicPoint,\n                        latLon: unprojection.latLon,\n                        originalEvent: event,\n                        pixelPoint: unprojection.pixelPoint,\n                        target: <Viewer>this._eventEmitter,\n                        type: type,\n                    };\n                }))\n            .subscribe(\n                (event: IViewerMouseEvent): void => {\n                    this._eventEmitter.fire(event.type, event);\n                });\n    }\n\n    public stopEmit(): void {\n        if (!this.started) {\n            return;\n        }\n\n        this._started = false;\n\n        this._bearingSubscription.unsubscribe();\n        this._currentNodeSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._sequenceEdgesSubscription.unsubscribe();\n        this._spatialEdgesSubscription.unsubscribe();\n        this._viewerMouseEventSubscription.unsubscribe();\n\n        this._bearingSubscription = null;\n        this._currentNodeSubscription = null;\n        this._moveSubscription = null;\n        this._sequenceEdgesSubscription = null;\n        this._spatialEdgesSubscription = null;\n        this._viewerMouseEventSubscription = null;\n    }\n\n    public unproject$(canvasPoint: number[]): Observable<ILatLon> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.reference$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, reference, transform]: [RenderCamera, ILatLonAlt, Transform]): ILatLon => {\n                    const unprojection: IUnprojection =\n                        this._projection.canvasToUnprojection(\n                            canvasPoint,\n                            this._container.element,\n                            render,\n                            reference,\n                            transform);\n\n                    return unprojection.latLon;\n                }));\n    }\n\n    public unprojectBasic$(canvasPoint: number[]): Observable<number[]> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, transform]: [RenderCamera, Transform]): number[] => {\n                    return this._projection.canvasToBasic(\n                        canvasPoint,\n                        this._container.element,\n                        render,\n                        transform);\n                }));\n    }\n\n    private _mapMouseEvent$(type: string, mouseEvent$: Observable<MouseEvent>): Observable<[string, MouseEvent]> {\n        return mouseEvent$.pipe(map(\n            (event: MouseEvent): [string, MouseEvent] => {\n                return [type, event];\n            }));\n    }\n}\n\nexport default Observer;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    map,\n    switchMap,\n    withLatestFrom,\n    distinctUntilChanged,\n    catchError,\n    startWith,\n    publishReplay,\n    refCount,\n} from \"rxjs/operators\";\n\nimport * as Geo from \"../geo/Geo\";\nimport GeoCoords from \"../geo/GeoCoords\";\nimport GraphService from \"../graph/GraphService\";\nimport GraphCalculator from \"../graph/GraphCalculator\";\nimport ILatLon from \"../api/interfaces/ILatLon\";\nimport ILatLonAlt from \"../geo/interfaces/ILatLonAlt\";\nimport Node from \"../graph/Node\";\nimport Spatial from \"../geo/Spatial\";\nimport { StateService } from \"../state/StateService\";\nimport { Transform } from \"../geo/Transform\";\nimport ViewportCoords from \"../geo/ViewportCoords\";\nimport { IFrame } from \"../State\";\n\nenum PanMode {\n    Disabled,\n    Enabled,\n    Started,\n}\n\nexport class PanService {\n    private _graphService: GraphService;\n    private _stateService: StateService;\n    private _graphCalculator: GraphCalculator;\n    private _geoCoords: GeoCoords;\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _panNodesSubject$: Subject<[Node, Transform, number][]>;\n    private _panNodes$: Observable<[Node, Transform, number][]>;\n    private _panNodesSubscription: Subscription;\n\n    private _mode: PanMode;\n\n    constructor(\n        graphService: GraphService,\n        stateService: StateService,\n        enabled?: boolean,\n        geoCoords?: GeoCoords,\n        graphCalculator?: GraphCalculator,\n        spatial?: Spatial,\n        viewportCoords?: ViewportCoords) {\n\n        this._graphService = graphService;\n        this._stateService = stateService;\n        this._geoCoords = !!geoCoords ? geoCoords : new GeoCoords();\n        this._graphCalculator = !!graphCalculator ? graphCalculator : new GraphCalculator(this._geoCoords);\n        this._spatial = !!spatial ? spatial : new Spatial();\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n\n        this._mode = enabled !== false ? PanMode.Enabled : PanMode.Disabled;\n\n        this._panNodesSubject$ = new Subject<[Node, Transform, number][]>();\n        this._panNodes$ = this._panNodesSubject$.pipe(\n            startWith([]),\n            publishReplay(1),\n            refCount());\n\n        this._panNodes$.subscribe();\n    }\n\n    public get panNodes$(): Observable<[Node, Transform, number][]> {\n        return this._panNodes$;\n    }\n\n    public enable(): void {\n        if (this._mode !== PanMode.Disabled) {\n            return;\n        }\n\n        this._mode = PanMode.Enabled;\n        this.start();\n    }\n\n    public disable(): void {\n        if (this._mode === PanMode.Disabled) {\n            return;\n        }\n\n        this.stop();\n\n        this._mode = PanMode.Disabled;\n    }\n\n    public start(): void {\n        if (this._mode !== PanMode.Enabled) {\n            return;\n        }\n\n        const panNodes$: Observable<[Node, Transform, number][]> = this._stateService.currentNode$.pipe(\n            switchMap(\n                (current: Node): Observable<[Node, Transform, number][]> => {\n                    if (!current.merged) {\n                        return observableOf([]);\n                    }\n\n                    const current$: Observable<Node> = observableOf(current);\n\n                    const bounds: ILatLon[] = this._graphCalculator.boundingBoxCorners(current.latLon, 20);\n\n                    const adjacent$: Observable<Node[]> = this._graphService\n                        .cacheBoundingBox$(bounds[0], bounds[1]).pipe(\n                            catchError(\n                                (error: Error): Observable<Node> => {\n                                    console.error(`Failed to cache periphery bounding box (${current.key})`, error);\n\n                                    return observableEmpty();\n                                }),\n                            map(\n                                (nodes: Node[]): Node[] => {\n                                    if (current.pano) {\n                                        return [];\n                                    }\n\n                                    const potential: Node[] = [];\n\n                                    for (const node of nodes) {\n                                        if (node.key === current.key) {\n                                            continue;\n                                        }\n\n                                        if (node.mergeCC !== current.mergeCC) {\n                                            continue;\n                                        }\n\n                                        if (node.pano) {\n                                            continue;\n                                        }\n\n                                        if (this._distance(node, current) > 4) {\n                                            continue;\n                                        }\n\n                                        potential.push(node);\n                                    }\n\n                                    return potential;\n                                }));\n\n                    return observableCombineLatest(current$, adjacent$).pipe(\n                        withLatestFrom(this._stateService.reference$),\n                        map(\n                            ([[cn, adjacent], reference]: [[Node, Node[]], ILatLonAlt]): [Node, Transform, number][] => {\n                                const currentDirection: THREE.Vector3 = this._spatial.viewingDirection(cn.rotation);\n                                const currentTranslation: number[] = Geo.computeTranslation(\n                                    { lat: cn.latLon.lat, lon: cn.latLon.lon, alt: cn.alt },\n                                    cn.rotation,\n                                    reference);\n                                const currentTransform: Transform = this._createTransform(cn, currentTranslation);\n                                const currentAzimuthal: number = this._spatial.wrap(\n                                    this._spatial.azimuthal(\n                                        currentDirection.toArray(),\n                                        currentTransform.upVector().toArray()),\n                                    0,\n                                    2 * Math.PI);\n\n                                const currentProjectedPoints: number[][] = this._computeProjectedPoints(currentTransform);\n\n                                const currentHFov: number = this._computeHorizontalFov(currentProjectedPoints) / 180 * Math.PI;\n\n                                const preferredOverlap: number = Math.PI / 8;\n                                let left: [number, Node, Transform, number] = undefined;\n                                let right: [number, Node, Transform, number] = undefined;\n\n                                for (const a of adjacent) {\n                                    const translation: number[] = Geo.computeTranslation(\n                                        { lat: a.latLon.lat, lon: a.latLon.lon, alt: a.alt },\n                                        a.rotation,\n                                        reference);\n\n                                    const transform: Transform = this._createTransform(a, translation);\n                                    const projectedPoints: number[][] = this._computeProjectedPoints(transform);\n                                    const hFov: number = this._computeHorizontalFov(projectedPoints) / 180 * Math.PI;\n\n                                    const direction: THREE.Vector3 = this._spatial.viewingDirection(a.rotation);\n                                    const azimuthal: number = this._spatial.wrap(\n                                        this._spatial.azimuthal(\n                                            direction.toArray(),\n                                            transform.upVector().toArray()),\n                                        0,\n                                        2 * Math.PI);\n\n                                    const directionChange: number = this._spatial.angleBetweenVector2(\n                                        currentDirection.x,\n                                        currentDirection.y,\n                                        direction.x,\n                                        direction.y);\n\n                                    let overlap: number = Number.NEGATIVE_INFINITY;\n                                    if (directionChange > 0) {\n                                        if (currentAzimuthal > azimuthal) {\n                                            overlap = currentAzimuthal - 2 * Math.PI + currentHFov / 2 - (azimuthal - hFov / 2);\n                                        } else {\n                                            overlap = currentAzimuthal + currentHFov / 2 - (azimuthal - hFov / 2);\n                                        }\n                                    } else {\n                                        if (currentAzimuthal < azimuthal) {\n                                            overlap = azimuthal + hFov / 2 - (currentAzimuthal + 2 * Math.PI - currentHFov / 2);\n                                        } else {\n                                            overlap = azimuthal + hFov / 2 - (currentAzimuthal - currentHFov / 2);\n                                        }\n                                    }\n\n                                    const nonOverlap: number = Math.abs(hFov - overlap);\n\n                                    const distanceCost: number = this._distance(a, cn);\n                                    const timeCost: number = Math.min(this._timeDifference(a, cn), 4);\n                                    const overlapCost: number = 20 * Math.abs(overlap - preferredOverlap);\n                                    const fovCost: number = Math.min(5, 1 / Math.min(hFov / currentHFov, 1));\n                                    const nonOverlapCost: number = overlap > 0 ? -2 * nonOverlap : 0;\n\n                                    const cost: number = distanceCost + timeCost + overlapCost + fovCost + nonOverlapCost;\n\n                                    if (overlap > 0 &&\n                                        overlap < 0.5 * currentHFov &&\n                                        overlap < 0.5 * hFov &&\n                                        nonOverlap > 0.5 * currentHFov) {\n\n                                        if (directionChange > 0) {\n                                            if (!left) {\n                                                left = [cost, a, transform, hFov];\n                                            } else {\n                                                if (cost < left[0]) {\n                                                    left = [cost, a, transform, hFov];\n                                                }\n                                            }\n                                        } else {\n                                            if (!right) {\n                                                right = [cost, a, transform, hFov];\n                                            } else {\n                                                if (cost < right[0]) {\n                                                    right = [cost, a, transform, hFov];\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n\n                                const panNodes: [Node, Transform, number][] = [];\n\n                                if (!!left) {\n                                    panNodes.push([left[1], left[2], left[3]]);\n                                }\n\n                                if (!!right) {\n                                    panNodes.push([right[1], right[2], right[3]]);\n                                }\n\n                                return panNodes;\n                            }),\n                        startWith([]));\n                }));\n\n        this._panNodesSubscription = this._stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead > 0;\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (traversing: boolean): Observable<[Node, Transform, number][]> => {\n                    return traversing ? observableOf([]) : panNodes$;\n                }))\n            .subscribe(\n                (panNodes: [Node, Transform, number][]): void => {\n                    this._panNodesSubject$.next(panNodes);\n                });\n\n        this._mode = PanMode.Started;\n    }\n\n    public stop(): void {\n        if (this._mode !== PanMode.Started) {\n            return;\n        }\n\n        this._panNodesSubscription.unsubscribe();\n        this._panNodesSubject$.next([]);\n\n        this._mode = PanMode.Enabled;\n    }\n\n    private _distance(node: Node, reference: Node): number {\n        const [x, y, z]: number[] = this._geoCoords.geodeticToEnu(\n            node.latLon.lat,\n            node.latLon.lon,\n            node.alt,\n            reference.latLon.lat,\n            reference.latLon.lon,\n            reference.alt);\n\n        return Math.sqrt(x * x + y * y + z * z);\n    }\n\n    private _timeDifference(node: Node, reference: Node): number {\n        return Math.abs(node.capturedAt - reference.capturedAt) / (1000 * 60 * 60 * 24 * 30);\n    }\n\n    private _createTransform(node: Node, translation: number[]): Transform {\n        return new Transform(\n            node.orientation,\n            node.width,\n            node.height,\n            node.focal,\n            node.scale,\n            node.gpano,\n            node.rotation,\n            translation,\n            node.assetsCached ? node.image : undefined,\n            undefined,\n            node.ck1,\n            node.ck2,\n            node.cameraProjection);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const vertices: number[][] = [[1, 0]];\n        const directions: number[][] = [[0, 0.5]];\n        const pointsPerLine: number = 20;\n\n        return Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);\n    }\n\n    private _computeHorizontalFov(projectedPoints: number[][]): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._coordToFov(projectedPoint[0]);\n                });\n\n        const fov: number = Math.min(...fovs);\n\n        return fov;\n    }\n\n    private _coordToFov(x: number): number {\n        return 2 * Math.atan(x) * 180 / Math.PI;\n    }\n}\n",
     "import {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    zip as observableZip,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    publish,\n    finalize,\n    startWith,\n    publishReplay,\n    refCount,\n    map,\n    distinctUntilChanged,\n    switchMap,\n    retry,\n    catchError,\n    scan,\n    filter,\n    withLatestFrom,\n    first,\n    timeout,\n    bufferCount,\n    mergeMap,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {EdgeDirection} from \"../Edge\";\nimport {\n    Graph,\n    GraphCalculator,\n    GraphMode,\n    GraphService,\n    IEdgeStatus,\n    Node,\n    Sequence,\n} from \"../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n    StateService,\n} from \"../State\";\n\nexport class PlayService {\n    public static readonly sequenceSpeed: number = 0.54;\n\n    private _graphService: GraphService;\n    private _stateService: StateService;\n    private _graphCalculator: GraphCalculator;\n\n    private _nodesAhead: number;\n    private _playing: boolean;\n    private _speed: number;\n\n    private _direction$: Observable<EdgeDirection>;\n    private _directionSubject$: Subject<EdgeDirection>;\n    private _playing$: Observable<boolean>;\n    private _playingSubject$: Subject<boolean>;\n    private _speed$: Observable<number>;\n    private _speedSubject$: Subject<number>;\n\n    private _playingSubscription: Subscription;\n    private _cacheSubscription: Subscription;\n    private _clearSubscription: Subscription;\n    private _graphModeSubscription: Subscription;\n    private _stopSubscription: Subscription;\n\n    private _bridging$: Observable<Node>;\n\n    constructor(graphService: GraphService, stateService: StateService, graphCalculator?: GraphCalculator) {\n        this._graphService = graphService;\n        this._stateService = stateService;\n        this._graphCalculator = !!graphCalculator ? graphCalculator : new GraphCalculator();\n\n        this._directionSubject$ = new Subject<EdgeDirection>();\n        this._direction$ = this._directionSubject$.pipe(\n            startWith(EdgeDirection.Next),\n            publishReplay(1),\n            refCount());\n\n        this._direction$.subscribe();\n\n        this._playing = false;\n        this._playingSubject$ = new Subject<boolean>();\n        this._playing$ = this._playingSubject$.pipe(\n            startWith(this._playing),\n            publishReplay(1),\n            refCount());\n\n        this._playing$.subscribe();\n\n        this._speed = 0.5;\n        this._speedSubject$ = new Subject<number>();\n        this._speed$ = this._speedSubject$.pipe(\n            startWith(this._speed),\n            publishReplay(1),\n            refCount());\n\n        this._speed$.subscribe();\n\n        this._nodesAhead = this._mapNodesAhead(this._mapSpeed(this._speed));\n\n        this._bridging$ = null;\n    }\n\n    public get playing(): boolean {\n        return this._playing;\n    }\n\n    public get direction$(): Observable<EdgeDirection> {\n        return this._direction$;\n    }\n\n    public get playing$(): Observable<boolean> {\n        return this._playing$;\n    }\n\n    public get speed$(): Observable<number> {\n        return this._speed$;\n    }\n\n    public play(): void {\n        if (this._playing) {\n            return;\n        }\n\n        this._stateService.cutNodes();\n        const stateSpeed: number = this._setSpeed(this._speed);\n        this._stateService.setSpeed(stateSpeed);\n\n        this._graphModeSubscription = this._speed$.pipe(\n            map(\n                (speed: number): GraphMode => {\n                    return speed > PlayService.sequenceSpeed ? GraphMode.Sequence : GraphMode.Spatial;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (mode: GraphMode): void => {\n                    this._graphService.setGraphMode(mode);\n                });\n\n        this._cacheSubscription = observableCombineLatest(\n                this._stateService.currentNode$.pipe(\n                    map(\n                        (node: Node): [string, string] => {\n                            return [node.sequenceKey, node.key];\n                        }),\n                    distinctUntilChanged(\n                        undefined,\n                        ([sequenceKey, nodeKey]: [string, string]): string => {\n                            return sequenceKey;\n                        })),\n                this._graphService.graphMode$,\n                this._direction$).pipe(\n            switchMap(\n                ([[sequenceKey, nodeKey], mode, direction]: [[string, string], GraphMode, EdgeDirection]):\n                    Observable<[Sequence, EdgeDirection]> => {\n\n                    if (direction !== EdgeDirection.Next && direction !== EdgeDirection.Prev) {\n                        return observableOf<[Sequence, EdgeDirection]>([undefined, direction]);\n                    }\n\n                    const sequence$: Observable<Sequence> = (mode === GraphMode.Sequence ?\n                        this._graphService.cacheSequenceNodes$(sequenceKey, nodeKey) :\n                        this._graphService.cacheSequence$(sequenceKey)).pipe(\n                            retry(3),\n                            catchError(\n                                (error: Error): Observable<Sequence> => {\n                                    console.error(error);\n\n                                    return observableOf(undefined);\n                                }));\n\n                    return observableCombineLatest(\n                            sequence$,\n                            observableOf(direction));\n                }),\n            switchMap(\n                ([sequence, direction]: [Sequence, EdgeDirection]): Observable<string> => {\n                    if (sequence === undefined) {\n                        return observableEmpty();\n                    }\n\n                    const sequenceKeys: string[] = sequence.keys.slice();\n                    if (direction === EdgeDirection.Prev) {\n                        sequenceKeys.reverse();\n                    }\n\n                    return this._stateService.currentState$.pipe(\n                        map(\n                            (frame: IFrame): [string, number] => {\n                                return [frame.state.trajectory[frame.state.trajectory.length - 1].key, frame.state.nodesAhead];\n                            }),\n                        scan(\n                            (\n                                [lastRequestKey, previousRequestKeys]: [string, string[]],\n                                [lastTrajectoryKey, nodesAhead]: [string, number]):\n                                [string, string[]] => {\n\n                                if (lastRequestKey === undefined) {\n                                    lastRequestKey = lastTrajectoryKey;\n                                }\n\n                                const lastIndex: number = sequenceKeys.length - 1;\n                                if (nodesAhead >= this._nodesAhead || sequenceKeys[lastIndex] === lastRequestKey) {\n                                    return [lastRequestKey, []];\n                                }\n\n                                const current: number = sequenceKeys.indexOf(lastTrajectoryKey);\n                                const start: number = sequenceKeys.indexOf(lastRequestKey) + 1;\n                                const end: number = Math.min(lastIndex, current + this._nodesAhead - nodesAhead) + 1;\n\n                                if (end <= start) {\n                                    return [lastRequestKey, []];\n                                }\n\n                                return [sequenceKeys[end - 1], sequenceKeys.slice(start, end)];\n                            },\n                            [undefined, []]),\n                        mergeMap(\n                            ([lastRequestKey, newRequestKeys]: [string, string[]]): Observable<string> => {\n                                return observableFrom(newRequestKeys);\n                            }));\n                }),\n            mergeMap(\n                (key: string): Observable<Node> => {\n                    return this._graphService.cacheNode$(key).pipe(\n                        catchError(\n                            (): Observable<Node> => {\n                                return observableEmpty();\n                            }));\n                },\n                6))\n            .subscribe();\n\n        this._playingSubscription = this._stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead < this._nodesAhead;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.lastNode.key;\n                }),\n            map(\n                (frame: IFrame): [Node, boolean] => {\n                    const lastNode: Node = frame.state.lastNode;\n                    const trajectory: Node[] = frame.state.trajectory;\n                    let increasingTime: boolean = undefined;\n\n                    for (let i: number = trajectory.length - 2; i >= 0; i--) {\n                        const node: Node = trajectory[i];\n                        if (node.sequenceKey !== lastNode.sequenceKey) {\n                            break;\n                        }\n\n                        if (node.capturedAt !== lastNode.capturedAt) {\n                            increasingTime = node.capturedAt < lastNode.capturedAt;\n                            break;\n                        }\n                    }\n\n                    return [frame.state.lastNode, increasingTime];\n                }),\n            withLatestFrom(this._direction$),\n            switchMap(\n                ([[node, increasingTime], direction]: [[Node, boolean], EdgeDirection]): Observable<Node> => {\n                    return observableZip(\n                            ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                                    node.sequenceEdges$ :\n                                    node.spatialEdges$).pipe(\n                                first(\n                                    (status: IEdgeStatus): boolean => {\n                                        return status.cached;\n                                    }),\n                                timeout(15000)),\n                            observableOf<EdgeDirection>(direction)).pipe(\n                        map(\n                            ([s, d]: [IEdgeStatus, EdgeDirection]): string => {\n                                for (let edge of s.edges) {\n                                    if (edge.data.direction === d) {\n                                        return edge.to;\n                                    }\n                                }\n\n                                return null;\n                            }),\n                        switchMap(\n                            (key: string): Observable<Node> => {\n                                return key != null ?\n                                    this._graphService.cacheNode$(key) :\n                                    this._bridge$(node, increasingTime).pipe(\n                                        filter(\n                                            (n: Node): boolean => {\n                                                return !!n;\n                                            }));\n                            }));\n                }))\n            .subscribe(\n                (node: Node): void => {\n                    this._stateService.appendNodes([node]);\n                },\n                (error: Error): void => {\n                    console.error(error);\n                    this.stop();\n                });\n\n        this._clearSubscription = this._stateService.currentNode$.pipe(\n            bufferCount(1, 10))\n            .subscribe(\n                (nodes: Node[]): void => {\n                    this._stateService.clearPriorNodes();\n                });\n\n        this._setPlaying(true);\n\n        const currentLastNodes$: Observable<Node> = this._stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): ICurrentState => {\n                    return frame.state;\n                }),\n            distinctUntilChanged(\n                ([kc1, kl1]: [string, string], [kc2, kl2]: [string, string]): boolean => {\n                    return kc1 === kc2 && kl1 === kl2;\n                },\n                (state: ICurrentState): [string, string] => {\n                    return [state.currentNode.key, state.lastNode.key];\n                }),\n            filter(\n                (state: ICurrentState): boolean => {\n                    return state.currentNode.key === state.lastNode.key &&\n                        state.currentIndex === state.trajectory.length - 1;\n                }),\n            map(\n                (state: ICurrentState): Node => {\n                    return state.currentNode;\n                }));\n\n        this._stopSubscription = observableCombineLatest(\n                currentLastNodes$,\n                this._direction$).pipe(\n            switchMap(\n                ([node, direction]: [Node, EdgeDirection]): Observable<boolean> => {\n                    const edgeStatus$: Observable<IEdgeStatus> = (\n                        [EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                            node.sequenceEdges$ :\n                            node.spatialEdges$).pipe(\n                        first(\n                            (status: IEdgeStatus): boolean => {\n                                return status.cached;\n                            }),\n                        timeout(15000),\n                        catchError(\n                            (error: Error): Observable<IEdgeStatus> => {\n                                console.error(error);\n\n                                return observableOf<IEdgeStatus>({ cached: false, edges: [] });\n                            }));\n\n                    return observableCombineLatest(\n                            observableOf(direction),\n                            edgeStatus$).pipe(\n                        map(\n                            ([d, es]: [EdgeDirection, IEdgeStatus]): boolean => {\n                                for (const edge of es.edges) {\n                                    if (edge.data.direction === d) {\n                                        return true;\n                                    }\n                                }\n\n                                return false;\n                            }));\n                }),\n            mergeMap(\n                (hasEdge: boolean): Observable<boolean> => {\n                    if (hasEdge || !this._bridging$) {\n                        return observableOf(hasEdge);\n                    }\n\n                    return this._bridging$.pipe(\n                        map(\n                            (node: Node): boolean => {\n                                return node != null;\n                            }),\n                        catchError(\n                            (error: Error): Observable<boolean> => {\n                                console.error(error);\n\n                                return observableOf<boolean>(false);\n                            }));\n                }),\n            first(\n                (hasEdge: boolean): boolean => {\n                    return !hasEdge;\n                }))\n            .subscribe(\n                undefined,\n                undefined,\n                (): void => { this.stop(); });\n\n        if (this._stopSubscription.closed) {\n            this._stopSubscription = null;\n        }\n    }\n\n    public setDirection(direction: EdgeDirection): void {\n        this._directionSubject$.next(direction);\n    }\n\n    public setSpeed(speed: number): void {\n        speed = Math.max(0, Math.min(1, speed));\n        if (speed === this._speed) {\n            return;\n        }\n\n        const stateSpeed: number = this._setSpeed(speed);\n\n        if (this._playing) {\n            this._stateService.setSpeed(stateSpeed);\n        }\n\n        this._speedSubject$.next(this._speed);\n    }\n\n    public stop(): void {\n        if (!this._playing) {\n            return;\n        }\n\n        if (!!this._stopSubscription) {\n            if (!this._stopSubscription.closed) {\n                this._stopSubscription.unsubscribe();\n            }\n\n            this._stopSubscription = null;\n        }\n\n        this._graphModeSubscription.unsubscribe();\n        this._graphModeSubscription = null;\n\n        this._cacheSubscription.unsubscribe();\n        this._cacheSubscription = null;\n\n        this._playingSubscription.unsubscribe();\n        this._playingSubscription = null;\n\n        this._clearSubscription.unsubscribe();\n        this._clearSubscription = null;\n\n        this._stateService.setSpeed(1);\n        this._stateService.cutNodes();\n        this._graphService.setGraphMode(GraphMode.Spatial);\n\n        this._setPlaying(false);\n    }\n\n    private _bridge$(node: Node, increasingTime: boolean): Observable<Node> {\n        if (increasingTime === undefined) {\n            return observableOf(null);\n        }\n\n        const boundingBox: ILatLon[] = this._graphCalculator.boundingBoxCorners(node.latLon, 25);\n\n        this._bridging$ = this._graphService.cacheBoundingBox$(boundingBox[0], boundingBox[1]).pipe(\n            mergeMap(\n                (nodes: Node[]): Observable<Node> => {\n                    let nextNode: Node = null;\n                    for (const n of nodes) {\n                        if (n.sequenceKey === node.sequenceKey ||\n                            !n.cameraUuid ||\n                            n.cameraUuid !== node.cameraUuid ||\n                            n.capturedAt === node.capturedAt ||\n                            n.capturedAt > node.capturedAt !== increasingTime) {\n                            continue;\n                        }\n\n                        const delta: number = Math.abs(n.capturedAt - node.capturedAt);\n\n                        if (delta > 15000) {\n                            continue;\n                        }\n\n                        if (!nextNode || delta < Math.abs(nextNode.capturedAt - node.capturedAt)) {\n                            nextNode = n;\n                        }\n                    }\n\n                    return !!nextNode ?\n                        this._graphService.cacheNode$(nextNode.key) :\n                        observableOf(null);\n                }),\n            finalize(\n                (): void => {\n                    this._bridging$ = null;\n                }),\n            publish(),\n            refCount());\n\n        return this._bridging$;\n    }\n\n    private _mapSpeed(speed: number): number {\n        const x: number = 2 * speed - 1;\n\n        return Math.pow(10, x) - 0.2 * x;\n    }\n\n    private _mapNodesAhead(stateSpeed: number): number {\n        return Math.round(Math.max(10, Math.min(50, 8 + 6 * stateSpeed)));\n    }\n\n    private _setPlaying(playing: boolean): void {\n        this._playing = playing;\n        this._playingSubject$.next(playing);\n    }\n\n    private _setSpeed(speed: number): number {\n        this._speed = speed;\n        const stateSpeed: number = this._mapSpeed(this._speed);\n        this._nodesAhead = this._mapNodesAhead(stateSpeed);\n\n        return stateSpeed;\n    }\n}\n\nexport default PlayService;\n",
     "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    ViewportCoords,\n} from \"../Geo\";\nimport {RenderCamera} from \"../Render\";\nimport {IUnprojection} from \"../Viewer\";\n\nexport class Projection {\n    private _geoCoords: GeoCoords;\n    private _viewportCoords: ViewportCoords;\n\n    constructor(geoCoords?: GeoCoords, viewportCoords?: ViewportCoords) {\n        this._geoCoords = !!geoCoords ? geoCoords : new GeoCoords();\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n    }\n\n    public basicToCanvas(\n        basicPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        transform: Transform): number[] {\n\n        return this._viewportCoords\n            .basicToCanvas(basicPoint[0], basicPoint[1], container, transform, render.perspective);\n    }\n\n    public canvasToBasic(\n        canvasPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        transform: Transform): number[] {\n\n        let basicPoint: number[] = this._viewportCoords\n            .canvasToBasic(canvasPoint[0], canvasPoint[1], container, transform, render.perspective);\n\n        if (basicPoint[0] < 0 || basicPoint[0] > 1 || basicPoint[1] < 0 || basicPoint[1] > 1) {\n            basicPoint = null;\n        }\n\n        return basicPoint;\n    }\n\n    public eventToUnprojection(\n        event: MouseEvent | Touch,\n        container: HTMLElement,\n        render: RenderCamera,\n        reference: ILatLonAlt,\n        transform: Transform): IUnprojection {\n\n        const pixelPoint: number[] = this._viewportCoords.canvasPosition(event, container);\n\n        return this.canvasToUnprojection(pixelPoint, container, render, reference, transform);\n    }\n\n    public canvasToUnprojection(\n        canvasPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        reference: ILatLonAlt,\n        transform: Transform): IUnprojection {\n\n        const canvasX: number = canvasPoint[0];\n        const canvasY: number = canvasPoint[1];\n\n        const [viewportX, viewportY]: number[] =\n            this._viewportCoords.canvasToViewport(canvasX, canvasY, container);\n\n        const point3d: THREE.Vector3 = new THREE.Vector3(viewportX, viewportY, 1)\n            .unproject(render.perspective);\n\n        let basicPoint: number[] = transform.projectBasic(point3d.toArray());\n        if (basicPoint[0] < 0 || basicPoint[0] > 1 || basicPoint[1] < 0 || basicPoint[1] > 1) {\n            basicPoint = null;\n        }\n\n        const direction3d: THREE.Vector3 = point3d.clone().sub(render.camera.position).normalize();\n        const dist: number = -2 / direction3d.z;\n\n        let latLon: ILatLon = null;\n        if (dist > 0 && dist < 100 && !!basicPoint) {\n            const point: THREE.Vector3 = direction3d.clone().multiplyScalar(dist).add(render.camera.position);\n            const latLonArray: number[] = this._geoCoords\n                .enuToGeodetic(\n                    point.x,\n                    point.y,\n                    point.z,\n                    reference.lat,\n                    reference.lon,\n                    reference.alt)\n                .slice(0, 2);\n\n            latLon = { lat: latLonArray[0], lon: latLonArray[1] };\n        }\n\n        const unprojection: IUnprojection = {\n            basicPoint: basicPoint,\n            latLon: latLon,\n            pixelPoint: [canvasX, canvasY],\n        };\n\n        return unprojection;\n    }\n}\n\nexport default Projection;\n",
     "import {refCount, publishReplay, scan, startWith} from \"rxjs/operators\";\nimport * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject} from \"rxjs\";\n\nimport {Alignment, ISpriteAtlas} from \"../Viewer\";\n\nclass SpriteAtlas implements ISpriteAtlas {\n    private _image: HTMLImageElement;\n    private _texture: THREE.Texture;\n    private _json: ISprites;\n\n    public set json(value: ISprites) {\n        this._json = value;\n    }\n\n    public set image(value: HTMLImageElement) {\n        this._image = value;\n        this._texture = new THREE.Texture(this._image);\n        this._texture.minFilter = THREE.NearestFilter;\n    }\n\n    public get loaded(): boolean {\n        return !!(this._image && this._json);\n    }\n\n    public getGLSprite(name: string): THREE.Object3D {\n        if (!this.loaded) {\n            throw new Error(\"Sprites cannot be retrieved before the atlas is loaded.\");\n        }\n\n        let definition: ISprite = this._json[name];\n\n        if (!definition) {\n            console.warn(\"Sprite with key\" + name + \"does not exist in sprite definition.\");\n\n            return new THREE.Object3D();\n        }\n\n        let texture: THREE.Texture = this._texture.clone();\n        texture.needsUpdate = true;\n\n        let width: number = this._image.width;\n        let height: number = this._image.height;\n\n        texture.offset.x = definition.x / width;\n        texture.offset.y = (height - definition.y - definition.height) / height;\n        texture.repeat.x = definition.width / width;\n        texture.repeat.y = definition.height / height;\n\n        let material: THREE.SpriteMaterial = new THREE.SpriteMaterial({ map: texture });\n\n        return new THREE.Sprite(material);\n    }\n\n    public getDOMSprite(\n        name: string,\n        float?: Alignment): vd.VNode {\n\n        if (!this.loaded) {\n            throw new Error(\"Sprites cannot be retrieved before the atlas is loaded.\");\n        }\n\n        if (float == null) {\n            float = Alignment.Center;\n        }\n\n        let definition: ISprite = this._json[name];\n\n        if (!definition) {\n            console.warn(\"Sprite with key\" + name + \"does not exist in sprite definition.\");\n\n            return vd.h(\"div\", {}, []);\n        }\n\n        let clipTop: number = definition.y;\n        let clipRigth: number = definition.x + definition.width;\n        let clipBottom: number = definition.y + definition.height;\n        let clipLeft: number = definition.x;\n\n        let left: number = -definition.x;\n        let top: number = -definition.y;\n\n        let height: number = this._image.height;\n        let width: number = this._image.width;\n\n        switch (float) {\n            case Alignment.Bottom:\n            case Alignment.Center:\n            case Alignment.Top:\n                left -= definition.width / 2;\n                break;\n            case Alignment.BottomLeft:\n            case Alignment.Left:\n            case Alignment.TopLeft:\n                left -= definition.width;\n                break;\n            case Alignment.BottomRight:\n            case Alignment.Right:\n            case Alignment.TopRight:\n            default:\n                break;\n        }\n\n        switch (float) {\n            case Alignment.Center:\n            case Alignment.Left:\n            case Alignment.Right:\n                top -= definition.height / 2;\n                break;\n            case Alignment.Top:\n            case Alignment.TopLeft:\n            case Alignment.TopRight:\n                top -= definition.height;\n                break;\n            case Alignment.Bottom:\n            case Alignment.BottomLeft:\n            case Alignment.BottomRight:\n            default:\n                break;\n        }\n\n        let pixelRatioInverse: number = 1 / definition.pixelRatio;\n\n        clipTop *= pixelRatioInverse;\n        clipRigth *= pixelRatioInverse;\n        clipBottom *= pixelRatioInverse;\n        clipLeft *= pixelRatioInverse;\n        left *= pixelRatioInverse;\n        top *= pixelRatioInverse;\n        height *= pixelRatioInverse;\n        width *= pixelRatioInverse;\n\n        let properties: vd.createProperties = {\n            src: this._image.src,\n            style: {\n                clip: `rect(${clipTop}px, ${clipRigth}px, ${clipBottom}px, ${clipLeft}px)`,\n                height: `${height}px`,\n                left: `${left}px`,\n                position: \"absolute\",\n                top: `${top}px`,\n                width: `${width}px`,\n            },\n        };\n\n        return vd.h(\"img\", properties, []);\n    }\n}\n\ninterface ISprite {\n    width: number;\n    height: number;\n    x: number;\n    y: number;\n    pixelRatio: number;\n}\n\ninterface ISprites {\n    [key: string]: ISprite;\n}\n\ninterface ISpriteAtlasOperation {\n    (atlas: SpriteAtlas): SpriteAtlas;\n}\n\nexport class SpriteService {\n    private _retina: boolean;\n\n    private _spriteAtlasOperation$: Subject<ISpriteAtlasOperation>;\n    private _spriteAtlas$: Observable<SpriteAtlas>;\n\n    constructor(sprite?: string) {\n        this._retina = window.devicePixelRatio > 1;\n\n        this._spriteAtlasOperation$ = new Subject<ISpriteAtlasOperation>();\n\n        this._spriteAtlas$ = this._spriteAtlasOperation$.pipe(\n            startWith(\n                (atlas: SpriteAtlas): SpriteAtlas => {\n                    return atlas;\n                }),\n            scan(\n                (atlas: SpriteAtlas, operation: ISpriteAtlasOperation): SpriteAtlas => {\n                    return operation(atlas);\n                },\n                new SpriteAtlas()),\n            publishReplay(1),\n            refCount());\n\n        this._spriteAtlas$.subscribe(() => { /*noop*/ });\n\n        if (sprite == null) {\n            return;\n        }\n\n        let format: string = this._retina ? \"@2x\" : \"\";\n\n        let imageXmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n        imageXmlHTTP.open(\"GET\", sprite + format + \".png\", true);\n        imageXmlHTTP.responseType = \"arraybuffer\";\n        imageXmlHTTP.onload = () => {\n            let image: HTMLImageElement = new Image();\n            image.onload = () => {\n                this._spriteAtlasOperation$.next(\n                    (atlas: SpriteAtlas): SpriteAtlas => {\n                        atlas.image = image;\n\n                        return atlas;\n                    });\n            };\n\n            let blob: Blob = new Blob([imageXmlHTTP.response]);\n            image.src = window.URL.createObjectURL(blob);\n        };\n\n        imageXmlHTTP.onerror = (error: Event) => {\n            console.error(new Error(`Failed to fetch sprite sheet (${sprite}${format}.png)`));\n        };\n\n        imageXmlHTTP.send();\n\n        let jsonXmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n        jsonXmlHTTP.open(\"GET\", sprite + format + \".json\", true);\n        jsonXmlHTTP.responseType = \"text\";\n        jsonXmlHTTP.onload = () => {\n            let json: ISprites = <ISprites>JSON.parse(jsonXmlHTTP.response);\n\n            this._spriteAtlasOperation$.next(\n                    (atlas: SpriteAtlas): SpriteAtlas => {\n                        atlas.json = json;\n\n                        return atlas;\n                    });\n        };\n\n        jsonXmlHTTP.onerror = (error: Event) => {\n            console.error(new Error(`Failed to fetch sheet (${sprite}${format}.json)`));\n        };\n\n        jsonXmlHTTP.send();\n    }\n\n    public get spriteAtlas$(): Observable<ISpriteAtlas> {\n        return this._spriteAtlas$;\n    }\n}\n\nexport default SpriteService;\n",
     "import {\n    merge as observableMerge,\n    fromEvent as observableFromEvent,\n    timer as observableTimer,\n    BehaviorSubject,\n    Observable,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    bufferWhen,\n    mergeMap,\n    take,\n    takeUntil,\n    switchMap,\n    distinctUntilChanged,\n    scan,\n    refCount,\n    first,\n    map,\n    skip,\n    share,\n    filter,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport {IPinch} from \"../Viewer\";\n\ninterface IPinchOperation {\n    (pinch: IPinch): IPinch;\n}\n\nexport class TouchService {\n    private _activeSubject$: BehaviorSubject<boolean>;\n    private _active$: Observable<boolean>;\n\n    private _touchStart$: Observable<TouchEvent>;\n    private _touchMove$: Observable<TouchEvent>;\n    private _touchEnd$: Observable<TouchEvent>;\n    private _touchCancel$: Observable<TouchEvent>;\n\n    private _singleTouchDrag$: Observable<TouchEvent>;\n    private _singleTouchDragStart$: Observable<TouchEvent>;\n    private _singleTouchDragEnd$: Observable<TouchEvent>;\n    private _singleTouchMove$: Observable<TouchEvent>;\n\n    private _pinchOperation$: Subject<IPinchOperation>;\n    private _pinch$: Observable<IPinch>;\n    private _pinchStart$: Observable<TouchEvent>;\n    private _pinchEnd$: Observable<TouchEvent>;\n    private _pinchChange$: Observable<IPinch>;\n\n    private _doubleTap$: Observable<TouchEvent>;\n\n    constructor(canvasContainer: HTMLElement, domContainer: HTMLElement) {\n        this._activeSubject$ = new BehaviorSubject<boolean>(false);\n\n        this._active$ = this._activeSubject$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        observableFromEvent<TouchEvent>(domContainer, \"touchmove\")\n            .subscribe(\n                (event: TouchEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._touchStart$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchstart\");\n        this._touchMove$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchmove\");\n        this._touchEnd$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchend\");\n        this._touchCancel$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchcancel\");\n\n        const tapStart$: Observable<TouchEvent> = this._touchStart$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 1 && te.targetTouches.length === 1;\n                }),\n            share());\n\n        this._doubleTap$ = tapStart$.pipe(\n            bufferWhen(\n                (): Observable<number | TouchEvent> => {\n                    return tapStart$.pipe(\n                        first(),\n                        switchMap(\n                            (event: TouchEvent): Observable<number | TouchEvent> => {\n                                return observableMerge(\n                                        observableTimer(300),\n                                        tapStart$).pipe(\n                                    take(1));\n                            }));\n                }),\n            filter(\n                (events: TouchEvent[]): boolean => {\n                    return events.length === 2;\n                }),\n            map(\n                (events: TouchEvent[]): TouchEvent => {\n                    return events[events.length - 1];\n                }),\n            share());\n\n        this._doubleTap$\n            .subscribe(\n                (event: TouchEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._singleTouchMove$ = this._touchMove$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 1 && te.targetTouches.length === 1;\n                }),\n            share());\n\n        let singleTouchStart$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchStart$,\n                this._touchEnd$,\n                this._touchCancel$).pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 1 && te.targetTouches.length === 1;\n                }));\n\n        let multipleTouchStart$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchStart$,\n                this._touchEnd$,\n                this._touchCancel$).pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length >= 1;\n                }));\n\n        let touchStop$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchEnd$,\n                this._touchCancel$).pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 0;\n                }));\n\n        this._singleTouchDragStart$ = singleTouchStart$.pipe(\n            mergeMap(\n                (e: TouchEvent): Observable<TouchEvent> => {\n                    return this._singleTouchMove$.pipe(\n                        takeUntil(\n                            observableMerge(\n                                touchStop$,\n                                multipleTouchStart$)),\n                        take(1));\n                }));\n\n        this._singleTouchDragEnd$ = singleTouchStart$.pipe(\n            mergeMap(\n                (e: TouchEvent): Observable<TouchEvent> => {\n                    return observableMerge(\n                            touchStop$,\n                            multipleTouchStart$).pipe(\n                        first());\n                }));\n\n        this._singleTouchDrag$ = singleTouchStart$.pipe(\n            switchMap(\n                (te: TouchEvent): Observable<TouchEvent> => {\n                    return this._singleTouchMove$.pipe(\n                        skip(1),\n                        takeUntil(\n                            observableMerge(\n                                    multipleTouchStart$,\n                                    touchStop$)));\n                }));\n\n        let touchesChanged$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchStart$,\n                this._touchEnd$,\n                this._touchCancel$);\n\n        this._pinchStart$ = touchesChanged$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 2 && te.targetTouches.length === 2;\n                }));\n\n        this._pinchEnd$ = touchesChanged$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length !== 2 || te.targetTouches.length !== 2;\n                }));\n\n        this._pinchOperation$ = new Subject<IPinchOperation>();\n\n        this._pinch$ = this._pinchOperation$.pipe(\n            scan(\n                (pinch: IPinch, operation: IPinchOperation): IPinch => {\n                    return operation(pinch);\n                },\n                {\n                    changeX: 0,\n                    changeY: 0,\n                    clientX: 0,\n                    clientY: 0,\n                    distance: 0,\n                    distanceChange: 0,\n                    distanceX: 0,\n                    distanceY: 0,\n                    originalEvent: null,\n                    pageX: 0,\n                    pageY: 0,\n                    screenX: 0,\n                    screenY: 0,\n                    touch1: null,\n                    touch2: null,\n                }));\n\n        this._touchMove$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 2 && te.targetTouches.length === 2;\n                }),\n            map(\n                (te: TouchEvent): IPinchOperation => {\n                    return (previous: IPinch): IPinch => {\n                        let touch1: Touch = te.touches[0];\n                        let touch2: Touch = te.touches[1];\n\n                        let minX: number = Math.min(touch1.clientX, touch2.clientX);\n                        let maxX: number = Math.max(touch1.clientX, touch2.clientX);\n\n                        let minY: number = Math.min(touch1.clientY, touch2.clientY);\n                        let maxY: number = Math.max(touch1.clientY, touch2.clientY);\n\n                        let centerClientX: number = minX + (maxX - minX) / 2;\n                        let centerClientY: number = minY + (maxY - minY) / 2;\n\n                        let centerPageX: number = centerClientX + touch1.pageX - touch1.clientX;\n                        let centerPageY: number = centerClientY + touch1.pageY - touch1.clientY;\n\n                        let centerScreenX: number = centerClientX + touch1.screenX - touch1.clientX;\n                        let centerScreenY: number = centerClientY + touch1.screenY - touch1.clientY;\n\n                        let distanceX: number = Math.abs(touch1.clientX - touch2.clientX);\n                        let distanceY: number = Math.abs(touch1.clientY - touch2.clientY);\n\n                        let distance: number = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n\n                        let distanceChange: number = distance - previous.distance;\n\n                        let changeX: number = distanceX - previous.distanceX;\n                        let changeY: number = distanceY - previous.distanceY;\n\n                        let current: IPinch = {\n                            changeX: changeX,\n                            changeY: changeY,\n                            clientX: centerClientX,\n                            clientY: centerClientY,\n                            distance: distance,\n                            distanceChange: distanceChange,\n                            distanceX: distanceX,\n                            distanceY: distanceY,\n                            originalEvent: te,\n                            pageX: centerPageX,\n                            pageY: centerPageY,\n                            screenX: centerScreenX,\n                            screenY: centerScreenY,\n                            touch1: touch1,\n                            touch2: touch2,\n                        };\n\n                        return current;\n                    };\n                }))\n            .subscribe(this._pinchOperation$);\n\n        this._pinchChange$ = this._pinchStart$.pipe(\n            switchMap(\n                (te: TouchEvent): Observable<IPinch> => {\n                    return this._pinch$.pipe(\n                        skip(1),\n                        takeUntil(this._pinchEnd$));\n                }));\n    }\n\n    public get active$(): Observable<boolean> {\n        return this._active$;\n    }\n\n    public get activate$(): Subject<boolean> {\n        return this._activeSubject$;\n    }\n\n    public get doubleTap$(): Observable<TouchEvent> {\n        return this._doubleTap$;\n    }\n\n    public get touchStart$(): Observable<TouchEvent> {\n        return this._touchStart$;\n    }\n\n    public get touchMove$(): Observable<TouchEvent> {\n        return this._touchMove$;\n    }\n\n    public get touchEnd$(): Observable<TouchEvent> {\n        return this._touchEnd$;\n    }\n\n    public get touchCancel$(): Observable<TouchEvent> {\n        return this._touchCancel$;\n    }\n\n    public get singleTouchDragStart$(): Observable<TouchEvent> {\n        return this._singleTouchDragStart$;\n    }\n\n    public get singleTouchDrag$(): Observable<TouchEvent> {\n        return this._singleTouchDrag$;\n    }\n\n    public get singleTouchDragEnd$(): Observable<TouchEvent> {\n        return this._singleTouchDragEnd$;\n    }\n\n    public get pinch$(): Observable<IPinch> {\n        return this._pinchChange$;\n    }\n\n    public get pinchStart$(): Observable<TouchEvent> {\n        return this._pinchStart$;\n    }\n\n    public get pinchEnd$(): Observable<TouchEvent> {\n        return this._pinchEnd$;\n    }\n}\n",
-    "import {throwError as observableThrowError, Observable} from \"rxjs\";\n\nimport {first} from \"rxjs/operators\";\nimport * as when from \"when\";\n\nimport {ILatLon} from \"../API\";\nimport {EdgeDirection} from \"../Edge\";\nimport {AbortMapillaryError} from \"../Error\";\nimport {\n    FilterExpression,\n    Node,\n} from \"../Graph\";\nimport {\n    ComponentController,\n    Container,\n    IViewerOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\nimport {\n    Component,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {\n    EventEmitter,\n    Settings,\n    Urls,\n} from \"../Utils\";\nimport {RenderMode} from \"../Render\";\nimport {TransitionMode} from \"../State\";\n\n/**\n * @class Viewer\n *\n * @classdesc The Viewer object represents the navigable image viewer.\n * Create a Viewer by specifying a container, client ID, image key and\n * other options. The viewer exposes methods and events for programmatic\n * interaction.\n *\n * In the case of asynchronous methods, MapillaryJS returns promises to\n * the results. Notifications are always emitted through JavaScript events.\n *\n * The viewer works with a few different coordinate systems.\n *\n * Container pixel coordinates\n *\n * Pixel coordinates are coordinates on the viewer container. The origin is\n * in the top left corner of the container. The axes are\n * directed according to the following for a viewer container with a width\n * of 640 pixels and height of 480 pixels.\n *\n * ```\n * (0,0)                          (640, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 480)                       (640, 480)\n * ```\n *\n * Basic image coordinates\n *\n * Basic image coordinates represents points in the original image adjusted for\n * orientation. They range from 0 to 1 on both axes. The origin is in the top left\n * corner of the image and the axes are directed\n * according to the following for all image types.\n *\n * ```\n * (0,0)                          (1, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 1)                         (1, 1)\n * ```\n *\n * For every camera viewing direction it is possible to convert between these\n * two coordinate systems for the current node. The image can be panned and\n * zoomed independently of the size of the viewer container resulting in\n * different conversion results for different viewing directions.\n */\nexport class Viewer extends EventEmitter {\n    /**\n     * Fired when the viewing direction of the camera changes.\n     *\n     * @description Related to the computed compass angle\n     * ({@link Node.computedCa}) from SfM, not the original EXIF compass\n     * angle.\n     *\n     * @event\n     * @type {number} bearing - Value indicating the current bearing\n     * measured in degrees clockwise with respect to north.\n     */\n    public static bearingchanged: string = \"bearingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed and released at\n     * the same point in the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static click: string = \"click\";\n\n    /**\n     * Fired when the right button of the mouse is clicked within the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static contextmenu: string = \"contextmenu\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is clicked twice at\n     * the same point in the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static dblclick: string = \"dblclick\";\n\n    /**\n     * Fired when the viewer is loading more data.\n     * @event\n     * @type {boolean} loading - Boolean indicating whether the viewer is loading.\n     */\n    public static loadingchanged: string = \"loadingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed within the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousedown: string = \"mousedown\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved within the viewer.\n     * @description Will not fire when the mouse is actively used, e.g. for drag pan.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousemove: string = \"mousemove\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) leaves the viewer's canvas.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseout: string = \"mouseout\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved onto the viewer's canvas.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseover: string = \"mouseover\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is released within the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseup: string = \"mouseup\";\n\n    /**\n     * Fired when the viewer motion stops and it is in a fixed\n     * position with a fixed point of view.\n     * @event\n     */\n    public static moveend: string = \"moveend\";\n\n    /**\n     * Fired when the motion from one view to another start,\n     * either by changing the position (e.g. when changing node) or\n     * when changing point of view (e.g. by interaction such as pan and zoom).\n     * @event\n     */\n    public static movestart: string = \"movestart\";\n\n    /**\n     * Fired when the navigable state of the viewer changes.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the `moveToKey`, `moveDir` and `moveCloseTo`\n     * methods. The viewer will not be in a navigable state if the cover\n     * is activated and the viewer has been supplied a key. When the cover\n     * is deactivated or activated without being supplied a key it will\n     * be navigable.\n     *\n     * @event\n     * @type {boolean} navigable - Boolean indicating whether the viewer is navigable.\n     */\n    public static navigablechanged: string = \"navigablechanged\";\n\n    /**\n     * Fired every time the viewer navigates to a new node.\n     * @event\n     * @type {Node} node - Current node.\n     */\n    public static nodechanged: string = \"nodechanged\";\n\n    /**\n     * Fired every time the sequence edges of the current node changes.\n     * @event\n     * @type {IEdgeStatus} status - The edge status object.\n     */\n    public static sequenceedgeschanged: string = \"sequenceedgeschanged\";\n\n    /**\n     * Fired every time the spatial edges of the current node changes.\n     * @event\n     * @type {IEdgeStatus} status - The edge status object.\n     */\n    public static spatialedgeschanged: string = \"spatialedgeschanged\";\n\n    /**\n     * Private component controller object which manages component states.\n     */\n    private _componentController: ComponentController;\n\n    /**\n     * Private container object which maintains the DOM Element,\n     * renderers and relevant services.\n     */\n    private _container: Container;\n\n    /**\n     * Private observer object which observes the viewer state and\n     * fires events on behalf of the viewer.\n     */\n    private _observer: Observer;\n\n    /**\n     * Private navigator object which controls navigation throught\n     * the vast seas of Mapillary.\n     */\n    private _navigator: Navigator;\n\n    /**\n     * Create a new viewer instance.\n     *\n     * @description It is possible to initialize the viewer with or\n     * without a key.\n     *\n     * When you want to show a specific image in the viewer from\n     * the start you should initialize it with a key.\n     *\n     * When you do not know the first image key at implementation\n     * time, e.g. in a map-viewer application you should initialize\n     * the viewer without a key and call `moveToKey` instead.\n     *\n     * When initializing with a key the viewer is bound to that key\n     * until the node for that key has been successfully loaded.\n     * Also, a cover with the image of the key will be shown.\n     * If the data for that key can not be loaded because the key is\n     * faulty or other errors occur it is not possible to navigate\n     * to another key because the viewer is not navigable. The viewer\n     * becomes navigable when the data for the key has been loaded and\n     * the image is shown in the viewer. This way of initializing\n     * the viewer is mostly for embedding in blog posts and similar\n     * where one wants to show a specific image initially.\n     *\n     * If the viewer is initialized without a key (with null or\n     * undefined) it is not bound to any particular key and it is\n     * possible to move to any key with `viewer.moveToKey(\"<my-image-key>\")`.\n     * If the first move to a key fails it is possible to move to another\n     * key. The viewer will show a black background until a move\n     * succeeds. This way of intitializing is suited for a map-viewer\n     * application when the initial key is not known at implementation\n     * time.\n     *\n     * @param {string} id - Required `id` of a DOM element which will\n     * be transformed into the viewer.\n     * @param {string} clientId - Required `Mapillary API ClientID`. Can\n     * be obtained from https://www.mapillary.com/app/settings/developers.\n     * @param {string} key - Optional `image-key` to start from. The key\n     * can be any Mapillary image. If a key is provided the viewer is\n     * bound to that key until it has been fully loaded. If null is provided\n     * no image is loaded at viewer initialization and the viewer is not\n     * bound to any particular key. Any image can then be navigated to\n     * with e.g. `viewer.moveToKey(\"<my-image-key>\")`.\n     * @param {IViewerOptions} options - Optional configuration object\n     * specifing Viewer's and the components' initial setup.\n     * @param {string} token - Optional bearer token for API requests of\n     * protected resources.\n     *\n     * @example\n     * ```\n     * var viewer = new Mapillary.Viewer(\"<element-id>\", \"<client-id>\", \"<image-key>\");\n     * ```\n     */\n    constructor (id: string, clientId: string, key?: string, options?: IViewerOptions, token?: string) {\n        super();\n\n        options = options != null ? options : {};\n\n        Settings.setOptions(options);\n        Urls.setOptions(options.url);\n\n        this._navigator = new Navigator(clientId, options, token);\n        this._container = new Container(id, this._navigator.stateService, options);\n        this._observer = new Observer(this, this._navigator, this._container);\n        this._componentController = new ComponentController(this._container, this._navigator, this._observer, key, options.component);\n    }\n\n    /**\n     * Return a boolean indicating if the viewer is in a navigable state.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the {@link moveToKey}, {@link moveDir`}\n     * and {@link moveCloseTo} methods or changing the authentication state,\n     * i.e. calling {@link setAuthToken}. The viewer will not be in a navigable\n     * state if the cover is activated and the viewer has been supplied a key.\n     * When the cover is deactivated or the viewer is activated without being\n     * supplied a key it will be navigable.\n     *\n     * @returns {boolean} Boolean indicating whether the viewer is navigable.\n     */\n    public get isNavigable(): boolean {\n        return this._componentController.navigable;\n    }\n\n    /**\n     * Activate a component.\n     *\n     * @param {string} name - Name of the component which will become active.\n     *\n     * @example\n     * ```\n     * viewer.activateComponent(\"marker\");\n     * ```\n     */\n    public activateComponent(name: string): void {\n        this._componentController.activate(name);\n    }\n\n    /**\n     * Activate the cover (deactivates all other components).\n     */\n    public activateCover(): void {\n        this._componentController.activateCover();\n    }\n\n    /**\n     * Deactivate a component.\n     *\n     * @param {string} name - Name of component which become inactive.\n     *\n     * @example\n     * ```\n     * viewer.deactivateComponent(\"mouse\");\n     * ```\n     */\n    public deactivateComponent(name: string): void {\n        this._componentController.deactivate(name);\n    }\n\n    /**\n     * Deactivate the cover (activates all components marked as active).\n     */\n    public deactivateCover(): void {\n        this._componentController.deactivateCover();\n    }\n\n    /**\n     * Get the bearing of the current viewer camera.\n     *\n     * @description The bearing depends on how the camera\n     * is currently rotated and does not correspond\n     * to the compass angle of the current node if the view\n     * has been panned.\n     *\n     * Bearing is measured in degrees clockwise with respect to\n     * north.\n     *\n     * @returns {Promise<number>} Promise to the bearing\n     * of the current viewer camera.\n     *\n     * @example\n     * ```\n     * viewer.getBearing().then((b) => { console.log(b); });\n     * ```\n     */\n    public getBearing(): when.Promise<number> {\n        return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._container.renderService.bearing$.pipe(\n                    first())\n                    .subscribe(\n                        (bearing: number): void => {\n                            resolve(bearing);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get the basic coordinates of the current image that is\n     * at the center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and have the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @returns {Promise<number[]>} Promise to the basic coordinates\n     * of the current image at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.getCenter().then((c) => { console.log(c); });\n     * ```\n     */\n    public getCenter(): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getCenter()\n                    .subscribe(\n                        (center: number[]): void => {\n                            resolve(center);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get a component.\n     *\n     * @param {string} name - Name of component.\n     * @returns {Component} The requested component.\n     *\n     * @example\n     * ```\n     * var mouseComponent = viewer.getComponent(\"mouse\");\n     * ```\n     */\n    public getComponent<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentController.get<TComponent>(name);\n    }\n\n    /**\n     * Returns the viewer's containing HTML element.\n     *\n     * @returns {HTMLElement} The viewer's container.\n     */\n    public getContainer(): HTMLElement {\n        return this._container.element;\n    }\n\n    /**\n     * Get the image's current zoom level.\n     *\n     * @returns {Promise<number>} Promise to the viewers's current\n     * zoom level.\n     *\n     * @example\n     * ```\n     * viewer.getZoom().then((z) => { console.log(z); });\n     * ```\n     */\n    public getZoom(): when.Promise<number> {\n         return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getZoom()\n                    .subscribe(\n                        (zoom: number): void => {\n                            resolve(zoom);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Move close to given latitude and longitude.\n     *\n     * @description Because the method propagates IO errors, these potential errors\n     * need to be handled by the method caller (see example).\n     *\n     * @param {Number} lat - Latitude, in degrees.\n     * @param {Number} lon - Longitude, in degrees.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If no nodes exist close to provided latitude\n     * longitude.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws {AbortMapillaryError} When a subsequent move request is made\n     * before the move close to call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveCloseTo(0, 0).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveCloseTo(lat: number, lon: number): when.Promise<Node> {\n        const moveCloseTo$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveCloseTo$(lat, lon) :\n            observableThrowError(new Error(\"Calling moveCloseTo is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveCloseTo$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate in a given direction.\n     *\n     * @description This method has to be called through EdgeDirection enumeration as in the example.\n     *\n     * @param {EdgeDirection} dir - Direction in which which to move.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If the current node does not have the edge direction\n     * or the edges has not yet been cached.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws {AbortMapillaryError} When a subsequent move request is made\n     * before the move dir call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveDir(Mapillary.EdgeDirection.Next).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveDir(dir: EdgeDirection): when.Promise<Node> {\n        const moveDir$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveDir$(dir) :\n            observableThrowError(new Error(\"Calling moveDir is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveDir$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate to a given image key.\n     *\n     * @param {string} key - A valid Mapillary image key.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws {AbortMapillaryError} When a subsequent move request is made\n     * before the move to key call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveToKey(\"<my key>\").then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveToKey(key: string): when.Promise<Node> {\n        const moveToKey$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveToKey$(key) :\n            observableThrowError(new Error(\"Calling moveToKey is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveToKey$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Project basic image coordinates for the current node to canvas pixel\n     * coordinates.\n     *\n     * @description The basic image coordinates may not always correspond to a\n     * pixel point that lies in the visible area of the viewer container.\n     *\n     * @param {Array<number>} basicPoint - Basic images coordinates to project.\n     * @returns {Promise<Array<number>>} Promise to the pixel coordinates corresponding\n     * to the basic image point.\n     *\n     * @example\n     * ```\n     * viewer.projectFromBasic([0.3, 0.7])\n     *     .then((pixelPoint) => { console.log(pixelPoint); });\n     * ```\n     */\n    public projectFromBasic(basicPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.projectBasic$(basicPoint)\n                    .subscribe(\n                        (pixelPoint: number[]): void => {\n                            resolve(pixelPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Detect the viewer's new width and height and resize it.\n     *\n     * @description The components will also detect the viewer's\n     * new size and resize their rendered elements if needed.\n     *\n     * @example\n     * ```\n     * viewer.resize();\n     * ```\n     */\n    public resize(): void {\n        this._container.renderService.resize$.next(null);\n    }\n\n    /**\n     * Set a bearer token for authenticated API requests of\n     * protected resources.\n     *\n     * @description When the supplied token is null or undefined,\n     * any previously set bearer token will be cleared and the\n     * viewer will make unauthenticated requests.\n     *\n     * Calling setAuthToken aborts all outstanding move requests.\n     * The promises of those move requests will be rejected with a\n     * {@link AbortMapillaryError} the rejections need to be caught.\n     *\n     * Calling setAuthToken also resets the complete viewer cache\n     * so it should not be called repeatedly.\n     *\n     * @param {string} [token] token - Bearer token.\n     * @returns {Promise<void>} Promise that resolves after token\n     * is set.\n     *\n     * @throws {Error} When viewer is not navigable.\n     *\n     * @example\n     * ```\n     * viewer.setAuthToken(\"<my token>\")\n     *     .then(() => { console.log(\"token set\"); });\n     * ```\n     */\n    public setAuthToken(token?: string): when.Promise<void> {\n        const setToken$: Observable<void> = this.isNavigable ?\n            this._navigator.setToken$(token) :\n            observableThrowError(new Error(\"Calling setAuthToken is not supported when viewer is not navigable.\"));\n\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                setToken$\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the basic coordinates of the current image to be in the\n     * center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and has the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @param {number[]} The basic coordinates of the current\n     * image to be at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.setCenter([0.5, 0.5]);\n     * ```\n     */\n    public setCenter(center: number[]): void {\n        this._navigator.stateService.setCenter(center);\n    }\n\n    /**\n     * Set the filter selecting nodes to use when calculating\n     * the spatial edges.\n     *\n     * @description The following filter types are supported:\n     *\n     * Comparison\n     *\n     * `[\"==\", key, value]` equality: `node[key] = value`\n     *\n     * `[\"!=\", key, value]` inequality: `node[key] ≠ value`\n     *\n     * `[\"<\", key, value]` less than: `node[key] < value`\n     *\n     * `[\"<=\", key, value]` less than or equal: `node[key] ≤ value`\n     *\n     * `[\">\", key, value]` greater than: `node[key] > value`\n     *\n     * `[\">=\", key, value]` greater than or equal: `node[key] ≥ value`\n     *\n     * Set membership\n     *\n     * `[\"in\", key, v0, ..., vn]` set inclusion: `node[key] ∈ {v0, ..., vn}`\n     *\n     * `[\"!in\", key, v0, ..., vn]` set exclusion: `node[key] ∉ {v0, ..., vn}`\n     *\n     * Combining\n     *\n     * `[\"all\", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`\n     *\n     * A key must be a string that identifies a property name of a\n     * simple {@link Node} property. A value must be a string, number, or\n     * boolean. Strictly-typed comparisons are used. The values\n     * `f0, ..., fn` of the combining filter must be filter expressions.\n     *\n     * Clear the filter by setting it to null or empty array.\n     *\n     * @param {FilterExpression} filter - The filter expression.\n     * @returns {Promise<void>} Promise that resolves after filter is applied.\n     *\n     * @example\n     * ```\n     * viewer.setFilter([\"==\", \"sequenceKey\", \"<my sequence key>\"]);\n     * ```\n     */\n    public setFilter(filter: FilterExpression): when.Promise<void> {\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                this._navigator.setFilter$(filter)\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the viewer's render mode.\n     *\n     * @param {RenderMode} renderMode - Render mode.\n     *\n     * @example\n     * ```\n     * viewer.setRenderMode(Mapillary.RenderMode.Letterbox);\n     * ```\n     */\n    public setRenderMode(renderMode: RenderMode): void {\n        this._container.renderService.renderMode$.next(renderMode);\n    }\n\n    /**\n     * Set the viewer's transition mode.\n     *\n     * @param {TransitionMode} transitionMode - Transition mode.\n     *\n     * @example\n     * ```\n     * viewer.setTransitionMode(Mapillary.TransitionMode.Instantaneous);\n     * ```\n     */\n    public setTransitionMode(transitionMode: TransitionMode): void {\n        this._navigator.stateService.setTransitionMode(transitionMode);\n    }\n\n    /**\n     * Set the image's current zoom level.\n     *\n     * @description Possible zoom level values are on the [0, 3] interval.\n     * Zero means zooming out to fit the image to the view whereas three\n     * shows the highest level of detail.\n     *\n     * @param {number} The image's current zoom level.\n     *\n     * @example\n     * ```\n     * viewer.setZoom(2);\n     * ```\n     */\n    public setZoom(zoom: number): void {\n        this._navigator.stateService.setZoom(zoom);\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to an ILatLon representing geographical\n     * coordinates.\n     *\n     * @description The pixel point may not always correspond to geographical\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the latLon corresponding to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unproject([100, 100])\n     *     .then((latLon) => { console.log(latLon); });\n     * ```\n     */\n    public unproject(pixelPoint: number[]): when.Promise<ILatLon> {\n        return when.promise<ILatLon>(\n            (resolve: (value: ILatLon) => void, reject: (reason: Error) => void): void => {\n                this._observer.unproject$(pixelPoint)\n                    .subscribe(\n                        (latLon: ILatLon): void => {\n                            resolve(latLon);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to basic image coordinates for the\n     * current node.\n     *\n     * @description The pixel point may not always correspond to basic image\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the basic coordinates corresponding\n     * to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unprojectToBasic([100, 100])\n     *     .then((basicPoint) => { console.log(basicPoint); });\n     * ```\n     */\n    public unprojectToBasic(pixelPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.unprojectBasic$(pixelPoint)\n                    .subscribe(\n                        (basicPoint: number[]): void => {\n                            resolve(basicPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n}\n"
+    "import {throwError as observableThrowError, Observable} from \"rxjs\";\n\nimport {first} from \"rxjs/operators\";\nimport * as when from \"when\";\n\nimport {ILatLon} from \"../API\";\nimport {EdgeDirection} from \"../Edge\";\nimport {\n    FilterExpression,\n    Node,\n} from \"../Graph\";\nimport {\n    ComponentController,\n    Container,\n    IViewerOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\nimport {\n    Component,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {\n    EventEmitter,\n    Settings,\n    Urls,\n} from \"../Utils\";\nimport {RenderMode} from \"../Render\";\nimport {TransitionMode} from \"../State\";\n\n/**\n * @class Viewer\n *\n * @classdesc The Viewer object represents the navigable image viewer.\n * Create a Viewer by specifying a container, client ID, image key and\n * other options. The viewer exposes methods and events for programmatic\n * interaction.\n *\n * In the case of asynchronous methods, MapillaryJS returns promises to\n * the results. Notifications are always emitted through JavaScript events.\n *\n * The viewer works with a few different coordinate systems.\n *\n * Container pixel coordinates\n *\n * Pixel coordinates are coordinates on the viewer container. The origin is\n * in the top left corner of the container. The axes are\n * directed according to the following for a viewer container with a width\n * of 640 pixels and height of 480 pixels.\n *\n * ```\n * (0,0)                          (640, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 480)                       (640, 480)\n * ```\n *\n * Basic image coordinates\n *\n * Basic image coordinates represents points in the original image adjusted for\n * orientation. They range from 0 to 1 on both axes. The origin is in the top left\n * corner of the image and the axes are directed\n * according to the following for all image types.\n *\n * ```\n * (0,0)                          (1, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 1)                         (1, 1)\n * ```\n *\n * For every camera viewing direction it is possible to convert between these\n * two coordinate systems for the current node. The image can be panned and\n * zoomed independently of the size of the viewer container resulting in\n * different conversion results for different viewing directions.\n */\nexport class Viewer extends EventEmitter {\n    /**\n     * Fired when the viewing direction of the camera changes.\n     *\n     * @description Related to the computed compass angle\n     * ({@link Node.computedCA}) from SfM, not the original EXIF compass\n     * angle.\n     *\n     * @event\n     * @type {number} bearing - Value indicating the current bearing\n     * measured in degrees clockwise with respect to north.\n     */\n    public static bearingchanged: string = \"bearingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed and released at\n     * the same point in the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static click: string = \"click\";\n\n    /**\n     * Fired when the right button of the mouse is clicked within the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static contextmenu: string = \"contextmenu\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is clicked twice at\n     * the same point in the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static dblclick: string = \"dblclick\";\n\n    /**\n     * Fired when the viewer is loading more data.\n     * @event\n     * @type {boolean} loading - Boolean indicating whether the viewer is loading.\n     */\n    public static loadingchanged: string = \"loadingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed within the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousedown: string = \"mousedown\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved within the viewer.\n     * @description Will not fire when the mouse is actively used, e.g. for drag pan.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousemove: string = \"mousemove\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) leaves the viewer's canvas.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseout: string = \"mouseout\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved onto the viewer's canvas.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseover: string = \"mouseover\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is released within the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseup: string = \"mouseup\";\n\n    /**\n     * Fired when the viewer motion stops and it is in a fixed\n     * position with a fixed point of view.\n     * @event\n     */\n    public static moveend: string = \"moveend\";\n\n    /**\n     * Fired when the motion from one view to another start,\n     * either by changing the position (e.g. when changing node) or\n     * when changing point of view (e.g. by interaction such as pan and zoom).\n     * @event\n     */\n    public static movestart: string = \"movestart\";\n\n    /**\n     * Fired when the navigable state of the viewer changes.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the `moveToKey`, `moveDir` and `moveCloseTo`\n     * methods. The viewer will not be in a navigable state if the cover\n     * is activated and the viewer has been supplied a key. When the cover\n     * is deactivated or activated without being supplied a key it will\n     * be navigable.\n     *\n     * @event\n     * @type {boolean} navigable - Boolean indicating whether the viewer is navigable.\n     */\n    public static navigablechanged: string = \"navigablechanged\";\n\n    /**\n     * Fired every time the viewer navigates to a new node.\n     * @event\n     * @type  {@link Node} node - Current node.\n     */\n    public static nodechanged: string = \"nodechanged\";\n\n    /**\n     * Fired every time the sequence edges of the current node changes.\n     * @event\n     * @type  {@link IEdgeStatus} status - The edge status object.\n     */\n    public static sequenceedgeschanged: string = \"sequenceedgeschanged\";\n\n    /**\n     * Fired every time the spatial edges of the current node changes.\n     * @event\n     * @type  {@link IEdgeStatus} status - The edge status object.\n     */\n    public static spatialedgeschanged: string = \"spatialedgeschanged\";\n\n    /**\n     * Private component controller object which manages component states.\n     */\n    private _componentController: ComponentController;\n\n    /**\n     * Private container object which maintains the DOM Element,\n     * renderers and relevant services.\n     */\n    private _container: Container;\n\n    /**\n     * Private observer object which observes the viewer state and\n     * fires events on behalf of the viewer.\n     */\n    private _observer: Observer;\n\n    /**\n     * Private navigator object which controls navigation throught\n     * the vast seas of Mapillary.\n     */\n    private _navigator: Navigator;\n\n    /**\n     * Create a new viewer instance.\n     *\n     * @description It is possible to initialize the viewer with or\n     * without a key.\n     *\n     * When you want to show a specific image in the viewer from\n     * the start you should initialize it with a key.\n     *\n     * When you do not know the first image key at implementation\n     * time, e.g. in a map-viewer application you should initialize\n     * the viewer without a key and call `moveToKey` instead.\n     *\n     * When initializing with a key the viewer is bound to that key\n     * until the node for that key has been successfully loaded.\n     * Also, a cover with the image of the key will be shown.\n     * If the data for that key can not be loaded because the key is\n     * faulty or other errors occur it is not possible to navigate\n     * to another key because the viewer is not navigable. The viewer\n     * becomes navigable when the data for the key has been loaded and\n     * the image is shown in the viewer. This way of initializing\n     * the viewer is mostly for embedding in blog posts and similar\n     * where one wants to show a specific image initially.\n     *\n     * If the viewer is initialized without a key (with null or\n     * undefined) it is not bound to any particular key and it is\n     * possible to move to any key with `viewer.moveToKey(\"<my-image-key>\")`.\n     * If the first move to a key fails it is possible to move to another\n     * key. The viewer will show a black background until a move\n     * succeeds. This way of intitializing is suited for a map-viewer\n     * application when the initial key is not known at implementation\n     * time.\n     *\n     * @param {string} id - Required `id` of a DOM element which will\n     * be transformed into the viewer.\n     * @param {string} clientId - Required `Mapillary API ClientID`. Can\n     * be obtained from https://www.mapillary.com/app/settings/developers.\n     * @param {string} key - Optional `image-key` to start from. The key\n     * can be any Mapillary image. If a key is provided the viewer is\n     * bound to that key until it has been fully loaded. If null is provided\n     * no image is loaded at viewer initialization and the viewer is not\n     * bound to any particular key. Any image can then be navigated to\n     * with e.g. `viewer.moveToKey(\"<my-image-key>\")`.\n     * @param {IViewerOptions} options - Optional configuration object\n     * specifing Viewer's and the components' initial setup.\n     * @param {string} token - Optional bearer token for API requests of\n     * protected resources.\n     *\n     * @example\n     * ```\n     * var viewer = new Mapillary.Viewer(\"<element-id>\", \"<client-id>\", \"<image-key>\");\n     * ```\n     */\n    constructor (id: string, clientId: string, key?: string, options?: IViewerOptions, token?: string) {\n        super();\n\n        options = options != null ? options : {};\n\n        Settings.setOptions(options);\n        Urls.setOptions(options.url);\n\n        this._navigator = new Navigator(clientId, options, token);\n        this._container = new Container(id, this._navigator.stateService, options);\n        this._observer = new Observer(this, this._navigator, this._container);\n        this._componentController = new ComponentController(this._container, this._navigator, this._observer, key, options.component);\n    }\n\n    /**\n     * Return a boolean indicating if the viewer is in a navigable state.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the {@link moveToKey}, {@link moveDir}\n     * and {@link moveCloseTo} methods or changing the authentication state,\n     * i.e. calling {@link setAuthToken}. The viewer will not be in a navigable\n     * state if the cover is activated and the viewer has been supplied a key.\n     * When the cover is deactivated or the viewer is activated without being\n     * supplied a key it will be navigable.\n     *\n     * @returns {boolean} Boolean indicating whether the viewer is navigable.\n     */\n    public get isNavigable(): boolean {\n        return this._componentController.navigable;\n    }\n\n    /**\n     * Activate the combined panning functionality.\n     *\n     * @description The combined panning functionality is active by default.\n     */\n    public activateCombinedPanning(): void {\n        this._navigator.panService.enable();\n    }\n\n    /**\n     * Activate a component.\n     *\n     * @param {string} name - Name of the component which will become active.\n     *\n     * @example\n     * ```\n     * viewer.activateComponent(\"marker\");\n     * ```\n     */\n    public activateComponent(name: string): void {\n        this._componentController.activate(name);\n    }\n\n    /**\n     * Activate the cover (deactivates all other components).\n     */\n    public activateCover(): void {\n        this._componentController.activateCover();\n    }\n\n    /**\n     * Deactivate the combined panning functionality.\n     *\n     * @description Deactivating the combined panning functionality\n     * could be needed in scenarios involving sequence only navigation.\n     */\n    public deactivateCombinedPanning(): void {\n        this._navigator.panService.disable();\n    }\n\n    /**\n     * Deactivate a component.\n     *\n     * @param {string} name - Name of component which become inactive.\n     *\n     * @example\n     * ```\n     * viewer.deactivateComponent(\"mouse\");\n     * ```\n     */\n    public deactivateComponent(name: string): void {\n        this._componentController.deactivate(name);\n    }\n\n    /**\n     * Deactivate the cover (activates all components marked as active).\n     */\n    public deactivateCover(): void {\n        this._componentController.deactivateCover();\n    }\n\n    /**\n     * Get the bearing of the current viewer camera.\n     *\n     * @description The bearing depends on how the camera\n     * is currently rotated and does not correspond\n     * to the compass angle of the current node if the view\n     * has been panned.\n     *\n     * Bearing is measured in degrees clockwise with respect to\n     * north.\n     *\n     * @returns {Promise<number>} Promise to the bearing\n     * of the current viewer camera.\n     *\n     * @example\n     * ```\n     * viewer.getBearing().then((b) => { console.log(b); });\n     * ```\n     */\n    public getBearing(): when.Promise<number> {\n        return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._container.renderService.bearing$.pipe(\n                    first())\n                    .subscribe(\n                        (bearing: number): void => {\n                            resolve(bearing);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get the basic coordinates of the current image that is\n     * at the center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and have the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @returns {Promise<number[]>} Promise to the basic coordinates\n     * of the current image at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.getCenter().then((c) => { console.log(c); });\n     * ```\n     */\n    public getCenter(): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getCenter()\n                    .subscribe(\n                        (center: number[]): void => {\n                            resolve(center);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get a component.\n     *\n     * @param {string} name - Name of component.\n     * @returns {Component} The requested component.\n     *\n     * @example\n     * ```\n     * var mouseComponent = viewer.getComponent(\"mouse\");\n     * ```\n     */\n    public getComponent<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentController.get<TComponent>(name);\n    }\n\n    /**\n     * Returns the viewer's containing HTML element.\n     *\n     * @returns {HTMLElement} The viewer's container.\n     */\n    public getContainer(): HTMLElement {\n        return this._container.element;\n    }\n\n    /**\n     * Get the image's current zoom level.\n     *\n     * @returns {Promise<number>} Promise to the viewers's current\n     * zoom level.\n     *\n     * @example\n     * ```\n     * viewer.getZoom().then((z) => { console.log(z); });\n     * ```\n     */\n    public getZoom(): when.Promise<number> {\n         return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getZoom()\n                    .subscribe(\n                        (zoom: number): void => {\n                            resolve(zoom);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Move close to given latitude and longitude.\n     *\n     * @description Because the method propagates IO errors, these potential errors\n     * need to be handled by the method caller (see example).\n     *\n     * @param {Number} lat - Latitude, in degrees.\n     * @param {Number} lon - Longitude, in degrees.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If no nodes exist close to provided latitude\n     * longitude.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws  {@link AbortMapillaryError} When a subsequent move request is made\n     * before the move close to call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveCloseTo(0, 0).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveCloseTo(lat: number, lon: number): when.Promise<Node> {\n        const moveCloseTo$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveCloseTo$(lat, lon) :\n            observableThrowError(new Error(\"Calling moveCloseTo is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveCloseTo$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate in a given direction.\n     *\n     * @description This method has to be called through EdgeDirection enumeration as in the example.\n     *\n     * @param {EdgeDirection} dir - Direction in which which to move.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If the current node does not have the edge direction\n     * or the edges has not yet been cached.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws  {@link AbortMapillaryError} When a subsequent move request is made\n     * before the move dir call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveDir(Mapillary.EdgeDirection.Next).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveDir(dir: EdgeDirection): when.Promise<Node> {\n        const moveDir$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveDir$(dir) :\n            observableThrowError(new Error(\"Calling moveDir is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveDir$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate to a given image key.\n     *\n     * @param {string} key - A valid Mapillary image key.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws  {@link AbortMapillaryError} When a subsequent move request is made\n     * before the move to key call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveToKey(\"<my key>\").then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveToKey(key: string): when.Promise<Node> {\n        const moveToKey$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveToKey$(key) :\n            observableThrowError(new Error(\"Calling moveToKey is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveToKey$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Project basic image coordinates for the current node to canvas pixel\n     * coordinates.\n     *\n     * @description The basic image coordinates may not always correspond to a\n     * pixel point that lies in the visible area of the viewer container.\n     *\n     * @param {Array<number>} basicPoint - Basic images coordinates to project.\n     * @returns {Promise<Array<number>>} Promise to the pixel coordinates corresponding\n     * to the basic image point.\n     *\n     * @example\n     * ```\n     * viewer.projectFromBasic([0.3, 0.7])\n     *     .then((pixelPoint) => { console.log(pixelPoint); });\n     * ```\n     */\n    public projectFromBasic(basicPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.projectBasic$(basicPoint)\n                    .subscribe(\n                        (pixelPoint: number[]): void => {\n                            resolve(pixelPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Detect the viewer's new width and height and resize it.\n     *\n     * @description The components will also detect the viewer's\n     * new size and resize their rendered elements if needed.\n     *\n     * @example\n     * ```\n     * viewer.resize();\n     * ```\n     */\n    public resize(): void {\n        this._container.renderService.resize$.next(null);\n    }\n\n    /**\n     * Set a bearer token for authenticated API requests of\n     * protected resources.\n     *\n     * @description When the supplied token is null or undefined,\n     * any previously set bearer token will be cleared and the\n     * viewer will make unauthenticated requests.\n     *\n     * Calling setAuthToken aborts all outstanding move requests.\n     * The promises of those move requests will be rejected with a\n     * {@link AbortMapillaryError} the rejections need to be caught.\n     *\n     * Calling setAuthToken also resets the complete viewer cache\n     * so it should not be called repeatedly.\n     *\n     * @param {string} [token] token - Bearer token.\n     * @returns {Promise<void>} Promise that resolves after token\n     * is set.\n     *\n     * @throws {Error} When viewer is not navigable.\n     *\n     * @example\n     * ```\n     * viewer.setAuthToken(\"<my token>\")\n     *     .then(() => { console.log(\"token set\"); });\n     * ```\n     */\n    public setAuthToken(token?: string): when.Promise<void> {\n        const setToken$: Observable<void> = this.isNavigable ?\n            this._navigator.setToken$(token) :\n            observableThrowError(new Error(\"Calling setAuthToken is not supported when viewer is not navigable.\"));\n\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                setToken$\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the basic coordinates of the current image to be in the\n     * center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and has the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @param {number[]} The basic coordinates of the current\n     * image to be at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.setCenter([0.5, 0.5]);\n     * ```\n     */\n    public setCenter(center: number[]): void {\n        this._navigator.stateService.setCenter(center);\n    }\n\n    /**\n     * Set the filter selecting nodes to use when calculating\n     * the spatial edges.\n     *\n     * @description The following filter types are supported:\n     *\n     * Comparison\n     *\n     * `[\"==\", key, value]` equality: `node[key] = value`\n     *\n     * `[\"!=\", key, value]` inequality: `node[key] ≠ value`\n     *\n     * `[\"<\", key, value]` less than: `node[key] < value`\n     *\n     * `[\"<=\", key, value]` less than or equal: `node[key] ≤ value`\n     *\n     * `[\">\", key, value]` greater than: `node[key] > value`\n     *\n     * `[\">=\", key, value]` greater than or equal: `node[key] ≥ value`\n     *\n     * Set membership\n     *\n     * `[\"in\", key, v0, ..., vn]` set inclusion: `node[key] ∈ {v0, ..., vn}`\n     *\n     * `[\"!in\", key, v0, ..., vn]` set exclusion: `node[key] ∉ {v0, ..., vn}`\n     *\n     * Combining\n     *\n     * `[\"all\", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`\n     *\n     * A key must be a string that identifies a property name of a\n     * simple {@link Node} property. A value must be a string, number, or\n     * boolean. Strictly-typed comparisons are used. The values\n     * `f0, ..., fn` of the combining filter must be filter expressions.\n     *\n     * Clear the filter by setting it to null or empty array.\n     *\n     * Commonly used filter properties (see the {@link Node} class\n     * documentation for a full list of properties that can be used\n     * in a filter) and common use cases:\n     *\n     * ```\n     * fullPano        // Show only full 360 panoramas or not\n     * organizationKey // Show images from one or several organizations\n     * sequenceKey     // Show images from one or several sequences\n     * userKey         // Show images from one or several users\n     * capturedAt      // Show images from a certain time interval\n     * ```\n     *\n     * @param {FilterExpression} filter - The filter expression.\n     * @returns {Promise<void>} Promise that resolves after filter is applied.\n     *\n     * @example\n     * ```\n     * viewer.setFilter([\"==\", \"sequenceKey\", \"<my sequence key>\"]);\n     *\n     * // Other examples\n     * // viewer.setFilter([\"==\", \"organizationKey\", \"<my organization key>\"]);\n     * // viewer.setFilter([\"in\", \"userKey\", \"<my user key #1>\", \"<my user key #2>\"]);\n     * // viewer.setFilter([\"==\", \"fullPano\", true]);\n     * // viewer.setFilter([\">=\", \"capturedAt\", <my time stamp>]);\n     * ```\n     */\n    public setFilter(filter: FilterExpression): when.Promise<void> {\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                this._navigator.setFilter$(filter)\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the viewer's render mode.\n     *\n     * @param {RenderMode} renderMode - Render mode.\n     *\n     * @example\n     * ```\n     * viewer.setRenderMode(Mapillary.RenderMode.Letterbox);\n     * ```\n     */\n    public setRenderMode(renderMode: RenderMode): void {\n        this._container.renderService.renderMode$.next(renderMode);\n    }\n\n    /**\n     * Set the viewer's transition mode.\n     *\n     * @param {TransitionMode} transitionMode - Transition mode.\n     *\n     * @example\n     * ```\n     * viewer.setTransitionMode(Mapillary.TransitionMode.Instantaneous);\n     * ```\n     */\n    public setTransitionMode(transitionMode: TransitionMode): void {\n        this._navigator.stateService.setTransitionMode(transitionMode);\n    }\n\n    /**\n     * Set the image's current zoom level.\n     *\n     * @description Possible zoom level values are on the [0, 3] interval.\n     * Zero means zooming out to fit the image to the view whereas three\n     * shows the highest level of detail.\n     *\n     * @param {number} The image's current zoom level.\n     *\n     * @example\n     * ```\n     * viewer.setZoom(2);\n     * ```\n     */\n    public setZoom(zoom: number): void {\n        this._navigator.stateService.setZoom(zoom);\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to an ILatLon representing geographical\n     * coordinates.\n     *\n     * @description The pixel point may not always correspond to geographical\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the latLon corresponding to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unproject([100, 100])\n     *     .then((latLon) => { console.log(latLon); });\n     * ```\n     */\n    public unproject(pixelPoint: number[]): when.Promise<ILatLon> {\n        return when.promise<ILatLon>(\n            (resolve: (value: ILatLon) => void, reject: (reason: Error) => void): void => {\n                this._observer.unproject$(pixelPoint)\n                    .subscribe(\n                        (latLon: ILatLon): void => {\n                            resolve(latLon);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to basic image coordinates for the\n     * current node.\n     *\n     * @description The pixel point may not always correspond to basic image\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the basic coordinates corresponding\n     * to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unprojectToBasic([100, 100])\n     *     .then((basicPoint) => { console.log(basicPoint); });\n     * ```\n     */\n    public unprojectToBasic(pixelPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.unprojectBasic$(pixelPoint)\n                    .subscribe(\n                        (basicPoint: number[]): void => {\n                            resolve(basicPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n}\n"
   ]
 }
\ No newline at end of file