clone

an offline map explorer where each world, from a game map to a city's open data, ships as one .atlas file

fix: restore reads the key the session writes

Dami committed 6467a1c
Both saveSession and the library's stamp-change capture spell the
world's slug as world; both restore readers tested map, a leftover
from the format's old vocabulary. The arrangement restore -- hidden
categories, folded sections, camera -- never fired for a returning
reader. Now it does.
commit
6467a1c789b7e72ffc8bda662d024f980234b165
parent
9056ca029a102273c57d44a64412c09033fdf5e7
author
Dami <dami.etoile@gmail.com>
2 files changed, +3 -3
Massets/app.js2+-
Mfrontend/src/navigation.js4++--
M assets/app.js +1 -1
@@ -5287,4 +5287,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
52875287 In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function H5e(i,e){return O5e(i)||V5e(i,e)||vle(i,e)||G5e()}function d1(i){return U5e(i)||z5e(i)||vle(i)||q5e()}function W5e(i,e){if(typeof i!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var n=t.call(i,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function j5e(i){var e=W5e(i,"string");return typeof e=="symbol"?e:e+""}function vle(i,e){if(i){if(typeof i=="string")return aG(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?aG(i,e):void 0}}var _le=function(e){e instanceof Array?e.forEach(_le):(e.map&&e.map.dispose(),e.dispose())},xle=function(e){e.geometry&&e.geometry.dispose(),e.material&&_le(e.material),e.texture&&e.texture.dispose(),e.children&&e.children.forEach(xle)},X5e=function(e){for(;e.children.length;){var t=e.children[0];e.remove(t),xle(t)}},Gr=window.THREE?window.THREE:{WebGLRenderer:UM,Scene:t0,PerspectiveCamera:$r,Raycaster:nb,SRGBColorSpace:Fr,TextureLoader:yl,Vector2:Oe,Vector3:re,Box3:Ua,Color:zt,Mesh:Hn,SphereGeometry:za,MeshBasicMaterial:fs,BackSide:mi,Timer:YA},lG=Kr({props:{width:{default:window.innerWidth,onChange:function(e,t,n){isNaN(e)&&(t.width=n)}},height:{default:window.innerHeight,onChange:function(e,t,n){isNaN(e)&&(t.height=n)}},viewOffset:{default:[0,0]},backgroundColor:{default:"#000011"},backgroundImageUrl:{},onBackgroundImageLoaded:{},showNavInfo:{default:!0},skyRadius:{default:5e4},objects:{default:[]},lights:{default:[]},enablePointerInteraction:{default:!0,onChange:function(e,t){t.hoverObj=null,t.tooltip&&t.tooltip.content(null)},triggerUpdate:!1},pointerRaycasterThrottleMs:{default:50,triggerUpdate:!1},lineHoverPrecision:{default:1,triggerUpdate:!1},pointsHoverPrecision:{default:1,triggerUpdate:!1},hoverOrderComparator:{triggerUpdate:!1},hoverFilter:{default:function(){return!0},triggerUpdate:!1},tooltipContent:{triggerUpdate:!1},hoverDuringDrag:{default:!1,triggerUpdate:!1},clickAfterDrag:{default:!1,triggerUpdate:!1},onHover:{default:function(){},triggerUpdate:!1},onClick:{default:function(){},triggerUpdate:!1},onRightClick:{triggerUpdate:!1}},methods:{tick:function(e){if(e.initialised){e.controls.enabled&&e.controls.update&&e.controls.update(Math.min(1,e.timer.update().getDelta())),e.postProcessingComposer?e.postProcessingComposer.render():e.renderer.render(e.scene,e.camera),e.extraRenderers.forEach(function(o){return o.render(e.scene,e.camera)});var t=+new Date;if(e.enablePointerInteraction&&t-e.lastRaycasterCheck>=e.pointerRaycasterThrottleMs){e.lastRaycasterCheck=t;var n=null;if(e.hoverDuringDrag||!e.isPointerDragging){var r=this.intersectingObjects(e.pointerPos.x,e.pointerPos.y);e.hoverOrderComparator&&r.sort(function(o,a){return e.hoverOrderComparator(o.object,a.object)});var s=r.find(function(o){return e.hoverFilter(o.object)})||null;n=s?s.object:null,e.intersection=s||null}n!==e.hoverObj&&(e.onHover(n,e.hoverObj,e.intersection),e.tooltip.content(n&&st(e.tooltipContent)(n,e.intersection)||null),e.hoverObj=n)}e.tweenGroup.update()}return this},getPointerPos:function(e){var t=e.pointerPos,n=t.x,r=t.y;return{x:n,y:r}},cameraPosition:function(e,t,n,r){var s=e.camera;if(t&&e.initialised){var o,a,l=t,c=n||{x:0,y:0,z:0};if((o=e.povPosTween)===null||o===void 0||o.end(),(a=e.povTgtTween)===null||a===void 0||a.end(),!r)d(l),A(c);else{var u=Object.assign({},s.position),f=y();e.tweenGroup.add(e.povPosTween=new uo(u).to(l,r).easing(Qr.Quadratic.Out).onUpdate(d).onComplete(function(){e.povPosTween=void 0,e.tweenGroup.remove(this)}).start()),e.tweenGroup.add(e.povTgtTween=new uo(f).to(c,r/3).easing(Qr.Quadratic.Out).onUpdate(A).onComplete(function(){e.povTgtTween=void 0,e.tweenGroup.remove(this)}).start())}return this}return Object.assign({},s.position,{lookAt:y()});function d(w){var S=w.x,T=w.y,R=w.z;S!==void 0&&(s.position.x=S),T!==void 0&&(s.position.y=T),R!==void 0&&(s.position.z=R)}function A(w){var S=new Gr.Vector3(w.x,w.y,w.z);e.controls.enabled&&e.controls.target?e.controls.target=S:s.lookAt(S)}function y(){return Object.assign(new Gr.Vector3(0,0,-1e3).applyQuaternion(s.quaternion).add(s.position))}},zoomToFit:function(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:10,r=arguments.length,s=new Array(r>3?r-3:0),o=3;o<r;o++)s[o-3]=arguments[o];return this.fitToBbox(this.getBbox.apply(this,s),t,n)},fitToBbox:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:10,s=e.camera;if(t){var o=new Gr.Vector3(0,0,0),a=Math.max.apply(Math,d1(Object.entries(t).map(function(A){var y=H5e(A,2),w=y[0],S=y[1];return Math.max.apply(Math,d1(S.map(function(T){return Math.abs(o[w]-T)})))})))*2,l=(1-r*2/e.height)*s.fov,c=a/Math.atan(l*Math.PI/180),u=c/s.aspect,f=Math.max(c,u);if(f>0){var d=o.clone().sub(s.position).normalize().multiplyScalar(-f);this.cameraPosition(d,o,n)}}return this},getBbox:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:function(){return!0},n=new Gr.Box3(new Gr.Vector3(0,0,0),new Gr.Vector3(0,0,0)),r=e.objects.filter(t);return r.length?(r.forEach(function(s){return n.expandByObject(s)}),Object.assign.apply(Object,d1(["x","y","z"].map(function(s){return k5e({},s,[n.min[s],n.max[s]])})))):null},getScreenCoords:function(e,t,n,r){var s=new Gr.Vector3(t,n,r);return s.project(this.camera()),{x:(s.x+1)*e.width/2,y:-(s.y-1)*e.height/2}},getSceneCoords:function(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,s=new Gr.Vector2(t/e.width*2-1,-(n/e.height)*2+1),o=new Gr.Raycaster;return o.setFromCamera(s,e.camera),Object.assign({},o.ray.at(r,new Gr.Vector3))},intersectingObjects:function(e,t,n){var r=new Gr.Vector2(t/e.width*2-1,-(n/e.height)*2+1),s=new Gr.Raycaster;return s.params.Line.threshold=e.lineHoverPrecision,s.params.Points.threshold=e.pointsHoverPrecision,s.setFromCamera(r,e.camera),s.intersectObjects(e.objects,!0)},renderer:function(e){return e.renderer},scene:function(e){return e.scene},camera:function(e){return e.camera},postProcessingComposer:function(e){return e.postProcessingComposer},controls:function(e){return e.controls},tbControls:function(e){return e.controls},_destructor:function(e){var t,n,r;X5e(e.scene),(t=e.controls)===null||t===void 0||t.dispose(),(n=e.renderer)===null||n===void 0||n.dispose(),(r=e.postProcessingComposer)===null||r===void 0||r.dispose()}},stateInit:function(){return{scene:new Gr.Scene,camera:new Gr.PerspectiveCamera,timer:new Gr.Timer,tweenGroup:new hg,lastRaycasterCheck:0}},init:function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.controlType,s=r===void 0?"trackball":r,o=n.useWebGPU,a=o===void 0?!1:o,l=n.rendererConfig,c=l===void 0?{}:l,u=n.extraRenderers,f=u===void 0?[]:u,d=n.waitForLoadComplete,A=d===void 0?!0:d;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.className="scene-container",t.container.style.position="relative",t.container.appendChild(t.navInfo=document.createElement("div")),t.navInfo.className="scene-nav-info",t.navInfo.textContent={orbit:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",trackball:"Left-click: rotate, Mouse-wheel/middle-click: zoom, Right-click: pan",fly:"WASD: move, R|F: up | down, Q|E: roll, up|down: pitch, left|right: yaw"}[s]||"",t.navInfo.style.display=t.showNavInfo?null:"none",t.tooltip=new gle(t.container),t.pointerPos=new Gr.Vector2,t.pointerPos.x=-2,t.pointerPos.y=-2,["pointermove","pointerdown"].forEach(function(y){return t.container.addEventListener(y,function(w){if(y==="pointerdown"&&(t.isPointerPressed=!0),!t.isPointerDragging&&w.type==="pointermove"&&(w.pressure>0||t.isPointerPressed)&&(w.pointerType==="mouse"||w.movementX===void 0||[w.movementX,w.movementY].some(function(R){return Math.abs(R)>1}))&&(t.isPointerDragging=!0),t.enablePointerInteraction){var S=T(t.container);t.pointerPos.x=w.pageX-S.left,t.pointerPos.y=w.pageY-S.top}function T(R){var P=R.getBoundingClientRect(),I=window.pageXOffset||document.documentElement.scrollLeft,F=window.pageYOffset||document.documentElement.scrollTop;return{top:P.top+F,left:P.left+I}}},{passive:!0})}),t.container.addEventListener("pointerup",function(y){t.isPointerPressed&&(t.isPointerPressed=!1,!(t.isPointerDragging&&(t.isPointerDragging=!1,!t.clickAfterDrag))&&requestAnimationFrame(function(){y.button===0&&t.onClick(t.hoverObj||null,y,t.intersection),y.button===2&&t.onRightClick&&t.onRightClick(t.hoverObj||null,y,t.intersection)}))},{passive:!0,capture:!0}),t.container.addEventListener("contextmenu",function(y){t.onRightClick&&y.preventDefault()}),t.renderer=new(a?px:Gr.WebGLRenderer)(Object.assign({antialias:!0,alpha:!0},c)),t.renderer.setPixelRatio(Math.min(2,window.devicePixelRatio)),t.container.appendChild(t.renderer.domElement),t.extraRenderers=f,t.extraRenderers.forEach(function(y){y.domElement.style.position="absolute",y.domElement.style.top="0px",y.domElement.style.pointerEvents="none",t.container.appendChild(y.domElement)}),t.postProcessingComposer=new oP(t.renderer),t.postProcessingComposer.addPass(new aP(t.scene,t.camera)),t.controls=new{trackball:JI,orbit:tP,fly:nP}[s](t.camera,t.renderer.domElement),s==="fly"&&(t.controls.movementSpeed=300,t.controls.rollSpeed=Math.PI/6,t.controls.dragToLook=!0),(s==="trackball"||s==="orbit")&&(t.controls.minDistance=.1,t.controls.maxDistance=t.skyRadius,t.controls.addEventListener("start",function(){t.controlsEngaged=!0}),t.controls.addEventListener("change",function(){t.controlsEngaged&&(t.controlsDragging=!0)}),t.controls.addEventListener("end",function(){t.controlsEngaged=!1,t.controlsDragging=!1})),[t.renderer,t.postProcessingComposer].concat(d1(t.extraRenderers)).forEach(function(y){return y.setSize(t.width,t.height)}),t.camera.aspect=t.width/t.height,t.camera.updateProjectionMatrix(),t.camera.position.z=1e3,t.scene.add(t.skysphere=new Gr.Mesh),t.skysphere.visible=!1,t.loadComplete=t.scene.visible=!A,window.scene=t.scene},update:function(e,t){if(e.width&&e.height&&(t.hasOwnProperty("width")||t.hasOwnProperty("height"))){var n,r=e.width,s=e.height;e.container.style.width="".concat(r,"px"),e.container.style.height="".concat(s,"px"),[e.renderer,e.postProcessingComposer].concat(d1(e.extraRenderers)).forEach(function(A){return A.setSize(r,s)}),e.camera.aspect=r/s;var o=e.viewOffset.slice(0,2);o.some(function(A){return A})&&(n=e.camera).setViewOffset.apply(n,[r,s].concat(d1(o),[r,s])),e.camera.updateProjectionMatrix()}if(t.hasOwnProperty("viewOffset")){var a,l=e.width,c=e.height,u=e.viewOffset.slice(0,2);u.some(function(A){return A})?(a=e.camera).setViewOffset.apply(a,[l,c].concat(d1(u),[l,c])):e.camera.clearViewOffset()}if(t.hasOwnProperty("skyRadius")&&e.skyRadius&&(e.controls.hasOwnProperty("maxDistance")&&t.skyRadius&&(e.controls.maxDistance=Math.min(e.controls.maxDistance,e.skyRadius)),e.camera.far=e.skyRadius*2.5,e.camera.updateProjectionMatrix(),e.skysphere.geometry=new Gr.SphereGeometry(e.skyRadius)),t.hasOwnProperty("backgroundColor")){var f=Cm(e.backgroundColor).alpha;f===void 0&&(f=1),e.renderer.setClearColor(new Gr.Color(cae(1,e.backgroundColor)),f)}t.hasOwnProperty("backgroundImageUrl")&&(e.backgroundImageUrl?new Gr.TextureLoader().load(e.backgroundImageUrl,function(A){A.colorSpace=Gr.SRGBColorSpace,e.skysphere.material=new Gr.MeshBasicMaterial({map:A,side:Gr.BackSide}),e.skysphere.visible=!0,e.onBackgroundImageLoaded&&setTimeout(e.onBackgroundImageLoaded),!e.loadComplete&&d()}):(e.skysphere.visible=!1,e.skysphere.material.map=null,!e.loadComplete&&d())),t.hasOwnProperty("showNavInfo")&&(e.navInfo.style.display=e.showNavInfo?null:"none"),t.hasOwnProperty("lights")&&((t.lights||[]).forEach(function(A){return e.scene.remove(A)}),e.lights.forEach(function(A){return e.scene.add(A)})),t.hasOwnProperty("objects")&&((t.objects||[]).forEach(function(A){return e.scene.remove(A)}),e.objects.forEach(function(A){return e.scene.add(A)}));function d(){e.loadComplete=e.scene.visible=!0}}});function $5e(i,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css",t==="top"&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=i:r.appendChild(document.createTextNode(i))}}var Y5e=`.scene-container .clickable {52885288 cursor: pointer;52895289 }`;$5e(Y5e);function cG(i,e){(e==null||e>i.length)&&(e=i.length);for(var t=0,n=Array(e);t<e;t++)n[t]=i[t];return n}function Z5e(i){if(Array.isArray(i))return cG(i)}function HS(i,e,t){return(e=n6e(e))in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}function K5e(i){if(typeof Symbol<"u"&&i[Symbol.iterator]!=null||i["@@iterator"]!=null)return Array.from(i)}function Q5e(){throw new TypeError(`Invalid attempt to spread non-iterable instance.5290-In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function yle(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,n)}return t}function p1(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?yle(Object(t),!0).forEach(function(n){HS(i,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):yle(Object(t)).forEach(function(n){Object.defineProperty(i,n,Object.getOwnPropertyDescriptor(t,n))})}return i}function J5e(i,e){if(i==null)return{};var t,n,r=e6e(i,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);for(n=0;n<s.length;n++)t=s[n],e.indexOf(t)===-1&&{}.propertyIsEnumerable.call(i,t)&&(r[t]=i[t])}return r}function e6e(i,e){if(i==null)return{};var t={};for(var n in i)if({}.hasOwnProperty.call(i,n)){if(e.indexOf(n)!==-1)continue;t[n]=i[n]}return t}function CP(i){return Z5e(i)||K5e(i)||i6e(i)||Q5e()}function t6e(i,e){if(typeof i!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var n=t.call(i,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function n6e(i){var e=t6e(i,"string");return typeof e=="symbol"?e:e+""}function i6e(i,e){if(i){if(typeof i=="string")return cG(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?cG(i,e):void 0}}function ble(i,e){var t=new e;return t._destructor&&t._destructor(),{linkProp:function(r){return{default:t[r](),onChange:function(o,a){a[i][r](o)},triggerUpdate:!1}},linkMethod:function(r){return function(s){for(var o=s[i],a=arguments.length,l=new Array(a>1?a-1:0),c=1;c<a;c++)l[c-1]=arguments[c];var u=o[r].apply(o,l);return u===o?this:u}}}}var r6e=["rendererConfig","waitForGlobeReady"],qS=p1(p1({},window.THREE?window.THREE:{AmbientLight:$A,DirectionalLight:XA,Vector2:Oe,REVISION:"185"}),{},{CSS2DRenderer:GM}),wle=ble("globe",IV),s6e=Object.assign.apply(Object,CP(["globeImageUrl","bumpImageUrl","globeTileEngineUrl","globeTileEngineMaxLevel","globeCurvatureResolution","showGlobe","showGraticules","showAtmosphere","atmosphereColor","atmosphereAltitude","onGlobeReady","pointsData","pointLat","pointLng","pointColor","pointAltitude","pointRadius","pointResolution","pointsMerge","pointsTransitionDuration","arcsData","arcStartLat","arcStartLng","arcStartAltitude","arcEndLat","arcEndLng","arcEndAltitude","arcColor","arcAltitude","arcAltitudeAutoScale","arcStroke","arcCurveResolution","arcCircularResolution","arcDashLength","arcDashGap","arcDashInitialGap","arcDashAnimateTime","arcsTransitionDuration","polygonsData","polygonGeoJsonGeometry","polygonCapColor","polygonCapMaterial","polygonSideColor","polygonSideMaterial","polygonStrokeColor","polygonAltitude","polygonCapCurvatureResolution","polygonsTransitionDuration","pathsData","pathPoints","pathPointLat","pathPointLng","pathPointAlt","pathResolution","pathColor","pathStroke","pathDashLength","pathDashGap","pathDashInitialGap","pathDashAnimateTime","pathTransitionDuration","heatmapsData","heatmapPoints","heatmapPointLat","heatmapPointLng","heatmapPointWeight","heatmapBandwidth","heatmapColorFn","heatmapColorSaturation","heatmapBaseAltitude","heatmapTopAltitude","heatmapsTransitionDuration","hexBinPointsData","hexBinPointLat","hexBinPointLng","hexBinPointWeight","hexBinResolution","hexMargin","hexTopCurvatureResolution","hexTopColor","hexSideColor","hexAltitude","hexBinMerge","hexTransitionDuration","hexPolygonsData","hexPolygonGeoJsonGeometry","hexPolygonColor","hexPolygonAltitude","hexPolygonResolution","hexPolygonMargin","hexPolygonUseDots","hexPolygonCurvatureResolution","hexPolygonDotResolution","hexPolygonsTransitionDuration","tilesData","tileLat","tileLng","tileAltitude","tileWidth","tileHeight","tileUseGlobeProjection","tileMaterial","tileCurvatureResolution","tilesTransitionDuration","particlesData","particlesList","particleLat","particleLng","particleAltitude","particlesSize","particlesSizeAttenuation","particlesColor","particlesTexture","ringsData","ringLat","ringLng","ringAltitude","ringColor","ringResolution","ringMaxRadius","ringPropagationSpeed","ringRepeatPeriod","labelsData","labelLat","labelLng","labelAltitude","labelRotation","labelText","labelSize","labelTypeFace","labelColor","labelResolution","labelIncludeDot","labelDotRadius","labelDotOrientation","labelsTransitionDuration","htmlElementsData","htmlLat","htmlLng","htmlAltitude","htmlElement","htmlElementVisibilityModifier","htmlTransitionDuration","objectsData","objectLat","objectLng","objectAltitude","objectRotation","objectFacesSurface","objectThreeObject","customLayerData","customThreeObject","customThreeObjectUpdate"].map(function(i){return HS({},i,wle.linkProp(i))}))),o6e=Object.assign.apply(Object,CP(["globeMaterial","globeTileEngineClearCache","getGlobeRadius","getCoords","toGeoCoords"].map(function(i){return HS({},i,wle.linkMethod(i))}))),Sle=ble("renderObjs",lG),a6e=Object.assign.apply(Object,CP(["width","height","backgroundColor","backgroundImageUrl","enablePointerInteraction"].map(function(i){return HS({},i,Sle.linkProp(i))}))),l6e=Object.assign.apply(Object,CP(["lights","postProcessingComposer"].map(function(i){return HS({},i,Sle.linkMethod(i))}))),Tle=Kr({props:p1(p1({onZoom:{triggerUpdate:!1},onGlobeClick:{triggerUpdate:!1},onGlobeRightClick:{triggerUpdate:!1},pointLabel:{default:"name",triggerUpdate:!1},onPointClick:{triggerUpdate:!1},onPointRightClick:{triggerUpdate:!1},onPointHover:{triggerUpdate:!1},arcLabel:{default:"name",triggerUpdate:!1},onArcClick:{triggerUpdate:!1},onArcRightClick:{triggerUpdate:!1},onArcHover:{triggerUpdate:!1},polygonLabel:{default:"name",triggerUpdate:!1},onPolygonClick:{triggerUpdate:!1},onPolygonRightClick:{triggerUpdate:!1},onPolygonHover:{triggerUpdate:!1},pathLabel:{default:"name",triggerUpdate:!1},onPathClick:{triggerUpdate:!1},onPathRightClick:{triggerUpdate:!1},onPathHover:{triggerUpdate:!1},onHeatmapClick:{triggerUpdate:!1},onHeatmapRightClick:{triggerUpdate:!1},onHeatmapHover:{triggerUpdate:!1},hexLabel:{triggerUpdate:!1},onHexClick:{triggerUpdate:!1},onHexRightClick:{triggerUpdate:!1},onHexHover:{triggerUpdate:!1},hexPolygonLabel:{triggerUpdate:!1},onHexPolygonClick:{triggerUpdate:!1},onHexPolygonRightClick:{triggerUpdate:!1},onHexPolygonHover:{triggerUpdate:!1},tileLabel:{default:"name",triggerUpdate:!1},onTileClick:{triggerUpdate:!1},onTileRightClick:{triggerUpdate:!1},onTileHover:{triggerUpdate:!1},particleLabel:{default:"name",triggerUpdate:!1},onParticleClick:{triggerUpdate:!1},onParticleRightClick:{triggerUpdate:!1},onParticleHover:{triggerUpdate:!1},labelLabel:{triggerUpdate:!1},onLabelClick:{triggerUpdate:!1},onLabelRightClick:{triggerUpdate:!1},onLabelHover:{triggerUpdate:!1},objectLabel:{default:"name",triggerUpdate:!1},onObjectClick:{triggerUpdate:!1},onObjectRightClick:{triggerUpdate:!1},onObjectHover:{triggerUpdate:!1},customLayerLabel:{default:"name",triggerUpdate:!1},onCustomLayerClick:{triggerUpdate:!1},onCustomLayerRightClick:{triggerUpdate:!1},onCustomLayerHover:{triggerUpdate:!1},pointerEventsFilter:{default:function(){return!0},triggerUpdate:!1},lineHoverPrecision:{default:.2,triggerUpdate:!1,onChange:function(e,t){t.renderObjs.lineHoverPrecision(e),t.renderObjs.pointsHoverPrecision(e)}},showPointerCursor:{default:!0,triggerUpdate:!1},globeOffset:{default:[0,0],triggerUpdate:!1,onChange:function(e,t){return Array.isArray(e)&&e.length===2&&t.renderObjs.viewOffset(e.map(function(n){return-n}))}}},s6e),a6e),methods:p1(p1({pauseAnimation:function(e){var t;return e.animationFrameRequestId!==null&&(cancelAnimationFrame(e.animationFrameRequestId),e.animationFrameRequestId=null),(t=e.globe)===null||t===void 0||t.pauseAnimation(),this},resumeAnimation:function(e){var t;return e.animationFrameRequestId===null&&this._animationCycle(),(t=e.globe)===null||t===void 0||t.resumeAnimation(),this},_animationCycle:function(e){e.renderObjs.tick(),e.tweenGroup.update(),e.animationFrameRequestId=requestAnimationFrame(this._animationCycle)},pointOfView:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=a();if(t.lat===void 0&&t.lng===void 0&&t.altitude===void 0)return r;var s,o=Object.assign({},r,t);if(["lat","lng","altitude"].forEach(function(c){return o[c]=+o[c]}),(s=e.povTween)===null||s===void 0||s.end(),!n)l(o);else{for(;r.lng-o.lng>180;)r.lng-=360;for(;r.lng-o.lng<-180;)r.lng+=360;e.tweenGroup.add(e.povTween=new uo(r).to(o,n).easing(Qr.Cubic.InOut).onUpdate(l).onComplete(function(){e.povTween=void 0,e.tweenGroup.remove(this)}).start())}return this;function a(){return e.globe.toGeoCoords(e.renderObjs.cameraPosition())}function l(c){var u=c.lat,f=c.lng,d=c.altitude;e.renderObjs.cameraPosition(e.globe.getCoords(u,f,d)),e.globe.setPointOfView(e.renderObjs.camera())}},getScreenCoords:function(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];var o=(t=e.globe).getCoords.apply(t,r);return e.renderObjs.getScreenCoords(o.x,o.y,o.z)},toGlobeCoords:function(e,t,n){var r=e.renderObjs.intersectingObjects(t,n).find(function(l){return(l.object.__globeObjType||l.object.parent.__globeObjType)==="globe"});if(!r)return null;var s=e.globe.toGeoCoords(r.point),o=s.lat,a=s.lng;return{lat:o,lng:a}},scene:function(e){return e.renderObjs.scene()},camera:function(e){return e.renderObjs.camera()},renderer:function(e){return e.renderObjs.renderer()},controls:function(e){return e.renderObjs.controls()},_destructor:function(e){this.pauseAnimation(),this.pointsData([]),this.arcsData([]),this.polygonsData([]),this.pathsData([]),this.heatmapsData([]),this.hexBinPointsData([]),this.hexPolygonsData([]),this.tilesData([]),this.particlesData([]),this.labelsData([]),this.htmlElementsData([]),this.objectsData([]),this.customLayerData([]),e.globe._destructor(),e.renderObjs._destructor()}},o6e),l6e),stateInit:function(e){var t=e.rendererConfig,n=e.waitForGlobeReady,r=n===void 0?!0:n,s=J5e(e,r6e),o=new IV(p1({waitForGlobeReady:r},s));return{globe:o,renderObjs:lG({controlType:"orbit",rendererConfig:t,waitForLoadComplete:r,extraRenderers:[new qS.CSS2DRenderer]}).skyRadius(o.getGlobeRadius()*500).showNavInfo(!1).objects([o]).lights([new qS.AmbientLight(13421772,Math.PI),new qS.DirectionalLight(16777215,.6*Math.PI)]),tweenGroup:new hg}},init:function(e,t){var n=this;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.style.position="relative";var r=document.createElement("div");t.container.appendChild(r),t.renderObjs(r),t.globe.rendererSize(t.renderObjs.renderer().getSize(new qS.Vector2)),this.pointOfView({altitude:2.5});var s=t.globe.getGlobeRadius(),o=t.renderObjs.controls();t.renderObjs.camera().near=.05,o.minDistance=s+Math.max(.001,t.renderObjs.camera().near*1.1),o.maxDistance=s*100,o.enablePan=!1,o.enableDamping=!0,o.dampingFactor=.1,o.rotateSpeed=.3,o.zoomSpeed=.3,o.zoomToCursor=!0,o.addEventListener("change",function(){o.target.setScalar(0);var c=n.pointOfView();o.rotateSpeed=c.altitude*.3,o.zoomSpeed=Math.sqrt(c.altitude)*.5,t.globe.setPointOfView(t.renderObjs.camera()),t.onZoom&&t.onZoom(c)});var a=function(u){for(var f=u;f&&!f.hasOwnProperty("__globeObjType");)f=f.parent;return f},l={point:function(u){return u},arc:function(u){return u},polygon:function(u){return u.data},path:function(u){return u},heatmap:function(u){return u},hexbin:function(u){return u},hexPolygon:function(u){return u},tile:function(u){return u},particles:function(u,f){return!f||!f.hasOwnProperty("index")||u.length<=f.index?u:u[f.index]},label:function(u){return u},object:function(u){return u},custom:function(u){return u}};qS.REVISION<155&&(t.renderObjs.renderer().useLegacyLights=!1),t.renderObjs.hoverFilter(function(c){var u=a(c);if(!u)return!1;var f=u.__globeObjType;if(f!=="globe"&&!l.hasOwnProperty(f))return!1;var d=l.hasOwnProperty(f)&&u.__data?l[f](u.__data):null;return["points","hexBinPoints"].some(function(A){return A===f})&&Array.isArray(d)?!1:t.pointerEventsFilter(u,d)}).tooltipContent(function(c,u){var f={point:t.pointLabel,arc:t.arcLabel,polygon:t.polygonLabel,path:t.pathLabel,hexbin:t.hexLabel,hexPolygon:t.hexPolygonLabel,tile:t.tileLabel,particles:t.particleLabel,label:t.labelLabel,object:t.objectLabel,custom:t.customLayerLabel},d=a(c),A=d&&d.__globeObjType;return d&&A&&f.hasOwnProperty(A)&&l.hasOwnProperty(A)&&st(f[A])(l[A](d.__data,u))||""}).onHover(function(c,u,f){var d={point:t.onPointHover,arc:t.onArcHover,polygon:t.onPolygonHover,path:t.onPathHover,heatmap:t.onHeatmapHover,hexbin:t.onHexHover,hexPolygon:t.onHexPolygonHover,tile:t.onTileHover,particles:t.onParticleHover,label:t.onLabelHover,object:t.onObjectHover,custom:t.onCustomLayerHover},A={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},y=a(c);if(y&&!d.hasOwnProperty(y.__globeObjType)&&(y=null),y!==t.hoverObj){var w,S=t.hoverObj?t.hoverObj.__globeObjType:null,T=t.hoverData,R=y?y.__globeObjType:null,P=(w=y)!==null&&w!==void 0&&w.__data?l[R](y.__data,f):null;S&&S!==R&&d[S]&&d[S](null,T||null),R&&d[R]&&d[R](P,S===R?T:null),t.renderObjs.renderer().domElement.classList[R&&A[R]&&st(t.showPointerCursor)(R,P)?"add":"remove"]("clickable"),t.hoverObj=y,t.hoverData=P}}).onClick(function(c,u,f){if(c){var d={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}).onRightClick(function(c,u,f){if(c){var d={globe:t.onGlobeRightClick,point:t.onPointRightClick,arc:t.onArcRightClick,polygon:t.onPolygonRightClick,path:t.onPathRightClick,heatmap:t.onHeatmapRightClick,hexbin:t.onHexRightClick,hexPolygon:t.onHexPolygonRightClick,tile:t.onTileRightClick,particles:t.onParticleRightClick,label:t.onLabelRightClick,object:t.onObjectRightClick,custom:t.onCustomLayerRightClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}),this._animationCycle()}});var Cle=4,Rx=100,XS=Rx+.2,tp=8,c6e=96,Rle=.045,Ile=.08;function Ix(i,e,t){let n=(90-i)*Math.PI/180,r=(90-e)*Math.PI/180;return[t*Math.sin(n)*Math.cos(r),t*Math.cos(n),t*Math.sin(n)*Math.sin(r)]}var Yn=null,IP="",Fs={group:null,tiles:new Map,key:"",lens:""},Mo={group:null,cell:null,fitKey:""},au={group:null,key:""},u6e=180,hG=null,Px=new Map,DP=new Map,Ele=new Map;function Ple(){let i=LT(U.world)==="sphere"&&ch(U.world)!==null;ge.globeToggle.hidden=!i,Lle(),!i&&Yn&&(WS(),Fs.group=null,Mo.group=null,Mo.cell=null,au.group=null,au.key="",Yn._destructor(),Yn=null,IP="",hG=null,ge.globe.replaceChildren())}function NP(){U.globeActive?Lle():Fle()}var jS=2.5,PP=2,Lx=.08,FP=4;function h6e(i){let e=Number.isFinite(i)?i:PP;return cs(jS/2**(e-PP),Lx,FP)}function dG(i){let e=Number.isFinite(i)?Math.max(i,Lx/2):jS,t=(U.lens?.maxZoom??PP)+2;return cs(PP+Math.log2(jS/e),0,t)}function pG(i){if(!Yn||!U.globeActive)return;let e=Yn.pointOfView(),t=cs((Number.isFinite(e.altitude)?e.altitude:jS)/2**i,Lx,FP);Yn.pointOfView({altitude:t},180)}function Lle(){let i=ch(U.world),e=U.engine?.getView();if(Yn&&U.globeActive&&i&&e){let t=Yn.pointOfView(),[n,r]=i.toWorld(t.lat,t.lng);Number.isFinite(n)&&Number.isFinite(r)&&(e.cancelAnimations(),e.setCenter([n,-r]),e.setZoom(dG(t.altitude)))}U.globeActive=!1,ge.globe.hidden=!0,ge.globeToggle.setAttribute("aria-pressed","false"),ge.viewport.hidden=!1,WS(),U.overviewKey="",document.dispatchEvent(new Event("atlas:globe-camera"))}function Dle(){if(!Yn||!U.globeActive)return null;let i=Yn.pointOfView();return{lat:i.lat,lng:i.lng}}function Nle(i,e,t){if(!Yn)return;let n=Yn.pointOfView().altitude;Yn.pointOfView({lat:i,lng:e,altitude:n},t?180:0)}async function Fle(){let i=ch(U.world);if(!i)return;if(U.globeActive=!0,ge.viewport.hidden=!0,ge.globe.hidden=!1,ge.globeToggle.setAttribute("aria-pressed","true"),U.overviewKey="",!Yn){Yn=Tle({animateIn:!1})(ge.globe).backgroundColor("#0b0e12").showAtmosphere(!0).atmosphereColor("#8a6f5b").atmosphereAltitude(.12).objectLat(o=>o.lat).objectLng(o=>o.lng).objectAltitude(o=>o.pin===U.selectedPin?.03:.014).objectThreeObject(o=>w6e(o.pin)).objectLabel(o=>o.pin.location.title).onObjectClick(o=>My(o.pin)).onObjectHover(o=>{ge.globe.style.cursor=o?"pointer":""}).onZoom(()=>{document.dispatchEvent(new Event("atlas:globe-camera")),Mle(),RP(),S6e(),AG()}),document.addEventListener("atlas:selection",b6e),document.addEventListener("atlas:filters",uG),document.addEventListener("atlas:grid",()=>{LP(),uG(),RP()}),document.addEventListener("atlas:labels",RP),Yn.onGlobeClick(({lat:o,lng:a})=>{if(!U.gridEnabled)return;let l=ch(U.world);if(!l)return;let[c,u]=l.toWorld(o,a),f=Ts().descendTarget(U.gridCell,[c,-u]);f&&uA(f)});let s=Yn.controls();s.minDistance=Rx*(1+Lx),s.maxDistance=Rx*(1+FP),Fs.group=new Br,Yn.scene().add(Fs.group),Mo.group=new Br,Yn.scene().add(Mo.group),au.group=new Br,Yn.scene().add(au.group),window.__atlasGlobe={detail:Fs,grid:Mo,labels:au,sprites:Px}}gG();let e=U.engine?.getView(),t=e?.getCenter();if(t&&Number.isFinite(t[0])&&Number.isFinite(t[1])){let[s,o]=i.toLatLng(t[0],-t[1]);Yn.pointOfView({lat:s,lng:o,altitude:h6e(e.getZoom())})}else Yn.pointOfView({lat:10,lng:0,altitude:jS});let n=U.lens||U.world.lenses[0],r=`${U.volume.stamp}:${U.world.slug}:${n.tiles}`;if(IP!==r){IP=r;let s=await E6e(n);s&&IP===r&&Yn.globeImageUrl(s)}hG!==U.pins&&(hG=U.pins,Px.clear(),DP.clear(),Yn.objectsData(T6e(i))),uG(),kle(),Mle(),LP(),RP(),document.dispatchEvent(new Event("atlas:globe-camera"))}function LP(){if(!Yn||!Mo.group)return;for(let t of[...Mo.group.children])Mo.group.remove(t),t.geometry?.dispose(),t.material?.map?.dispose(),t.material?.dispose();let i=U.globeActive?ch(U.world):null;if(!i||!U.gridEnabled){Mo.cell=null;return}let e=Ts();for(let t of TE()){let n=Ble(t.ring,i),r=mG(n),s=SE(t,{subgridVisible:U.subgridVisible,labelled:p6e(t,r)});if(s){if(s.fill){let o=Ole(e.center(t.hash),i);Mo.group.add(m6e(n,o,s.fill))}Mo.group.add(v6e(n,s.line)),s.label&&Mo.group.add(_6e(s.label,r))}}Mo.cell!==null&&Mo.cell!==U.gridCell&&x6e(i),Mo.cell=U.gridCell,AG()}function Ble(i,e){return i.map(([t,n])=>e.toLatLng(t,-n))}function Ole(i,e){return e.toLatLng(i[0],-i[1])}function f6e(i){let e=[];for(let t=0;t<i.length-1;t++){let[n,r]=i[t],[s,o]=i[t+1],a=Math.max(Math.abs(s-n),Math.abs(o-r)),l=cs(Math.ceil(a/2),1,48);for(let c=0;c<l;c++){let u=c/l;e.push([n+(s-n)*u,r+(o-r)*u])}}return e}function mG(i){let e=-1/0,t=1/0,n=1/0,r=-1/0;for(let[s,o]of i)e=Math.max(e,s),t=Math.min(t,s),n=Math.min(n,o),r=Math.max(r,o);return{north:e,south:t,west:n,east:r}}function d6e(i){let e=Yn.pointOfView(),t=Math.max(e.altitude,Lx/2),n=50*Math.PI/180,r=2*t*Rx*Math.tan(n/2)/Math.max(1,ge.globe.clientHeight||1),s=Rx*Math.PI/180/r;return{width:Math.abs(i.east-i.west)*s,height:Math.abs(i.north-i.south)*s}}function p6e(i,e){let n=i.role==="neighbor"?Vi.neighborLabelSizePx:Vi.labelSizePx,r=`900 ${n}px ${Vi.labelFont}`,s=d6e(e);return $N(i.hash,r)+9<=s.width&&n+6<=s.height}function m6e(i,e,t){let n=XS+.12,r=f6e(i),s=mG(i),o=Math.max(s.east-s.west,s.north-s.south),a=cs(Math.ceil(o/6),2,24),l=Ix(e[0],e[1],n),c=r.map(([T,R])=>Ix(T,R,n)),u=[...l],f=[];for(let T=1;T<=a;T++){let R=T/a;for(let P of c){let I=l[0]+(P[0]-l[0])*R,F=l[1]+(P[1]-l[1])*R,D=l[2]+(P[2]-l[2])*R,L=n/(Math.hypot(I,F,D)||1);u.push(I*L,F*L,D*L)}}let d=r.length,A=(T,R)=>1+(T-1)*d+R%d;for(let T=0;T<d;T++)f.push(0,A(1,T),A(1,T+1));for(let T=1;T<a;T++)for(let R=0;R<d;R++)f.push(A(T,R),A(T+1,R),A(T,R+1)),f.push(A(T,R+1),A(T+1,R),A(T+1,R+1));let y=new Xn;y.setAttribute("position",new Ln(u,3)),y.setIndex(f);let w=new fs({color:t.color,transparent:!0,opacity:t.opacity,depthWrite:!1,side:2}),S=new Hn(y,w);return S.renderOrder=1,S}function RP(){if(!Yn||!au.group)return;let i=U.globeActive&&U.labelsHeld,e=i?Yn.pointOfView():null,t=i?`${Math.round(e.lat)}:${Math.round(e.lng)}:${e.altitude.toFixed(2)}:${U.gridSystem}:${U.gridCell}`:"";if(t===au.key)return;au.key=t;for(let r of[...au.group.children])au.group.remove(r),r.material?.map?.dispose(),r.material?.dispose();if(!i)return;let n=[];for(let[r,s]of Px){if(!s.visible)continue;let o=DP.get(r);if(!o)continue;let a=A6e(e,o);a>85||n.push({pin:r,stood:o,distance:a})}n.sort((r,s)=>r.distance-s.distance);for(let{pin:r,stood:s}of n.slice(0,u6e))au.group.add(g6e(r,s));AG()}function AG(){if(!Yn)return;let i=Yn.camera().position,e=i.length()||1,t=Rx/e;for(let n of[Mo.group,au.group])if(n)for(let r of n.children){if(!r.isSprite)continue;let s=r.position,o=s.length()||1,a=(s.x*i.x+s.y*i.y+s.z*i.z)/(o*e);r.visible=a>t}}function A6e(i,e){let t=Math.PI/180,n=Math.sin(i.lat*t)*Math.sin(e.lat*t)+Math.cos(i.lat*t)*Math.cos(e.lat*t)*Math.cos((i.lng-e.lng)*t);return Math.acos(cs(n,-1,1))*180/Math.PI}function g6e(i,e){let t=i.location.title,n=document.createElement("canvas"),r=n.getContext("2d"),s="600 26px Inter, system-ui, sans-serif";r.font=s;let o=Math.ceil(r.measureText(t).width)+24;n.width=o,n.height=40,r.font=s,r.textAlign="center",r.textBaseline="middle",r.fillStyle="rgba(10, 13, 17, 0.78)",r.fillRect(0,0,o,40),r.fillStyle="#e6ebf0",r.fillText(t,o/2,21);let a=new Rh({depthTest:!1,depthWrite:!1,sizeAttenuation:!1,transparent:!0});new yl().load(n.toDataURL("image/png"),u=>{a.map=u,a.needsUpdate=!0});let l=new UA(a);l.position.set(...Ix(e.lat,e.lng,XS+.4)),l.renderOrder=4;let c=.028;return l.scale.set(c*o/40,c,1),l.center.set(.5,0),l}function v6e(i,e){let t=[];for(let o=0;o<i.length-1;o++){let[a,l]=i[o],[c,u]=i[o+1],f=Math.max(Math.abs(c-a),Math.abs(u-l)),d=cs(Math.ceil(f/2),4,48);for(let A=0;A<d;A++){let y=A/d;t.push(...Ix(a+(c-a)*y,l+(u-l)*y,XS+.25))}}t.push(...t.slice(0,3));let n=new ym;n.setPositions(t);let r=new Rf({color:e.color,transparent:!0,opacity:e.opacity,linewidth:e.widthPx,depthWrite:!1});r.resolution.set(ge.globe.clientWidth||1,ge.globe.clientHeight||1);let s=new yx(n,r);return s.computeLineDistances(),s.renderOrder=2,s}function _6e(i,e){let n=i.sizePx*2,r=`500 ${n}px ${Vi.labelFont}`,s=`900 ${n}px ${Vi.labelFont}`,o=document.createElement("canvas"),a=o.getContext("2d");a.font=r;let l=i.prefix?a.measureText(i.prefix).width:0;a.font=s;let c=a.measureText(i.final).width,u=10;o.width=Math.ceil(l+c+u*2),o.height=n+u*1.4,a.fillStyle=i.chip,a.fillRect(0,0,o.width,o.height),a.textBaseline="middle";let f=o.height/2+2;i.prefix&&(a.font=r,a.fillStyle=i.color,a.globalAlpha=Vi.prefixAlpha*i.textAlpha,a.fillText(i.prefix,u,f)),a.font=s,a.globalAlpha=i.textAlpha,a.fillStyle=i.color,a.fillText(i.final,u+l,f),a.globalAlpha=1;let d=new Rh({depthTest:!1,depthWrite:!1,transparent:!0,sizeAttenuation:!1});new yl().load(o.toDataURL("image/png"),R=>{d.map=R,d.needsUpdate=!0});let A=new UA(d),y=Math.abs(e.north-e.south)*.02,w=Math.abs(e.east-e.west)*.02;A.position.set(...Ix(e.south+y,e.east-w,XS+.35));let S=Math.max(1,ge.globe.clientHeight||1),T=o.height/2/S;return A.scale.set(T*o.width/o.height,T,1),A.center.set(1,0),A.renderOrder=3,A}function x6e(i){let t=TE().find(l=>l.role==="scope"||l.role==="leaf");if(!t)return;let[n,r]=Ole(Ts().center(t.hash),i),s=mG(Ble(t.ring,i)),o=Math.max(s.east-s.west,s.north-s.south),a=cs(o/45,Lx,FP);Yn.pointOfView({lat:n,lng:r,altitude:a},400)}function Mle(){if(!Yn||!Fs.group)return;let i=U.globeActive?U.lens||U.world.lenses[0]:null;if(!i){WS();return}Fs.lens!==i.tiles&&(WS(),Fs.lens=i.tiles);let e=Yn.pointOfView(),t=Math.min(Math.round(dG(e.altitude))+1,i.maxZoom);if(t<=Cle||!i.formats[t]){WS(),Fs.key="";return}let n=2**t,r=n/2,s=360/n,o=Math.acos(1/(1+e.altitude))*180/Math.PI+s,a=Math.floor(((e.lng+180)%360+360)%360/s),l=Math.floor((90-e.lat)/s),c=Math.ceil(o/s);for(;(2*c+1)**2>c6e&&c>1;)c--;let u=new Set;for(let d=-c;d<=c;d++){let A=l+d;if(!(A<0||A>=r))for(let y=-c;y<=c;y++){let w=((a+y)%n+n)%n;u.add(`${t}/${w}/${A}`)}}let f=`${i.tiles}:${[...u].sort().join(",")}`;if(f!==Fs.key){Fs.key=f;for(let[d,A]of Fs.tiles)u.has(d)||(Fs.group.remove(A),Ule(A),Fs.tiles.delete(d));for(let d of u){if(Fs.tiles.has(d))continue;let[A,y,w]=d.split("/").map(Number),S=y6e(i,A,y,w);Fs.tiles.set(d,S),Fs.group.add(S)}}}function y6e(i,e,t,n){let r=360/2**e,s=-180+t*r,o=90-n*r,a=[],l=[],c=[];for(let w=0;w<=tp;w++){let S=o-w/tp*r;for(let T=0;T<=tp;T++){let R=s+T/tp*r;a.push(...Ix(S,R,XS)),l.push(T/tp,1-w/tp)}}let u=tp+1;for(let w=0;w<tp;w++)for(let S=0;S<tp;S++){let T=w*u+S;c.push(T,T+u,T+1),c.push(T+1,T+u,T+u+1)}let f=new Xn;f.setAttribute("position",new Ln(a,3)),f.setAttribute("uv",new Ln(l,2)),f.setIndex(c);let d=new fs,A=new Hn(f,d);A.visible=!1;let y=`${U.volume.base}/tiles/${i.tiles}/${e}/${t}/${n}.${i.formats[e]}`;return new yl().load(y,w=>{w.colorSpace=Fr,d.map=w,d.needsUpdate=!0,A.visible=!0}),A}function WS(){if(Fs.group){for(let i of Fs.tiles.values())Fs.group.remove(i),Ule(i);Fs.tiles.clear(),Fs.key=""}}function Ule(i){i.geometry.dispose(),i.material.map?.dispose(),i.material.dispose()}function kle(){if(Yn){for(let[i,e]of Px){let t=i===U.selectedPin;e.material=Vle(i.category,t);let n=t?Ile:Rle;e.scale.set(n,n,1)}Yn.objectAltitude(i=>i.pin===U.selectedPin?.03:.014)}}function b6e(){if(!Yn||!U.globeActive)return;kle();let i=DP.get(U.selectedPin);if(i){let e=Yn.pointOfView().altitude;Yn.pointOfView({lat:i.lat,lng:i.lng,altitude:e},600)}}function zle(i){return!(i.filteredHidden||U.hiddenCategories.has(i.category.id)||U.gridEnabled&&U.gridCell&&!Pp(i))}function uG(){if(!(!Yn||!U.globeActive))for(let[i,e]of Px)e.visible=zle(i)}function w6e(i){let e=new UA(Vle(i.category,i===U.selectedPin)),t=i===U.selectedPin?Ile:Rle;return e.scale.set(t,t,1),e.visible=zle(i),Px.set(i,e),e}function Vle(i,e){let t=`${jy(i)}:${e?"ringed":"plain"}`,n=Ele.get(t);if(n)return n;n=new Rh({depthWrite:!1,sizeAttenuation:!1}),Ele.set(t,n);let r=U.markerIcons.get(jy(i)),s=o=>{let a=document.createElement("canvas");a.width=80,a.height=80;let l=a.getContext("2d");o?l.drawImage(o,8,8,64,64):(l.font="900 26px Inter, system-ui, sans-serif",l.textAlign="center",l.textBaseline="middle",l.lineWidth=6,l.strokeStyle=aA(),l.strokeText(bu(i.title),40,41),l.fillStyle=lA(i),l.fillText(bu(i.title),40,41)),e&&(l.beginPath(),l.arc(40,40,36,0,Math.PI*2),l.lineWidth=5,l.strokeStyle="#ffffff",l.stroke()),new yl().load(a.toDataURL("image/png"),c=>{n.map=c,n.needsUpdate=!0})};if(r){let o=new Image;o.onload=()=>s(o),o.onerror=()=>s(null),o.src=r}else s(null);return n}function Gle(){U.globeActive&&Fle()}function gG(){!Yn||ge.globe.hidden||(Yn.width(ge.globe.clientWidth).height(ge.globe.clientHeight),LP())}function S6e(){if(!Yn||!U.globeActive||!U.gridEnabled)return;let i=Yn.pointOfView(),e=`${U.gridSystem}:${U.gridCell}:${Math.round(dG(i.altitude)*2)}`;e!==Mo.fitKey&&(Mo.fitKey=e,LP())}function T6e(i){let e=[];for(let t of U.pins){let[n,r]=lv(t.location.lat,t.location.lng),[s,o]=i.toLatLng(n,-r);e.push({lat:s,lng:o,pin:t}),DP.set(t,{lat:s,lng:o})}return e}async function E6e(i){let e=Math.min(Cle,i.maxZoom),t=i.formats[e];if(!t)return null;let n=2**e,r=n/2,s=document.createElement("canvas");s.width=n*256,s.height=r*256;let o=s.getContext("2d"),a=[];for(let l=0;l<r;l++)for(let c=0;c<n;c++){let u=`${U.volume.base}/tiles/${i.tiles}/${e}/${c}/${l}.${t}`;a.push(M6e(u).then(f=>{f&&o.drawImage(f,c*256,l*256,256,256)}))}return await Promise.all(a),s.toDataURL("image/jpeg",.92)}function M6e(i){return new Promise(e=>{let t=new Image;t.onload=()=>e(t),t.onerror=()=>e(null),t.src=i})}function qle(){let i=U.lens,e=ge.overviewCanvas,t=e.getContext("2d"),n=Of(),r=U.volume.tileGrid.size,s=U.volume.tileGrid.tileSize,o=n[2]-n[0],a=n[3]-n[1],l=0;for(;l<i.fullZoom&&Math.max(o,a)/r*s*2**l<168;)l++;let c=s*2**l/r;e.width=Math.max(1,Math.round(o*c)),e.height=Math.max(1,Math.round(a*c)),t.clearRect(0,0,e.width,e.height),i.background&&(t.fillStyle=i.background,t.fillRect(0,0,e.width,e.height));let u=++U.overviewRun,f=i.formats[l],d=Math.floor(n[0]/r*2**l),A=Math.ceil(n[2]/r*2**l),y=Math.floor(-n[3]/r*2**l),w=Math.ceil(-n[1]/r*2**l);for(let S=y;S<w;S++)for(let T=d;T<A;T++){if(!f||!OP(i,l,T,S))continue;let R=new Image;R.onload=()=>{U.overviewRun===u&&t.drawImage(R,T*s-n[0]*c,S*s+n[3]*c,s,s)},R.src=`${U.volume.base}/tiles/${encodeURIComponent(i.tiles)}/${l}/${T}/${S}.${f}`}Dx()}function Dx(){let i=Dle();if(i){let w=ch(U.world);if(!w||!U.lens)return;let S=Of(),[T,R]=w.toWorld(i.lat,i.lng),P=ge.overviewCanvas,I=cs((T-S[0])/(S[2]-S[0]),0,1),F=cs((R+S[3])/(S[3]-S[1]),0,1);U.overviewKey="",ge.overviewShelf.hidden=!1;let D=ge.overviewViewport.style,L=22;D.left=`${I*P.width-L/2}px`,D.top=`${F*P.height-L/2}px`,D.width=`${L}px`,D.height=`${L}px`;return}let e=U.engine?.getView();if(!e||!U.lens)return;let t=Of(),n=e.calculateExtent(U.engine.getSize()),r=t[2]-t[0],s=t[3]-t[1],o=(e.getResolution()||0)*4,a=n[0]<=t[0]+o&&n[1]<=t[1]+o&&n[2]>=t[2]-o&&n[3]>=t[3]-o,l=a?"hidden":n.map(Math.round).join(",");if(l===U.overviewKey||(U.overviewKey=l,ge.overviewShelf.hidden=a,a))return;let c=ge.overviewCanvas,u=cs((n[0]-t[0])/r,0,1),f=cs((n[2]-t[0])/r,0,1),d=cs((t[3]-n[3])/s,0,1),A=cs((t[3]-n[1])/s,0,1),y=ge.overviewViewport.style;y.left=`${u*c.width}px`,y.top=`${d*c.height}px`,y.width=`${Math.max(8,(f-u)*c.width)}px`,y.height=`${Math.max(8,(A-d)*c.height)}px`}function BP(i,e=!0){U.overviewDocked=i,i&&U.overviewPointer!==null&&(U.overviewPointer=null,Nx()),ge.overviewShelf.classList.toggle("is-docked",i),ge.overviewDock.setAttribute("aria-expanded",String(!i));let t=i?"Bring the overview back":"Put the overview away";ge.overviewDock.setAttribute("aria-label",t),ge.overviewDock.title=t,e&&xu()}function vG(i,e){let t=ge.overviewCanvas.getBoundingClientRect(),n=Of(),r=(a,l,c)=>cs((a-l)/(c-l),0,1);if(U.globeActive){let a=ch(U.world);if(!a)return;let l=n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),c=-n[3]+r(i.clientY,t.top,t.bottom)*(n[3]-n[1]),[u,f]=a.toLatLng(l,c);Nle(u,f,e);return}let s=U.engine?.getView();if(!s||!U.lens)return;let o=[n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),n[3]-r(i.clientY,t.top,t.bottom)*(n[3]-n[1])];if(e){s.animate({center:o,duration:180});return}s.cancelAnimations(),s.setCenter(o)}function mc(i){return new oY({updateWhileAnimating:!0,...i})}function Hle(){let i=U.volume.tileGrid.size,e=[0,-i,i,0];U.projection=new xp({code:"ATLAS:PIXELS",units:"pixels",extent:e}),U.sources={grid:new dd({wrapX:!1}),gridContext:new dd({wrapX:!1}),zoneScrim:new dd({wrapX:!1}),zones:new dd({wrapX:!1}),zoneTitles:new dd({wrapX:!1}),text:new dd({wrapX:!1}),pins:new dd({wrapX:!1}),priority:new dd({wrapX:!1})},U.layers={raster:new d6({zIndex:0}),rasterDetail:new d6({zIndex:1}),grid:mc({source:U.sources.grid,style:XN,renderOrder:Bc,renderBuffer:40,zIndex:5}),zoneScrim:mc({source:U.sources.zoneScrim,style:AX,zIndex:6}),zones:mc({source:U.sources.zones,style:gX,renderBuffer:32,zIndex:10}),zoneTitles:mc({source:U.sources.zoneTitles,style:vX,renderOrder:Bc,renderBuffer:160,zIndex:20}),zoneTitleDetail:mc({source:U.sources.zoneTitles,style:_X,renderOrder:Bc,renderBuffer:160,zIndex:44}),text:mc({source:U.sources.text,style:uX,renderOrder:Bc,renderBuffer:220,zIndex:30}),textDetail:mc({source:U.sources.text,style:hX,renderOrder:Bc,renderBuffer:220,zIndex:45}),zoneText:mc({source:U.sources.text,style:fX,renderOrder:Bc,renderBuffer:220,zIndex:41}),pins:mc({source:U.sources.pins,style:aX,renderOrder:Bc,renderBuffer:48,zIndex:40}),zonePins:mc({source:U.sources.pins,style:lX,renderOrder:Bc,renderBuffer:48,zIndex:42}),pinLabels:mc({source:U.sources.pins,style:cX,renderOrder:Bc,renderBuffer:180,zIndex:45}),gridContext:mc({source:U.sources.gridContext,style:XN,renderOrder:Bc,renderBuffer:40,zIndex:48}),priority:mc({source:U.sources.priority,style:dX,renderOrder:Bc,renderBuffer:220,zIndex:50})},U.engine=new D$({target:ge.viewport,layers:Object.values(U.layers),controls:qE({attribution:!1,rotate:!1,zoom:!1}),interactions:YE({onFocusOnly:!1}),view:kP(5)}),U.engine.on("movestart",()=>{U.engine.getViewport().classList.add("is-dragging")}),U.engine.on("moveend",()=>{U.engine.getViewport().classList.remove("is-dragging"),U.overviewPointer===null&&Nx()}),U.engine.on("postrender",Dx),ge.viewport.addEventListener("wheel",()=>{document.activeElement!==ge.viewport&&ge.viewport.focus({preventScroll:!0})},{capture:!0,passive:!0}),U.engine.on("singleclick",t=>{if(U.gridEnabled){let r=U.engine.forEachFeatureAtPixel(t.pixel,s=>{let o=s.get("gridCell");return o&&o.role!=="leaf"&&o.role!=="scope"?o:null},{hitTolerance:1,layerFilter:s=>s===U.layers.grid||s===U.layers.gridContext});if(r){uA(r.hash);return}}let n=U.engine.forEachFeatureAtPixel(t.pixel,(r,s)=>UP(s)&&r.get("pin")||null,{hitTolerance:5,layerFilter:UP});n&&My(n)}),U.engine.on("pointermove",t=>{if(t.dragging){cv(null);return}let n=U.engine.forEachFeatureAtPixel(t.pixel,(o,a)=>UP(a)&&o.get("pin")||null,{hitTolerance:4,layerFilter:UP}),r=n&&lh(n.category)==="text"?null:n;cv(r||null);let s=U.gridEnabled&&U.engine.hasFeatureAtPixel(t.pixel,{layerFilter:o=>o===U.layers.grid||o===U.layers.gridContext});U.engine.getTargetElement().style.cursor=n||s?"pointer":""}),U.engine.getViewport().addEventListener("pointerleave",()=>cv(null))}function UP(i){return i===U.layers.pins||i===U.layers.zonePins||i===U.layers.pinLabels||i===U.layers.priority||i===U.layers.text||i===U.layers.textDetail||i===U.layers.zoneText}function kP(i,e=null){let t=U.volume.tileGrid.size,n=e||[0,-t,t,0];return new Hl({projection:U.projection,center:[(n[0]+n[2])/2,(n[1]+n[3])/2],resolutions:_G(i),minZoom:0,maxZoom:i,extent:n,constrainResolution:!1,smoothResolutionConstraint:!1,showFullExtent:!0,zoom:0})}function _G(i){let e=U.volume.tileGrid.size/U.volume.tileGrid.tileSize;return Array.from({length:i+1},(t,n)=>e/2**n)}async function sd(i,e){U.volume=U.catalog.volumes.find(r=>r.slug===i)||U.catalog.volumes[0],U.engine||Hle(),!e&&!U.restore&&(U.restore=ev(U.volume.slug)),ge.volume.value=U.volume.slug,km(ge.world,U.volume.worlds,"title"),ge.world.disabled=U.volume.worlds.length===1,ge.world.title=ge.world.disabled?"This volume has one world":"Choose a world";let t=U.restore?.volume===U.volume.slug?U.restore:null,n=e&&U.volume.worlds.find(r=>r.slug===e)||t&&U.volume.worlds.find(r=>r.slug===t.world);await xG((n||U.volume.worlds[0]).slug)}async function xG(i){let e=U.volume.worlds.find(s=>s.slug===i)||U.volume.worlds[0],t=++U.worldRun;ge.loading.hidden=!1;let n;try{n=await BX(e)}catch(s){console.error(`world ${e.slug} failed to load`,s),U.worldRun===t&&(ge.loading.hidden=!0,AA());return}if(U.worldRun!==t)return;U.settling=!0,U.world=n,document.documentElement.style.setProperty("--icon-outset-color",aA()),ge.world.value=U.world.slug,km(ge.lens,U.world.lenses,"name"),ge.lensField.hidden=U.world.lenses.length<2,U.styleCache.clear(),cv(null),U.gridCell="",U.gridSystem="geohash",U.hiddenCategories.clear(),U.collapsedSections.clear(),U.collapsedSections.add("zones");for(let s of U.world.groups)for(let o of s.categories)o.visible||U.hiddenCategories.add(o.id);let r=U.restore?.map===U.world.slug?U.restore:null;r&&(U.hiddenCategories=new Set(r.hidden),U.collapsedSections=new Set(r.collapsed)),BP(!!U.restore?.overviewDocked,!1),AE(U.restore?!!U.restore.dockFolded:!0,!1),U.dockDismissed=!!U.restore?.dockDismissed,U.search="",ge.search.value="",ge.dock.hidden=!1,ed(),LX(),QN(),IX(),yG(r?cs(r.lens,0,U.world.lenses.length-1):0,!0),Ple(),U.restore=null,ge.sidebar.classList.remove("is-open"),ge.mobileLegend.setAttribute("aria-expanded","false"),vj(),U.settling=!1,xu()}function yG(i,e=!1){let t=U.lens;U.lens=U.world.lenses[i]||U.world.lenses[0];let n=U.lens,r=e?null:I6e(t,n),s=mh(n);if(ge.lens.value=String(U.world.lenses.indexOf(U.lens)),e)U.engine.setView(kP(s,Of()));else{let w=U.engine.getView(),S=kP(s,Of());S.setCenter(w.getCenter()),S.setZoom(w.getZoom()||0),U.engine.setView(S)}let o=++U.tileRun,a=0;U.tileStats={requested:0,loaded:0,errors:0,peakPending:0},ge.loading.hidden=!1;let l=w=>{w.on("tileloadstart",()=>{U.tileRun===o&&(a++,U.tileStats.requested++,U.tileStats.peakPending=Math.max(U.tileStats.peakPending,a))});let S=T=>{U.tileRun===o&&(a=Math.max(0,a-1),T?U.tileStats.errors++:U.tileStats.loaded++,a===0&&U.tileStats.loaded>0&&(ge.loading.hidden=!0))};return w.on("tileloadend",()=>S(!1)),w.on("tileloaderror",()=>S(!0)),w},c=(w,S)=>l(new Aj({projection:U.projection,tileGrid:new wy({extent:[0,-U.volume.tileGrid.size,U.volume.tileGrid.size,0],origin:[0,0],resolutions:_G(w),tileSize:U.volume.tileGrid.tileSize}),cacheSize:64,interpolate:n.interpolate,transition:0,wrapX:!1,tileUrlFunction:([T,R,P])=>{let I=n.formats[T];if(!(!I||R<0||P<0||!S(T,R,P)))return`${U.volume.base}/tiles/${encodeURIComponent(n.tiles)}/${T}/${R}/${P}.${I}`}})),u=n.fullZoom??n.maxZoom,f=c(u,(w,S,T)=>OP(n,w,S,T)),d=U.layers.raster.getSource();U.layers.raster.setSource(f),U.layers.raster.setExtent(Of()),U.layers.raster.setBackground(n.background||void 0),d?.clear();let A=U.layers.rasterDetail.getSource();n.maxZoom>u?(U.layers.rasterDetail.setSource(c(n.maxZoom,(w,S,T)=>w>u&&OP(n,w,S,T))),U.layers.rasterDetail.setExtent(Of()),U.layers.rasterDetail.setVisible(!0)):U.layers.rasterDetail.setVisible(!1),A?.clear(),Oy(),U.gridEnabled&&(Dc(),U.layers.pins.changed(),U.layers.text.changed(),U.layers.priority.changed()),U.overviewKey="",qle();let y=e&&U.restore?.map===U.world.slug?U.restore:null;if(U.renderedShard!==(n.shard||0)&&(QN(),Lc()),y?.center&&Number.isFinite(y.zoom)){let w=U.engine.getView();w.setCenter(y.center),w.setZoom(y.zoom),U.fitZoom=y.zoom,mA()}else e?requestAnimationFrame(P6e):(r&&U.engine.getView().animate({center:r,duration:200}),mA());xu()}function OP(i,e,t,n){let r=i.coverage?.[e];if(!r)return!0;let s=t-r.x,o=n-r.y;if(s<0||o<0||s>=r.w||o>=r.h)return!1;let a=R6e(i,e,r),l=o*r.w+s;return(a[l>>3]&1<<(l&7))!==0}function R6e(i,e,t){if(!t.decoded){let n=atob(t.bits),r=new Uint8Array(n.length);for(let s=0;s<n.length;s++)r[s]=n.charCodeAt(s);t.decoded=r}return t.decoded}function mh(i){return i.maxZoom+2}function Nx(){mA(),xu()}function I6e(i,e){if(!i||!e||!i.shard||!e.shard||i.shard===e.shard||!i.bounds||!e.bounds)return null;let n=U.engine?.getView()?.getCenter();if(!n)return null;let r=(n[0]-i.bounds.x)/i.bounds.width,s=(-n[1]-i.bounds.y)/i.bounds.height;return[e.bounds.x+cs(r,0,1)*e.bounds.width,-(e.bounds.y+cs(s,0,1)*e.bounds.height)]}function Wle(){let e=document.querySelector(".app-shell").classList.toggle("sidebar-collapsed");ge.mobileLegend.setAttribute("aria-expanded",String(!e)),requestAnimationFrame(()=>U.engine?.updateSize())}function Of(){let i=U.volume.tileGrid.size,e=U.lens?.bounds||{x:0,y:0,width:i,height:i};return[e.x,-(e.y+e.height),e.x+e.width,-e.y]}function P6e(){if(!U.engine||!U.lens)return;let i=U.engine.getView();i.fit(Of(),{size:U.engine.getSize(),padding:[36,36,36,36],maxZoom:U.lens.maxZoom,duration:0}),U.fitZoom=i.getZoom()||0,mA()}function $S(i){let e=U.engine.getView(),t=e.getZoom()||0;e.animate({zoom:cs(t+i,U.lens.minZoom,mh(U.lens)),duration:140})}function mA(){let i=U.engine?.getView().getZoom();if(ge.viewport.dataset.zoom=Number.isFinite(i)?i.toFixed(3):"",!U.engine||!U.pins.length){ge.visibleCount.textContent="0 locations visible";return}let e=U.engine.getView().calculateExtent(U.engine.getSize()),t=0;for(let n of U.pins){if(Oc(n))continue;let[r,s]=n.coordinate;r>=e[0]&&r<=e[2]&&s>=e[1]&&s<=e[3]&&t++}ge.visibleCount.textContent=`${wu(U.eligibleLocations)} enabled \xB7 ${wu(t)} in view`}function jle(){ge.volume.addEventListener("change",()=>{sd(ge.volume.value)}),ge.world.addEventListener("change",()=>{xG(ge.world.value)}),ge.addBundles.addEventListener("click",()=>{r5()}),ge.emptyOpen.addEventListener("click",()=>{r5()}),ge.lens.addEventListener("change",()=>{yG(Number(ge.lens.value)),Gle()}),ge.globeToggle.addEventListener("click",()=>NP()),ge.legend.addEventListener("change",n=>{let r=n.target;if(r.dataset.sectionToggle){NX(r.dataset.sectionToggle);return}if(!r.dataset.category)return;let s=Number(r.dataset.category);r.checked?U.hiddenCategories.delete(s):U.hiddenCategories.add(s),Lc(),Cp()});let i=null,e=()=>{for(let s of ge.layers.querySelectorAll(".is-hovered"))s.classList.remove("is-hovered");if(!i)return;let r=document.elementFromPoint(i.x,i.y)?.closest(".category-row, .layer-header");r&&ge.layers.contains(r)&&r.classList.add("is-hovered")};ge.layers.addEventListener("pointermove",n=>{i={x:n.clientX,y:n.clientY},e()},{passive:!0}),ge.layers.addEventListener("pointerleave",()=>{i=null,e()}),ge.layers.addEventListener("scroll",e,{passive:!0}),ge.layers.addEventListener("click",n=>{let r=n.target.closest("[data-only-category], [data-only-section]");if(r){n.preventDefault(),n.stopPropagation(),FX(r.dataset.onlyCategory?{category:Number(r.dataset.onlyCategory)}:{section:r.dataset.onlySection});return}let s=n.target.closest("[data-section]");if(!s)return;let o=s.dataset.section;U.collapsedSections.has(o)?U.collapsedSections.delete(o):U.collapsedSections.add(o),zE()}),ge.soloChip.addEventListener("click",()=>$y(!0)),en("#expand-all").addEventListener("click",()=>n5(!1)),en("#collapse-all").addEventListener("click",()=>n5(!0)),en("#show-all").addEventListener("click",()=>$y(!0)),en("#hide-all").addEventListener("click",()=>$y(!1)),ge.zoneToggle.addEventListener("change",()=>{UE(ge.zoneToggle.checked)}),ge.zoneIndex.addEventListener("click",n=>{let r=n.target.closest("[data-zone]");r&&MX(Number(r.dataset.zone))}),ge.zoneIndex.addEventListener("contextmenu",n=>{let r=n.target.closest("[data-zone]");r&&(n.preventDefault(),CX(Number(r.dataset.zone)))}),ge.search.addEventListener("input",()=>{U.search=ge.search.value.trim().toLocaleLowerCase(),Lc(),U.search&&Ey()}),ge.dockFold.addEventListener("click",()=>{cN(!U.dockFolded)}),ge.searchResults.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&uN(s)}),ge.detailLinks.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&uN(s)}),en("#close-detail").addEventListener("click",ed),en("#zoom-in").addEventListener("click",()=>U.globeActive?pG(1):$S(1)),en("#zoom-out").addEventListener("click",()=>U.globeActive?pG(-1):$S(-1)),ge.gridBack.addEventListener("click",bN),ge.gridSystem.addEventListener("click",wN),ge.gridInput.addEventListener("input",()=>{let n=Ts(),r=n.normalizeInput(ge.gridInput.value);ge.gridInput.value=r,n.parseInput(r)!==null&&uA(r)}),ge.subgridToggle.addEventListener("click",()=>{By(!U.subgridVisible),ge.viewport.focus({preventScroll:!0})}),ge.gridInput.addEventListener("keydown",n=>{if(n.key===" "){n.preventDefault(),By(!U.subgridVisible);return}if(n.key==="`"){n.preventDefault(),ge.globeToggle.hidden||NP();return}n.key==="Escape"&&(n.preventDefault(),n.stopPropagation(),ge.viewport.focus({preventScroll:!0}))}),ge.viewport.addEventListener("keydown",n=>{if(!mE(n.target)){if(n.key==="+"||n.key==="=")$S(1);else if(n.key==="-")$S(-1);else if(n.key==="Escape")ed();else return;n.preventDefault()}}),window.addEventListener("contextmenu",n=>{mE(n.target)||n.preventDefault()}),window.addEventListener("keydown",n=>{if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="r"){n.preventDefault(),location.reload();return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="g"){n.preventDefault(),wN();return}if(!mE(n.target)){if(n.key==="`"&&!n.metaKey&&!n.ctrlKey&&!n.altKey){ge.globeToggle.hidden||(n.preventDefault(),NP());return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="k"){n.preventDefault(),ge.search.focus(),ge.search.select();return}if((n.metaKey||n.ctrlKey)&&n.altKey&&n.code==="KeyB"){n.preventDefault(),ge.dock.hidden||cN(!U.dockFolded);return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="b"){n.preventDefault(),Wle();return}kj(n)||n.key.toLocaleLowerCase()==="z"&&(n.preventDefault(),n.repeat||kE(!0))}}),window.addEventListener("keyup",n=>{n.key.toLocaleLowerCase()==="z"&&kE(!1)}),window.addEventListener("blur",()=>kE(!1)),window.addEventListener("hashchange",()=>{let n=tv();n.volume===U.volume?.slug&&n.world===U.world?.slug||(U.restore=null,sd(n.volume||U.catalog.volumes[0].slug,n.world))}),window.addEventListener("resize",()=>{U.engine?.updateSize(),Dx(),gG()}),document.addEventListener("atlas:globe-camera",()=>Dx()),ge.overview.addEventListener("pointerdown",n=>{U.overviewDocked||n.pointerType==="mouse"&&n.button!==0||(n.preventDefault(),ge.overview.setPointerCapture(n.pointerId),U.overviewPointer=n.pointerId,vG(n,!0))}),ge.overview.addEventListener("pointermove",n=>{U.overviewPointer===n.pointerId&&(n.preventDefault(),vG(n,!1))});let t=n=>{U.overviewPointer===n.pointerId&&(U.overviewPointer=null,Nx())};ge.overview.addEventListener("pointerup",t),ge.overview.addEventListener("pointercancel",t),ge.overviewDock.addEventListener("click",()=>{BP(!U.overviewDocked),ge.viewport.focus({preventScroll:!0})}),ge.mobileLegend.addEventListener("click",()=>{let n=ge.sidebar.classList.toggle("is-open");ge.mobileLegend.setAttribute("aria-expanded",String(n))})}function Xle(){let i=()=>({volume:U.volume?.title,world:U.world?.title,lens:U.lens?.name,zoom:U.engine?.getView().getZoom(),center:U.engine?.getView().getCenter(),resolution:U.engine?.getView().getResolution(),nativeMaxZoom:U.lens?.maxZoom,maxZoom:U.lens?mh(U.lens):null,interpolate:U.lens?.interpolate,tileStats:{...U.tileStats},pins:U.pins.length,eligibleLocations:U.eligibleLocations,domNodes:document.querySelectorAll("*").length,canvases:document.querySelectorAll("canvas").length,rasterCacheSize:64,labelsHeld:U.labelsHeld,hoveredPin:U.hoveredPin?.location.title||null,selectedPin:U.selectedPin?.location.title||null,fitZoom:U.fitZoom,filters:{hiddenCategories:[...U.hiddenCategories].sort(),collapsedSections:[...U.collapsedSections].sort()},ui:{sidebarCollapsed:document.querySelector(".app-shell")?.classList.contains("sidebar-collapsed")??!1,detailOpen:!ge.detail.hidden,detailTitle:ge.detail.hidden?null:ge.detailTitle.textContent||null,searchQuery:U.search,searchResultsVisible:!ge.searchResults.hidden,soloChip:ge.soloChip.hidden?null:ge.soloChip.textContent,visibleCountText:ge.visibleCount.textContent,overviewDocked:U.overviewDocked,dockFolded:U.dockFolded,dockDismissed:U.dockDismissed,subgridVisible:U.subgridVisible},zones:{visible:U.zonesVisible,count:U.zoneRecords.size,focused:U.zoneRecords.get(U.focusedZoneID)?.zone.title||null,highlighted:[...U.highlightedZones].map(e=>U.zoneRecords.get(e)?.zone.title).filter(Boolean),focusedPins:U.pins.filter(e=>!e.filteredHidden&&e.insideHighlightedZone).length},grid:{enabled:U.gridEnabled,system:U.gridSystem,prefix:U.gridCell,maximumDepth:Gj(),extent:U.gridEnabled?SN():null,cells:[...U.sources.grid.getFeatures(),...U.sources.gridContext.getFeatures()].map(e=>e.get("gridCell")),priorityPins:U.gridCell?U.pins.filter(e=>!e.filteredHidden&&Pp(e)).length:0}});window.__atlasDebug={snapshot:i,setLayerVisible:(e,t)=>U.layers[e]?.setVisible(t),refreshCatalog:AA},window.render_game_to_text=()=>JSON.stringify({coordinateSystem:"ATLAS:PIXELS; origin top-left; x increases right; y decreases downward",...i()}),window.advanceTime=()=>U.engine?.renderSync()}async function $le(){jle();try{let i=await fetch("/data/catalog.json");if(!i.ok)throw new Error(`catalog request returned ${i.status}`);if(U.catalog=await i.json(),km(ge.volume,U.catalog.volumes,"title"),i5(),window.runtime?.EventsOn?.("atlas:catalog-changed",()=>{AA()}),U.catalog.volumes.length){let e=tv(),t=ev(),n=t&&(!e.volume||e.volume===t.volume&&e.world===t.world);U.restore=n?t:null,await sd(e.volume||t?.volume||U.catalog.volumes[0].slug,e.world||t?.world),U.restore=null}else ge.loading.hidden=!0;Xle(),requestAnimationFrame(()=>ge.viewport.focus({preventScroll:!0}))}catch(i){ge.loading.hidden=!0,ge.fatalMessage.textContent=i instanceof Error?i.message:String(i),ge.fatal.hidden=!1}}$le();})();5290+In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function yle(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(i);e&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),t.push.apply(t,n)}return t}function p1(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?yle(Object(t),!0).forEach(function(n){HS(i,n,t[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):yle(Object(t)).forEach(function(n){Object.defineProperty(i,n,Object.getOwnPropertyDescriptor(t,n))})}return i}function J5e(i,e){if(i==null)return{};var t,n,r=e6e(i,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(i);for(n=0;n<s.length;n++)t=s[n],e.indexOf(t)===-1&&{}.propertyIsEnumerable.call(i,t)&&(r[t]=i[t])}return r}function e6e(i,e){if(i==null)return{};var t={};for(var n in i)if({}.hasOwnProperty.call(i,n)){if(e.indexOf(n)!==-1)continue;t[n]=i[n]}return t}function CP(i){return Z5e(i)||K5e(i)||i6e(i)||Q5e()}function t6e(i,e){if(typeof i!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var n=t.call(i,e);if(typeof n!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function n6e(i){var e=t6e(i,"string");return typeof e=="symbol"?e:e+""}function i6e(i,e){if(i){if(typeof i=="string")return cG(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?cG(i,e):void 0}}function ble(i,e){var t=new e;return t._destructor&&t._destructor(),{linkProp:function(r){return{default:t[r](),onChange:function(o,a){a[i][r](o)},triggerUpdate:!1}},linkMethod:function(r){return function(s){for(var o=s[i],a=arguments.length,l=new Array(a>1?a-1:0),c=1;c<a;c++)l[c-1]=arguments[c];var u=o[r].apply(o,l);return u===o?this:u}}}}var r6e=["rendererConfig","waitForGlobeReady"],qS=p1(p1({},window.THREE?window.THREE:{AmbientLight:$A,DirectionalLight:XA,Vector2:Oe,REVISION:"185"}),{},{CSS2DRenderer:GM}),wle=ble("globe",IV),s6e=Object.assign.apply(Object,CP(["globeImageUrl","bumpImageUrl","globeTileEngineUrl","globeTileEngineMaxLevel","globeCurvatureResolution","showGlobe","showGraticules","showAtmosphere","atmosphereColor","atmosphereAltitude","onGlobeReady","pointsData","pointLat","pointLng","pointColor","pointAltitude","pointRadius","pointResolution","pointsMerge","pointsTransitionDuration","arcsData","arcStartLat","arcStartLng","arcStartAltitude","arcEndLat","arcEndLng","arcEndAltitude","arcColor","arcAltitude","arcAltitudeAutoScale","arcStroke","arcCurveResolution","arcCircularResolution","arcDashLength","arcDashGap","arcDashInitialGap","arcDashAnimateTime","arcsTransitionDuration","polygonsData","polygonGeoJsonGeometry","polygonCapColor","polygonCapMaterial","polygonSideColor","polygonSideMaterial","polygonStrokeColor","polygonAltitude","polygonCapCurvatureResolution","polygonsTransitionDuration","pathsData","pathPoints","pathPointLat","pathPointLng","pathPointAlt","pathResolution","pathColor","pathStroke","pathDashLength","pathDashGap","pathDashInitialGap","pathDashAnimateTime","pathTransitionDuration","heatmapsData","heatmapPoints","heatmapPointLat","heatmapPointLng","heatmapPointWeight","heatmapBandwidth","heatmapColorFn","heatmapColorSaturation","heatmapBaseAltitude","heatmapTopAltitude","heatmapsTransitionDuration","hexBinPointsData","hexBinPointLat","hexBinPointLng","hexBinPointWeight","hexBinResolution","hexMargin","hexTopCurvatureResolution","hexTopColor","hexSideColor","hexAltitude","hexBinMerge","hexTransitionDuration","hexPolygonsData","hexPolygonGeoJsonGeometry","hexPolygonColor","hexPolygonAltitude","hexPolygonResolution","hexPolygonMargin","hexPolygonUseDots","hexPolygonCurvatureResolution","hexPolygonDotResolution","hexPolygonsTransitionDuration","tilesData","tileLat","tileLng","tileAltitude","tileWidth","tileHeight","tileUseGlobeProjection","tileMaterial","tileCurvatureResolution","tilesTransitionDuration","particlesData","particlesList","particleLat","particleLng","particleAltitude","particlesSize","particlesSizeAttenuation","particlesColor","particlesTexture","ringsData","ringLat","ringLng","ringAltitude","ringColor","ringResolution","ringMaxRadius","ringPropagationSpeed","ringRepeatPeriod","labelsData","labelLat","labelLng","labelAltitude","labelRotation","labelText","labelSize","labelTypeFace","labelColor","labelResolution","labelIncludeDot","labelDotRadius","labelDotOrientation","labelsTransitionDuration","htmlElementsData","htmlLat","htmlLng","htmlAltitude","htmlElement","htmlElementVisibilityModifier","htmlTransitionDuration","objectsData","objectLat","objectLng","objectAltitude","objectRotation","objectFacesSurface","objectThreeObject","customLayerData","customThreeObject","customThreeObjectUpdate"].map(function(i){return HS({},i,wle.linkProp(i))}))),o6e=Object.assign.apply(Object,CP(["globeMaterial","globeTileEngineClearCache","getGlobeRadius","getCoords","toGeoCoords"].map(function(i){return HS({},i,wle.linkMethod(i))}))),Sle=ble("renderObjs",lG),a6e=Object.assign.apply(Object,CP(["width","height","backgroundColor","backgroundImageUrl","enablePointerInteraction"].map(function(i){return HS({},i,Sle.linkProp(i))}))),l6e=Object.assign.apply(Object,CP(["lights","postProcessingComposer"].map(function(i){return HS({},i,Sle.linkMethod(i))}))),Tle=Kr({props:p1(p1({onZoom:{triggerUpdate:!1},onGlobeClick:{triggerUpdate:!1},onGlobeRightClick:{triggerUpdate:!1},pointLabel:{default:"name",triggerUpdate:!1},onPointClick:{triggerUpdate:!1},onPointRightClick:{triggerUpdate:!1},onPointHover:{triggerUpdate:!1},arcLabel:{default:"name",triggerUpdate:!1},onArcClick:{triggerUpdate:!1},onArcRightClick:{triggerUpdate:!1},onArcHover:{triggerUpdate:!1},polygonLabel:{default:"name",triggerUpdate:!1},onPolygonClick:{triggerUpdate:!1},onPolygonRightClick:{triggerUpdate:!1},onPolygonHover:{triggerUpdate:!1},pathLabel:{default:"name",triggerUpdate:!1},onPathClick:{triggerUpdate:!1},onPathRightClick:{triggerUpdate:!1},onPathHover:{triggerUpdate:!1},onHeatmapClick:{triggerUpdate:!1},onHeatmapRightClick:{triggerUpdate:!1},onHeatmapHover:{triggerUpdate:!1},hexLabel:{triggerUpdate:!1},onHexClick:{triggerUpdate:!1},onHexRightClick:{triggerUpdate:!1},onHexHover:{triggerUpdate:!1},hexPolygonLabel:{triggerUpdate:!1},onHexPolygonClick:{triggerUpdate:!1},onHexPolygonRightClick:{triggerUpdate:!1},onHexPolygonHover:{triggerUpdate:!1},tileLabel:{default:"name",triggerUpdate:!1},onTileClick:{triggerUpdate:!1},onTileRightClick:{triggerUpdate:!1},onTileHover:{triggerUpdate:!1},particleLabel:{default:"name",triggerUpdate:!1},onParticleClick:{triggerUpdate:!1},onParticleRightClick:{triggerUpdate:!1},onParticleHover:{triggerUpdate:!1},labelLabel:{triggerUpdate:!1},onLabelClick:{triggerUpdate:!1},onLabelRightClick:{triggerUpdate:!1},onLabelHover:{triggerUpdate:!1},objectLabel:{default:"name",triggerUpdate:!1},onObjectClick:{triggerUpdate:!1},onObjectRightClick:{triggerUpdate:!1},onObjectHover:{triggerUpdate:!1},customLayerLabel:{default:"name",triggerUpdate:!1},onCustomLayerClick:{triggerUpdate:!1},onCustomLayerRightClick:{triggerUpdate:!1},onCustomLayerHover:{triggerUpdate:!1},pointerEventsFilter:{default:function(){return!0},triggerUpdate:!1},lineHoverPrecision:{default:.2,triggerUpdate:!1,onChange:function(e,t){t.renderObjs.lineHoverPrecision(e),t.renderObjs.pointsHoverPrecision(e)}},showPointerCursor:{default:!0,triggerUpdate:!1},globeOffset:{default:[0,0],triggerUpdate:!1,onChange:function(e,t){return Array.isArray(e)&&e.length===2&&t.renderObjs.viewOffset(e.map(function(n){return-n}))}}},s6e),a6e),methods:p1(p1({pauseAnimation:function(e){var t;return e.animationFrameRequestId!==null&&(cancelAnimationFrame(e.animationFrameRequestId),e.animationFrameRequestId=null),(t=e.globe)===null||t===void 0||t.pauseAnimation(),this},resumeAnimation:function(e){var t;return e.animationFrameRequestId===null&&this._animationCycle(),(t=e.globe)===null||t===void 0||t.resumeAnimation(),this},_animationCycle:function(e){e.renderObjs.tick(),e.tweenGroup.update(),e.animationFrameRequestId=requestAnimationFrame(this._animationCycle)},pointOfView:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=a();if(t.lat===void 0&&t.lng===void 0&&t.altitude===void 0)return r;var s,o=Object.assign({},r,t);if(["lat","lng","altitude"].forEach(function(c){return o[c]=+o[c]}),(s=e.povTween)===null||s===void 0||s.end(),!n)l(o);else{for(;r.lng-o.lng>180;)r.lng-=360;for(;r.lng-o.lng<-180;)r.lng+=360;e.tweenGroup.add(e.povTween=new uo(r).to(o,n).easing(Qr.Cubic.InOut).onUpdate(l).onComplete(function(){e.povTween=void 0,e.tweenGroup.remove(this)}).start())}return this;function a(){return e.globe.toGeoCoords(e.renderObjs.cameraPosition())}function l(c){var u=c.lat,f=c.lng,d=c.altitude;e.renderObjs.cameraPosition(e.globe.getCoords(u,f,d)),e.globe.setPointOfView(e.renderObjs.camera())}},getScreenCoords:function(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];var o=(t=e.globe).getCoords.apply(t,r);return e.renderObjs.getScreenCoords(o.x,o.y,o.z)},toGlobeCoords:function(e,t,n){var r=e.renderObjs.intersectingObjects(t,n).find(function(l){return(l.object.__globeObjType||l.object.parent.__globeObjType)==="globe"});if(!r)return null;var s=e.globe.toGeoCoords(r.point),o=s.lat,a=s.lng;return{lat:o,lng:a}},scene:function(e){return e.renderObjs.scene()},camera:function(e){return e.renderObjs.camera()},renderer:function(e){return e.renderObjs.renderer()},controls:function(e){return e.renderObjs.controls()},_destructor:function(e){this.pauseAnimation(),this.pointsData([]),this.arcsData([]),this.polygonsData([]),this.pathsData([]),this.heatmapsData([]),this.hexBinPointsData([]),this.hexPolygonsData([]),this.tilesData([]),this.particlesData([]),this.labelsData([]),this.htmlElementsData([]),this.objectsData([]),this.customLayerData([]),e.globe._destructor(),e.renderObjs._destructor()}},o6e),l6e),stateInit:function(e){var t=e.rendererConfig,n=e.waitForGlobeReady,r=n===void 0?!0:n,s=J5e(e,r6e),o=new IV(p1({waitForGlobeReady:r},s));return{globe:o,renderObjs:lG({controlType:"orbit",rendererConfig:t,waitForLoadComplete:r,extraRenderers:[new qS.CSS2DRenderer]}).skyRadius(o.getGlobeRadius()*500).showNavInfo(!1).objects([o]).lights([new qS.AmbientLight(13421772,Math.PI),new qS.DirectionalLight(16777215,.6*Math.PI)]),tweenGroup:new hg}},init:function(e,t){var n=this;e.innerHTML="",e.appendChild(t.container=document.createElement("div")),t.container.style.position="relative";var r=document.createElement("div");t.container.appendChild(r),t.renderObjs(r),t.globe.rendererSize(t.renderObjs.renderer().getSize(new qS.Vector2)),this.pointOfView({altitude:2.5});var s=t.globe.getGlobeRadius(),o=t.renderObjs.controls();t.renderObjs.camera().near=.05,o.minDistance=s+Math.max(.001,t.renderObjs.camera().near*1.1),o.maxDistance=s*100,o.enablePan=!1,o.enableDamping=!0,o.dampingFactor=.1,o.rotateSpeed=.3,o.zoomSpeed=.3,o.zoomToCursor=!0,o.addEventListener("change",function(){o.target.setScalar(0);var c=n.pointOfView();o.rotateSpeed=c.altitude*.3,o.zoomSpeed=Math.sqrt(c.altitude)*.5,t.globe.setPointOfView(t.renderObjs.camera()),t.onZoom&&t.onZoom(c)});var a=function(u){for(var f=u;f&&!f.hasOwnProperty("__globeObjType");)f=f.parent;return f},l={point:function(u){return u},arc:function(u){return u},polygon:function(u){return u.data},path:function(u){return u},heatmap:function(u){return u},hexbin:function(u){return u},hexPolygon:function(u){return u},tile:function(u){return u},particles:function(u,f){return!f||!f.hasOwnProperty("index")||u.length<=f.index?u:u[f.index]},label:function(u){return u},object:function(u){return u},custom:function(u){return u}};qS.REVISION<155&&(t.renderObjs.renderer().useLegacyLights=!1),t.renderObjs.hoverFilter(function(c){var u=a(c);if(!u)return!1;var f=u.__globeObjType;if(f!=="globe"&&!l.hasOwnProperty(f))return!1;var d=l.hasOwnProperty(f)&&u.__data?l[f](u.__data):null;return["points","hexBinPoints"].some(function(A){return A===f})&&Array.isArray(d)?!1:t.pointerEventsFilter(u,d)}).tooltipContent(function(c,u){var f={point:t.pointLabel,arc:t.arcLabel,polygon:t.polygonLabel,path:t.pathLabel,hexbin:t.hexLabel,hexPolygon:t.hexPolygonLabel,tile:t.tileLabel,particles:t.particleLabel,label:t.labelLabel,object:t.objectLabel,custom:t.customLayerLabel},d=a(c),A=d&&d.__globeObjType;return d&&A&&f.hasOwnProperty(A)&&l.hasOwnProperty(A)&&st(f[A])(l[A](d.__data,u))||""}).onHover(function(c,u,f){var d={point:t.onPointHover,arc:t.onArcHover,polygon:t.onPolygonHover,path:t.onPathHover,heatmap:t.onHeatmapHover,hexbin:t.onHexHover,hexPolygon:t.onHexPolygonHover,tile:t.onTileHover,particles:t.onParticleHover,label:t.onLabelHover,object:t.onObjectHover,custom:t.onCustomLayerHover},A={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},y=a(c);if(y&&!d.hasOwnProperty(y.__globeObjType)&&(y=null),y!==t.hoverObj){var w,S=t.hoverObj?t.hoverObj.__globeObjType:null,T=t.hoverData,R=y?y.__globeObjType:null,P=(w=y)!==null&&w!==void 0&&w.__data?l[R](y.__data,f):null;S&&S!==R&&d[S]&&d[S](null,T||null),R&&d[R]&&d[R](P,S===R?T:null),t.renderObjs.renderer().domElement.classList[R&&A[R]&&st(t.showPointerCursor)(R,P)?"add":"remove"]("clickable"),t.hoverObj=y,t.hoverData=P}}).onClick(function(c,u,f){if(c){var d={globe:t.onGlobeClick,point:t.onPointClick,arc:t.onArcClick,polygon:t.onPolygonClick,path:t.onPathClick,heatmap:t.onHeatmapClick,hexbin:t.onHexClick,hexPolygon:t.onHexPolygonClick,tile:t.onTileClick,particles:t.onParticleClick,label:t.onLabelClick,object:t.onObjectClick,custom:t.onCustomLayerClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}).onRightClick(function(c,u,f){if(c){var d={globe:t.onGlobeRightClick,point:t.onPointRightClick,arc:t.onArcRightClick,polygon:t.onPolygonRightClick,path:t.onPathRightClick,heatmap:t.onHeatmapRightClick,hexbin:t.onHexRightClick,hexPolygon:t.onHexPolygonRightClick,tile:t.onTileRightClick,particles:t.onParticleRightClick,label:t.onLabelRightClick,object:t.onObjectRightClick,custom:t.onCustomLayerRightClick},A=a(c),y=A.__globeObjType;if(A&&d.hasOwnProperty(y)&&d[y]){var w=[u],S=f!=null&&f.isVector3?f:f?.point;if(y==="globe"){var T=n.toGeoCoords(S),R=T.lat,P=T.lng;w.unshift({lat:R,lng:P})}else w.push(n.toGeoCoords(S));l.hasOwnProperty(y)&&w.unshift(l[y](A.__data,f)),d[y].apply(d,w)}}}),this._animationCycle()}});var Cle=4,Rx=100,XS=Rx+.2,tp=8,c6e=96,Rle=.045,Ile=.08;function Ix(i,e,t){let n=(90-i)*Math.PI/180,r=(90-e)*Math.PI/180;return[t*Math.sin(n)*Math.cos(r),t*Math.cos(n),t*Math.sin(n)*Math.sin(r)]}var Yn=null,IP="",Fs={group:null,tiles:new Map,key:"",lens:""},Mo={group:null,cell:null,fitKey:""},au={group:null,key:""},u6e=180,hG=null,Px=new Map,DP=new Map,Ele=new Map;function Ple(){let i=LT(U.world)==="sphere"&&ch(U.world)!==null;ge.globeToggle.hidden=!i,Lle(),!i&&Yn&&(WS(),Fs.group=null,Mo.group=null,Mo.cell=null,au.group=null,au.key="",Yn._destructor(),Yn=null,IP="",hG=null,ge.globe.replaceChildren())}function NP(){U.globeActive?Lle():Fle()}var jS=2.5,PP=2,Lx=.08,FP=4;function h6e(i){let e=Number.isFinite(i)?i:PP;return cs(jS/2**(e-PP),Lx,FP)}function dG(i){let e=Number.isFinite(i)?Math.max(i,Lx/2):jS,t=(U.lens?.maxZoom??PP)+2;return cs(PP+Math.log2(jS/e),0,t)}function pG(i){if(!Yn||!U.globeActive)return;let e=Yn.pointOfView(),t=cs((Number.isFinite(e.altitude)?e.altitude:jS)/2**i,Lx,FP);Yn.pointOfView({altitude:t},180)}function Lle(){let i=ch(U.world),e=U.engine?.getView();if(Yn&&U.globeActive&&i&&e){let t=Yn.pointOfView(),[n,r]=i.toWorld(t.lat,t.lng);Number.isFinite(n)&&Number.isFinite(r)&&(e.cancelAnimations(),e.setCenter([n,-r]),e.setZoom(dG(t.altitude)))}U.globeActive=!1,ge.globe.hidden=!0,ge.globeToggle.setAttribute("aria-pressed","false"),ge.viewport.hidden=!1,WS(),U.overviewKey="",document.dispatchEvent(new Event("atlas:globe-camera"))}function Dle(){if(!Yn||!U.globeActive)return null;let i=Yn.pointOfView();return{lat:i.lat,lng:i.lng}}function Nle(i,e,t){if(!Yn)return;let n=Yn.pointOfView().altitude;Yn.pointOfView({lat:i,lng:e,altitude:n},t?180:0)}async function Fle(){let i=ch(U.world);if(!i)return;if(U.globeActive=!0,ge.viewport.hidden=!0,ge.globe.hidden=!1,ge.globeToggle.setAttribute("aria-pressed","true"),U.overviewKey="",!Yn){Yn=Tle({animateIn:!1})(ge.globe).backgroundColor("#0b0e12").showAtmosphere(!0).atmosphereColor("#8a6f5b").atmosphereAltitude(.12).objectLat(o=>o.lat).objectLng(o=>o.lng).objectAltitude(o=>o.pin===U.selectedPin?.03:.014).objectThreeObject(o=>w6e(o.pin)).objectLabel(o=>o.pin.location.title).onObjectClick(o=>My(o.pin)).onObjectHover(o=>{ge.globe.style.cursor=o?"pointer":""}).onZoom(()=>{document.dispatchEvent(new Event("atlas:globe-camera")),Mle(),RP(),S6e(),AG()}),document.addEventListener("atlas:selection",b6e),document.addEventListener("atlas:filters",uG),document.addEventListener("atlas:grid",()=>{LP(),uG(),RP()}),document.addEventListener("atlas:labels",RP),Yn.onGlobeClick(({lat:o,lng:a})=>{if(!U.gridEnabled)return;let l=ch(U.world);if(!l)return;let[c,u]=l.toWorld(o,a),f=Ts().descendTarget(U.gridCell,[c,-u]);f&&uA(f)});let s=Yn.controls();s.minDistance=Rx*(1+Lx),s.maxDistance=Rx*(1+FP),Fs.group=new Br,Yn.scene().add(Fs.group),Mo.group=new Br,Yn.scene().add(Mo.group),au.group=new Br,Yn.scene().add(au.group),window.__atlasGlobe={detail:Fs,grid:Mo,labels:au,sprites:Px}}gG();let e=U.engine?.getView(),t=e?.getCenter();if(t&&Number.isFinite(t[0])&&Number.isFinite(t[1])){let[s,o]=i.toLatLng(t[0],-t[1]);Yn.pointOfView({lat:s,lng:o,altitude:h6e(e.getZoom())})}else Yn.pointOfView({lat:10,lng:0,altitude:jS});let n=U.lens||U.world.lenses[0],r=`${U.volume.stamp}:${U.world.slug}:${n.tiles}`;if(IP!==r){IP=r;let s=await E6e(n);s&&IP===r&&Yn.globeImageUrl(s)}hG!==U.pins&&(hG=U.pins,Px.clear(),DP.clear(),Yn.objectsData(T6e(i))),uG(),kle(),Mle(),LP(),RP(),document.dispatchEvent(new Event("atlas:globe-camera"))}function LP(){if(!Yn||!Mo.group)return;for(let t of[...Mo.group.children])Mo.group.remove(t),t.geometry?.dispose(),t.material?.map?.dispose(),t.material?.dispose();let i=U.globeActive?ch(U.world):null;if(!i||!U.gridEnabled){Mo.cell=null;return}let e=Ts();for(let t of TE()){let n=Ble(t.ring,i),r=mG(n),s=SE(t,{subgridVisible:U.subgridVisible,labelled:p6e(t,r)});if(s){if(s.fill){let o=Ole(e.center(t.hash),i);Mo.group.add(m6e(n,o,s.fill))}Mo.group.add(v6e(n,s.line)),s.label&&Mo.group.add(_6e(s.label,r))}}Mo.cell!==null&&Mo.cell!==U.gridCell&&x6e(i),Mo.cell=U.gridCell,AG()}function Ble(i,e){return i.map(([t,n])=>e.toLatLng(t,-n))}function Ole(i,e){return e.toLatLng(i[0],-i[1])}function f6e(i){let e=[];for(let t=0;t<i.length-1;t++){let[n,r]=i[t],[s,o]=i[t+1],a=Math.max(Math.abs(s-n),Math.abs(o-r)),l=cs(Math.ceil(a/2),1,48);for(let c=0;c<l;c++){let u=c/l;e.push([n+(s-n)*u,r+(o-r)*u])}}return e}function mG(i){let e=-1/0,t=1/0,n=1/0,r=-1/0;for(let[s,o]of i)e=Math.max(e,s),t=Math.min(t,s),n=Math.min(n,o),r=Math.max(r,o);return{north:e,south:t,west:n,east:r}}function d6e(i){let e=Yn.pointOfView(),t=Math.max(e.altitude,Lx/2),n=50*Math.PI/180,r=2*t*Rx*Math.tan(n/2)/Math.max(1,ge.globe.clientHeight||1),s=Rx*Math.PI/180/r;return{width:Math.abs(i.east-i.west)*s,height:Math.abs(i.north-i.south)*s}}function p6e(i,e){let n=i.role==="neighbor"?Vi.neighborLabelSizePx:Vi.labelSizePx,r=`900 ${n}px ${Vi.labelFont}`,s=d6e(e);return $N(i.hash,r)+9<=s.width&&n+6<=s.height}function m6e(i,e,t){let n=XS+.12,r=f6e(i),s=mG(i),o=Math.max(s.east-s.west,s.north-s.south),a=cs(Math.ceil(o/6),2,24),l=Ix(e[0],e[1],n),c=r.map(([T,R])=>Ix(T,R,n)),u=[...l],f=[];for(let T=1;T<=a;T++){let R=T/a;for(let P of c){let I=l[0]+(P[0]-l[0])*R,F=l[1]+(P[1]-l[1])*R,D=l[2]+(P[2]-l[2])*R,L=n/(Math.hypot(I,F,D)||1);u.push(I*L,F*L,D*L)}}let d=r.length,A=(T,R)=>1+(T-1)*d+R%d;for(let T=0;T<d;T++)f.push(0,A(1,T),A(1,T+1));for(let T=1;T<a;T++)for(let R=0;R<d;R++)f.push(A(T,R),A(T+1,R),A(T,R+1)),f.push(A(T,R+1),A(T+1,R),A(T+1,R+1));let y=new Xn;y.setAttribute("position",new Ln(u,3)),y.setIndex(f);let w=new fs({color:t.color,transparent:!0,opacity:t.opacity,depthWrite:!1,side:2}),S=new Hn(y,w);return S.renderOrder=1,S}function RP(){if(!Yn||!au.group)return;let i=U.globeActive&&U.labelsHeld,e=i?Yn.pointOfView():null,t=i?`${Math.round(e.lat)}:${Math.round(e.lng)}:${e.altitude.toFixed(2)}:${U.gridSystem}:${U.gridCell}`:"";if(t===au.key)return;au.key=t;for(let r of[...au.group.children])au.group.remove(r),r.material?.map?.dispose(),r.material?.dispose();if(!i)return;let n=[];for(let[r,s]of Px){if(!s.visible)continue;let o=DP.get(r);if(!o)continue;let a=A6e(e,o);a>85||n.push({pin:r,stood:o,distance:a})}n.sort((r,s)=>r.distance-s.distance);for(let{pin:r,stood:s}of n.slice(0,u6e))au.group.add(g6e(r,s));AG()}function AG(){if(!Yn)return;let i=Yn.camera().position,e=i.length()||1,t=Rx/e;for(let n of[Mo.group,au.group])if(n)for(let r of n.children){if(!r.isSprite)continue;let s=r.position,o=s.length()||1,a=(s.x*i.x+s.y*i.y+s.z*i.z)/(o*e);r.visible=a>t}}function A6e(i,e){let t=Math.PI/180,n=Math.sin(i.lat*t)*Math.sin(e.lat*t)+Math.cos(i.lat*t)*Math.cos(e.lat*t)*Math.cos((i.lng-e.lng)*t);return Math.acos(cs(n,-1,1))*180/Math.PI}function g6e(i,e){let t=i.location.title,n=document.createElement("canvas"),r=n.getContext("2d"),s="600 26px Inter, system-ui, sans-serif";r.font=s;let o=Math.ceil(r.measureText(t).width)+24;n.width=o,n.height=40,r.font=s,r.textAlign="center",r.textBaseline="middle",r.fillStyle="rgba(10, 13, 17, 0.78)",r.fillRect(0,0,o,40),r.fillStyle="#e6ebf0",r.fillText(t,o/2,21);let a=new Rh({depthTest:!1,depthWrite:!1,sizeAttenuation:!1,transparent:!0});new yl().load(n.toDataURL("image/png"),u=>{a.map=u,a.needsUpdate=!0});let l=new UA(a);l.position.set(...Ix(e.lat,e.lng,XS+.4)),l.renderOrder=4;let c=.028;return l.scale.set(c*o/40,c,1),l.center.set(.5,0),l}function v6e(i,e){let t=[];for(let o=0;o<i.length-1;o++){let[a,l]=i[o],[c,u]=i[o+1],f=Math.max(Math.abs(c-a),Math.abs(u-l)),d=cs(Math.ceil(f/2),4,48);for(let A=0;A<d;A++){let y=A/d;t.push(...Ix(a+(c-a)*y,l+(u-l)*y,XS+.25))}}t.push(...t.slice(0,3));let n=new ym;n.setPositions(t);let r=new Rf({color:e.color,transparent:!0,opacity:e.opacity,linewidth:e.widthPx,depthWrite:!1});r.resolution.set(ge.globe.clientWidth||1,ge.globe.clientHeight||1);let s=new yx(n,r);return s.computeLineDistances(),s.renderOrder=2,s}function _6e(i,e){let n=i.sizePx*2,r=`500 ${n}px ${Vi.labelFont}`,s=`900 ${n}px ${Vi.labelFont}`,o=document.createElement("canvas"),a=o.getContext("2d");a.font=r;let l=i.prefix?a.measureText(i.prefix).width:0;a.font=s;let c=a.measureText(i.final).width,u=10;o.width=Math.ceil(l+c+u*2),o.height=n+u*1.4,a.fillStyle=i.chip,a.fillRect(0,0,o.width,o.height),a.textBaseline="middle";let f=o.height/2+2;i.prefix&&(a.font=r,a.fillStyle=i.color,a.globalAlpha=Vi.prefixAlpha*i.textAlpha,a.fillText(i.prefix,u,f)),a.font=s,a.globalAlpha=i.textAlpha,a.fillStyle=i.color,a.fillText(i.final,u+l,f),a.globalAlpha=1;let d=new Rh({depthTest:!1,depthWrite:!1,transparent:!0,sizeAttenuation:!1});new yl().load(o.toDataURL("image/png"),R=>{d.map=R,d.needsUpdate=!0});let A=new UA(d),y=Math.abs(e.north-e.south)*.02,w=Math.abs(e.east-e.west)*.02;A.position.set(...Ix(e.south+y,e.east-w,XS+.35));let S=Math.max(1,ge.globe.clientHeight||1),T=o.height/2/S;return A.scale.set(T*o.width/o.height,T,1),A.center.set(1,0),A.renderOrder=3,A}function x6e(i){let t=TE().find(l=>l.role==="scope"||l.role==="leaf");if(!t)return;let[n,r]=Ole(Ts().center(t.hash),i),s=mG(Ble(t.ring,i)),o=Math.max(s.east-s.west,s.north-s.south),a=cs(o/45,Lx,FP);Yn.pointOfView({lat:n,lng:r,altitude:a},400)}function Mle(){if(!Yn||!Fs.group)return;let i=U.globeActive?U.lens||U.world.lenses[0]:null;if(!i){WS();return}Fs.lens!==i.tiles&&(WS(),Fs.lens=i.tiles);let e=Yn.pointOfView(),t=Math.min(Math.round(dG(e.altitude))+1,i.maxZoom);if(t<=Cle||!i.formats[t]){WS(),Fs.key="";return}let n=2**t,r=n/2,s=360/n,o=Math.acos(1/(1+e.altitude))*180/Math.PI+s,a=Math.floor(((e.lng+180)%360+360)%360/s),l=Math.floor((90-e.lat)/s),c=Math.ceil(o/s);for(;(2*c+1)**2>c6e&&c>1;)c--;let u=new Set;for(let d=-c;d<=c;d++){let A=l+d;if(!(A<0||A>=r))for(let y=-c;y<=c;y++){let w=((a+y)%n+n)%n;u.add(`${t}/${w}/${A}`)}}let f=`${i.tiles}:${[...u].sort().join(",")}`;if(f!==Fs.key){Fs.key=f;for(let[d,A]of Fs.tiles)u.has(d)||(Fs.group.remove(A),Ule(A),Fs.tiles.delete(d));for(let d of u){if(Fs.tiles.has(d))continue;let[A,y,w]=d.split("/").map(Number),S=y6e(i,A,y,w);Fs.tiles.set(d,S),Fs.group.add(S)}}}function y6e(i,e,t,n){let r=360/2**e,s=-180+t*r,o=90-n*r,a=[],l=[],c=[];for(let w=0;w<=tp;w++){let S=o-w/tp*r;for(let T=0;T<=tp;T++){let R=s+T/tp*r;a.push(...Ix(S,R,XS)),l.push(T/tp,1-w/tp)}}let u=tp+1;for(let w=0;w<tp;w++)for(let S=0;S<tp;S++){let T=w*u+S;c.push(T,T+u,T+1),c.push(T+1,T+u,T+u+1)}let f=new Xn;f.setAttribute("position",new Ln(a,3)),f.setAttribute("uv",new Ln(l,2)),f.setIndex(c);let d=new fs,A=new Hn(f,d);A.visible=!1;let y=`${U.volume.base}/tiles/${i.tiles}/${e}/${t}/${n}.${i.formats[e]}`;return new yl().load(y,w=>{w.colorSpace=Fr,d.map=w,d.needsUpdate=!0,A.visible=!0}),A}function WS(){if(Fs.group){for(let i of Fs.tiles.values())Fs.group.remove(i),Ule(i);Fs.tiles.clear(),Fs.key=""}}function Ule(i){i.geometry.dispose(),i.material.map?.dispose(),i.material.dispose()}function kle(){if(Yn){for(let[i,e]of Px){let t=i===U.selectedPin;e.material=Vle(i.category,t);let n=t?Ile:Rle;e.scale.set(n,n,1)}Yn.objectAltitude(i=>i.pin===U.selectedPin?.03:.014)}}function b6e(){if(!Yn||!U.globeActive)return;kle();let i=DP.get(U.selectedPin);if(i){let e=Yn.pointOfView().altitude;Yn.pointOfView({lat:i.lat,lng:i.lng,altitude:e},600)}}function zle(i){return!(i.filteredHidden||U.hiddenCategories.has(i.category.id)||U.gridEnabled&&U.gridCell&&!Pp(i))}function uG(){if(!(!Yn||!U.globeActive))for(let[i,e]of Px)e.visible=zle(i)}function w6e(i){let e=new UA(Vle(i.category,i===U.selectedPin)),t=i===U.selectedPin?Ile:Rle;return e.scale.set(t,t,1),e.visible=zle(i),Px.set(i,e),e}function Vle(i,e){let t=`${jy(i)}:${e?"ringed":"plain"}`,n=Ele.get(t);if(n)return n;n=new Rh({depthWrite:!1,sizeAttenuation:!1}),Ele.set(t,n);let r=U.markerIcons.get(jy(i)),s=o=>{let a=document.createElement("canvas");a.width=80,a.height=80;let l=a.getContext("2d");o?l.drawImage(o,8,8,64,64):(l.font="900 26px Inter, system-ui, sans-serif",l.textAlign="center",l.textBaseline="middle",l.lineWidth=6,l.strokeStyle=aA(),l.strokeText(bu(i.title),40,41),l.fillStyle=lA(i),l.fillText(bu(i.title),40,41)),e&&(l.beginPath(),l.arc(40,40,36,0,Math.PI*2),l.lineWidth=5,l.strokeStyle="#ffffff",l.stroke()),new yl().load(a.toDataURL("image/png"),c=>{n.map=c,n.needsUpdate=!0})};if(r){let o=new Image;o.onload=()=>s(o),o.onerror=()=>s(null),o.src=r}else s(null);return n}function Gle(){U.globeActive&&Fle()}function gG(){!Yn||ge.globe.hidden||(Yn.width(ge.globe.clientWidth).height(ge.globe.clientHeight),LP())}function S6e(){if(!Yn||!U.globeActive||!U.gridEnabled)return;let i=Yn.pointOfView(),e=`${U.gridSystem}:${U.gridCell}:${Math.round(dG(i.altitude)*2)}`;e!==Mo.fitKey&&(Mo.fitKey=e,LP())}function T6e(i){let e=[];for(let t of U.pins){let[n,r]=lv(t.location.lat,t.location.lng),[s,o]=i.toLatLng(n,-r);e.push({lat:s,lng:o,pin:t}),DP.set(t,{lat:s,lng:o})}return e}async function E6e(i){let e=Math.min(Cle,i.maxZoom),t=i.formats[e];if(!t)return null;let n=2**e,r=n/2,s=document.createElement("canvas");s.width=n*256,s.height=r*256;let o=s.getContext("2d"),a=[];for(let l=0;l<r;l++)for(let c=0;c<n;c++){let u=`${U.volume.base}/tiles/${i.tiles}/${e}/${c}/${l}.${t}`;a.push(M6e(u).then(f=>{f&&o.drawImage(f,c*256,l*256,256,256)}))}return await Promise.all(a),s.toDataURL("image/jpeg",.92)}function M6e(i){return new Promise(e=>{let t=new Image;t.onload=()=>e(t),t.onerror=()=>e(null),t.src=i})}function qle(){let i=U.lens,e=ge.overviewCanvas,t=e.getContext("2d"),n=Of(),r=U.volume.tileGrid.size,s=U.volume.tileGrid.tileSize,o=n[2]-n[0],a=n[3]-n[1],l=0;for(;l<i.fullZoom&&Math.max(o,a)/r*s*2**l<168;)l++;let c=s*2**l/r;e.width=Math.max(1,Math.round(o*c)),e.height=Math.max(1,Math.round(a*c)),t.clearRect(0,0,e.width,e.height),i.background&&(t.fillStyle=i.background,t.fillRect(0,0,e.width,e.height));let u=++U.overviewRun,f=i.formats[l],d=Math.floor(n[0]/r*2**l),A=Math.ceil(n[2]/r*2**l),y=Math.floor(-n[3]/r*2**l),w=Math.ceil(-n[1]/r*2**l);for(let S=y;S<w;S++)for(let T=d;T<A;T++){if(!f||!OP(i,l,T,S))continue;let R=new Image;R.onload=()=>{U.overviewRun===u&&t.drawImage(R,T*s-n[0]*c,S*s+n[3]*c,s,s)},R.src=`${U.volume.base}/tiles/${encodeURIComponent(i.tiles)}/${l}/${T}/${S}.${f}`}Dx()}function Dx(){let i=Dle();if(i){let w=ch(U.world);if(!w||!U.lens)return;let S=Of(),[T,R]=w.toWorld(i.lat,i.lng),P=ge.overviewCanvas,I=cs((T-S[0])/(S[2]-S[0]),0,1),F=cs((R+S[3])/(S[3]-S[1]),0,1);U.overviewKey="",ge.overviewShelf.hidden=!1;let D=ge.overviewViewport.style,L=22;D.left=`${I*P.width-L/2}px`,D.top=`${F*P.height-L/2}px`,D.width=`${L}px`,D.height=`${L}px`;return}let e=U.engine?.getView();if(!e||!U.lens)return;let t=Of(),n=e.calculateExtent(U.engine.getSize()),r=t[2]-t[0],s=t[3]-t[1],o=(e.getResolution()||0)*4,a=n[0]<=t[0]+o&&n[1]<=t[1]+o&&n[2]>=t[2]-o&&n[3]>=t[3]-o,l=a?"hidden":n.map(Math.round).join(",");if(l===U.overviewKey||(U.overviewKey=l,ge.overviewShelf.hidden=a,a))return;let c=ge.overviewCanvas,u=cs((n[0]-t[0])/r,0,1),f=cs((n[2]-t[0])/r,0,1),d=cs((t[3]-n[3])/s,0,1),A=cs((t[3]-n[1])/s,0,1),y=ge.overviewViewport.style;y.left=`${u*c.width}px`,y.top=`${d*c.height}px`,y.width=`${Math.max(8,(f-u)*c.width)}px`,y.height=`${Math.max(8,(A-d)*c.height)}px`}function BP(i,e=!0){U.overviewDocked=i,i&&U.overviewPointer!==null&&(U.overviewPointer=null,Nx()),ge.overviewShelf.classList.toggle("is-docked",i),ge.overviewDock.setAttribute("aria-expanded",String(!i));let t=i?"Bring the overview back":"Put the overview away";ge.overviewDock.setAttribute("aria-label",t),ge.overviewDock.title=t,e&&xu()}function vG(i,e){let t=ge.overviewCanvas.getBoundingClientRect(),n=Of(),r=(a,l,c)=>cs((a-l)/(c-l),0,1);if(U.globeActive){let a=ch(U.world);if(!a)return;let l=n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),c=-n[3]+r(i.clientY,t.top,t.bottom)*(n[3]-n[1]),[u,f]=a.toLatLng(l,c);Nle(u,f,e);return}let s=U.engine?.getView();if(!s||!U.lens)return;let o=[n[0]+r(i.clientX,t.left,t.right)*(n[2]-n[0]),n[3]-r(i.clientY,t.top,t.bottom)*(n[3]-n[1])];if(e){s.animate({center:o,duration:180});return}s.cancelAnimations(),s.setCenter(o)}function mc(i){return new oY({updateWhileAnimating:!0,...i})}function Hle(){let i=U.volume.tileGrid.size,e=[0,-i,i,0];U.projection=new xp({code:"ATLAS:PIXELS",units:"pixels",extent:e}),U.sources={grid:new dd({wrapX:!1}),gridContext:new dd({wrapX:!1}),zoneScrim:new dd({wrapX:!1}),zones:new dd({wrapX:!1}),zoneTitles:new dd({wrapX:!1}),text:new dd({wrapX:!1}),pins:new dd({wrapX:!1}),priority:new dd({wrapX:!1})},U.layers={raster:new d6({zIndex:0}),rasterDetail:new d6({zIndex:1}),grid:mc({source:U.sources.grid,style:XN,renderOrder:Bc,renderBuffer:40,zIndex:5}),zoneScrim:mc({source:U.sources.zoneScrim,style:AX,zIndex:6}),zones:mc({source:U.sources.zones,style:gX,renderBuffer:32,zIndex:10}),zoneTitles:mc({source:U.sources.zoneTitles,style:vX,renderOrder:Bc,renderBuffer:160,zIndex:20}),zoneTitleDetail:mc({source:U.sources.zoneTitles,style:_X,renderOrder:Bc,renderBuffer:160,zIndex:44}),text:mc({source:U.sources.text,style:uX,renderOrder:Bc,renderBuffer:220,zIndex:30}),textDetail:mc({source:U.sources.text,style:hX,renderOrder:Bc,renderBuffer:220,zIndex:45}),zoneText:mc({source:U.sources.text,style:fX,renderOrder:Bc,renderBuffer:220,zIndex:41}),pins:mc({source:U.sources.pins,style:aX,renderOrder:Bc,renderBuffer:48,zIndex:40}),zonePins:mc({source:U.sources.pins,style:lX,renderOrder:Bc,renderBuffer:48,zIndex:42}),pinLabels:mc({source:U.sources.pins,style:cX,renderOrder:Bc,renderBuffer:180,zIndex:45}),gridContext:mc({source:U.sources.gridContext,style:XN,renderOrder:Bc,renderBuffer:40,zIndex:48}),priority:mc({source:U.sources.priority,style:dX,renderOrder:Bc,renderBuffer:220,zIndex:50})},U.engine=new D$({target:ge.viewport,layers:Object.values(U.layers),controls:qE({attribution:!1,rotate:!1,zoom:!1}),interactions:YE({onFocusOnly:!1}),view:kP(5)}),U.engine.on("movestart",()=>{U.engine.getViewport().classList.add("is-dragging")}),U.engine.on("moveend",()=>{U.engine.getViewport().classList.remove("is-dragging"),U.overviewPointer===null&&Nx()}),U.engine.on("postrender",Dx),ge.viewport.addEventListener("wheel",()=>{document.activeElement!==ge.viewport&&ge.viewport.focus({preventScroll:!0})},{capture:!0,passive:!0}),U.engine.on("singleclick",t=>{if(U.gridEnabled){let r=U.engine.forEachFeatureAtPixel(t.pixel,s=>{let o=s.get("gridCell");return o&&o.role!=="leaf"&&o.role!=="scope"?o:null},{hitTolerance:1,layerFilter:s=>s===U.layers.grid||s===U.layers.gridContext});if(r){uA(r.hash);return}}let n=U.engine.forEachFeatureAtPixel(t.pixel,(r,s)=>UP(s)&&r.get("pin")||null,{hitTolerance:5,layerFilter:UP});n&&My(n)}),U.engine.on("pointermove",t=>{if(t.dragging){cv(null);return}let n=U.engine.forEachFeatureAtPixel(t.pixel,(o,a)=>UP(a)&&o.get("pin")||null,{hitTolerance:4,layerFilter:UP}),r=n&&lh(n.category)==="text"?null:n;cv(r||null);let s=U.gridEnabled&&U.engine.hasFeatureAtPixel(t.pixel,{layerFilter:o=>o===U.layers.grid||o===U.layers.gridContext});U.engine.getTargetElement().style.cursor=n||s?"pointer":""}),U.engine.getViewport().addEventListener("pointerleave",()=>cv(null))}function UP(i){return i===U.layers.pins||i===U.layers.zonePins||i===U.layers.pinLabels||i===U.layers.priority||i===U.layers.text||i===U.layers.textDetail||i===U.layers.zoneText}function kP(i,e=null){let t=U.volume.tileGrid.size,n=e||[0,-t,t,0];return new Hl({projection:U.projection,center:[(n[0]+n[2])/2,(n[1]+n[3])/2],resolutions:_G(i),minZoom:0,maxZoom:i,extent:n,constrainResolution:!1,smoothResolutionConstraint:!1,showFullExtent:!0,zoom:0})}function _G(i){let e=U.volume.tileGrid.size/U.volume.tileGrid.tileSize;return Array.from({length:i+1},(t,n)=>e/2**n)}async function sd(i,e){U.volume=U.catalog.volumes.find(r=>r.slug===i)||U.catalog.volumes[0],U.engine||Hle(),!e&&!U.restore&&(U.restore=ev(U.volume.slug)),ge.volume.value=U.volume.slug,km(ge.world,U.volume.worlds,"title"),ge.world.disabled=U.volume.worlds.length===1,ge.world.title=ge.world.disabled?"This volume has one world":"Choose a world";let t=U.restore?.volume===U.volume.slug?U.restore:null,n=e&&U.volume.worlds.find(r=>r.slug===e)||t&&U.volume.worlds.find(r=>r.slug===t.world);await xG((n||U.volume.worlds[0]).slug)}async function xG(i){let e=U.volume.worlds.find(s=>s.slug===i)||U.volume.worlds[0],t=++U.worldRun;ge.loading.hidden=!1;let n;try{n=await BX(e)}catch(s){console.error(`world ${e.slug} failed to load`,s),U.worldRun===t&&(ge.loading.hidden=!0,AA());return}if(U.worldRun!==t)return;U.settling=!0,U.world=n,document.documentElement.style.setProperty("--icon-outset-color",aA()),ge.world.value=U.world.slug,km(ge.lens,U.world.lenses,"name"),ge.lensField.hidden=U.world.lenses.length<2,U.styleCache.clear(),cv(null),U.gridCell="",U.gridSystem="geohash",U.hiddenCategories.clear(),U.collapsedSections.clear(),U.collapsedSections.add("zones");for(let s of U.world.groups)for(let o of s.categories)o.visible||U.hiddenCategories.add(o.id);let r=U.restore?.world===U.world.slug?U.restore:null;r&&(U.hiddenCategories=new Set(r.hidden),U.collapsedSections=new Set(r.collapsed)),BP(!!U.restore?.overviewDocked,!1),AE(U.restore?!!U.restore.dockFolded:!0,!1),U.dockDismissed=!!U.restore?.dockDismissed,U.search="",ge.search.value="",ge.dock.hidden=!1,ed(),LX(),QN(),IX(),yG(r?cs(r.lens,0,U.world.lenses.length-1):0,!0),Ple(),U.restore=null,ge.sidebar.classList.remove("is-open"),ge.mobileLegend.setAttribute("aria-expanded","false"),vj(),U.settling=!1,xu()}function yG(i,e=!1){let t=U.lens;U.lens=U.world.lenses[i]||U.world.lenses[0];let n=U.lens,r=e?null:I6e(t,n),s=mh(n);if(ge.lens.value=String(U.world.lenses.indexOf(U.lens)),e)U.engine.setView(kP(s,Of()));else{let w=U.engine.getView(),S=kP(s,Of());S.setCenter(w.getCenter()),S.setZoom(w.getZoom()||0),U.engine.setView(S)}let o=++U.tileRun,a=0;U.tileStats={requested:0,loaded:0,errors:0,peakPending:0},ge.loading.hidden=!1;let l=w=>{w.on("tileloadstart",()=>{U.tileRun===o&&(a++,U.tileStats.requested++,U.tileStats.peakPending=Math.max(U.tileStats.peakPending,a))});let S=T=>{U.tileRun===o&&(a=Math.max(0,a-1),T?U.tileStats.errors++:U.tileStats.loaded++,a===0&&U.tileStats.loaded>0&&(ge.loading.hidden=!0))};return w.on("tileloadend",()=>S(!1)),w.on("tileloaderror",()=>S(!0)),w},c=(w,S)=>l(new Aj({projection:U.projection,tileGrid:new wy({extent:[0,-U.volume.tileGrid.size,U.volume.tileGrid.size,0],origin:[0,0],resolutions:_G(w),tileSize:U.volume.tileGrid.tileSize}),cacheSize:64,interpolate:n.interpolate,transition:0,wrapX:!1,tileUrlFunction:([T,R,P])=>{let I=n.formats[T];if(!(!I||R<0||P<0||!S(T,R,P)))return`${U.volume.base}/tiles/${encodeURIComponent(n.tiles)}/${T}/${R}/${P}.${I}`}})),u=n.fullZoom??n.maxZoom,f=c(u,(w,S,T)=>OP(n,w,S,T)),d=U.layers.raster.getSource();U.layers.raster.setSource(f),U.layers.raster.setExtent(Of()),U.layers.raster.setBackground(n.background||void 0),d?.clear();let A=U.layers.rasterDetail.getSource();n.maxZoom>u?(U.layers.rasterDetail.setSource(c(n.maxZoom,(w,S,T)=>w>u&&OP(n,w,S,T))),U.layers.rasterDetail.setExtent(Of()),U.layers.rasterDetail.setVisible(!0)):U.layers.rasterDetail.setVisible(!1),A?.clear(),Oy(),U.gridEnabled&&(Dc(),U.layers.pins.changed(),U.layers.text.changed(),U.layers.priority.changed()),U.overviewKey="",qle();let y=e&&U.restore?.world===U.world.slug?U.restore:null;if(U.renderedShard!==(n.shard||0)&&(QN(),Lc()),y?.center&&Number.isFinite(y.zoom)){let w=U.engine.getView();w.setCenter(y.center),w.setZoom(y.zoom),U.fitZoom=y.zoom,mA()}else e?requestAnimationFrame(P6e):(r&&U.engine.getView().animate({center:r,duration:200}),mA());xu()}function OP(i,e,t,n){let r=i.coverage?.[e];if(!r)return!0;let s=t-r.x,o=n-r.y;if(s<0||o<0||s>=r.w||o>=r.h)return!1;let a=R6e(i,e,r),l=o*r.w+s;return(a[l>>3]&1<<(l&7))!==0}function R6e(i,e,t){if(!t.decoded){let n=atob(t.bits),r=new Uint8Array(n.length);for(let s=0;s<n.length;s++)r[s]=n.charCodeAt(s);t.decoded=r}return t.decoded}function mh(i){return i.maxZoom+2}function Nx(){mA(),xu()}function I6e(i,e){if(!i||!e||!i.shard||!e.shard||i.shard===e.shard||!i.bounds||!e.bounds)return null;let n=U.engine?.getView()?.getCenter();if(!n)return null;let r=(n[0]-i.bounds.x)/i.bounds.width,s=(-n[1]-i.bounds.y)/i.bounds.height;return[e.bounds.x+cs(r,0,1)*e.bounds.width,-(e.bounds.y+cs(s,0,1)*e.bounds.height)]}function Wle(){let e=document.querySelector(".app-shell").classList.toggle("sidebar-collapsed");ge.mobileLegend.setAttribute("aria-expanded",String(!e)),requestAnimationFrame(()=>U.engine?.updateSize())}function Of(){let i=U.volume.tileGrid.size,e=U.lens?.bounds||{x:0,y:0,width:i,height:i};return[e.x,-(e.y+e.height),e.x+e.width,-e.y]}function P6e(){if(!U.engine||!U.lens)return;let i=U.engine.getView();i.fit(Of(),{size:U.engine.getSize(),padding:[36,36,36,36],maxZoom:U.lens.maxZoom,duration:0}),U.fitZoom=i.getZoom()||0,mA()}function $S(i){let e=U.engine.getView(),t=e.getZoom()||0;e.animate({zoom:cs(t+i,U.lens.minZoom,mh(U.lens)),duration:140})}function mA(){let i=U.engine?.getView().getZoom();if(ge.viewport.dataset.zoom=Number.isFinite(i)?i.toFixed(3):"",!U.engine||!U.pins.length){ge.visibleCount.textContent="0 locations visible";return}let e=U.engine.getView().calculateExtent(U.engine.getSize()),t=0;for(let n of U.pins){if(Oc(n))continue;let[r,s]=n.coordinate;r>=e[0]&&r<=e[2]&&s>=e[1]&&s<=e[3]&&t++}ge.visibleCount.textContent=`${wu(U.eligibleLocations)} enabled \xB7 ${wu(t)} in view`}function jle(){ge.volume.addEventListener("change",()=>{sd(ge.volume.value)}),ge.world.addEventListener("change",()=>{xG(ge.world.value)}),ge.addBundles.addEventListener("click",()=>{r5()}),ge.emptyOpen.addEventListener("click",()=>{r5()}),ge.lens.addEventListener("change",()=>{yG(Number(ge.lens.value)),Gle()}),ge.globeToggle.addEventListener("click",()=>NP()),ge.legend.addEventListener("change",n=>{let r=n.target;if(r.dataset.sectionToggle){NX(r.dataset.sectionToggle);return}if(!r.dataset.category)return;let s=Number(r.dataset.category);r.checked?U.hiddenCategories.delete(s):U.hiddenCategories.add(s),Lc(),Cp()});let i=null,e=()=>{for(let s of ge.layers.querySelectorAll(".is-hovered"))s.classList.remove("is-hovered");if(!i)return;let r=document.elementFromPoint(i.x,i.y)?.closest(".category-row, .layer-header");r&&ge.layers.contains(r)&&r.classList.add("is-hovered")};ge.layers.addEventListener("pointermove",n=>{i={x:n.clientX,y:n.clientY},e()},{passive:!0}),ge.layers.addEventListener("pointerleave",()=>{i=null,e()}),ge.layers.addEventListener("scroll",e,{passive:!0}),ge.layers.addEventListener("click",n=>{let r=n.target.closest("[data-only-category], [data-only-section]");if(r){n.preventDefault(),n.stopPropagation(),FX(r.dataset.onlyCategory?{category:Number(r.dataset.onlyCategory)}:{section:r.dataset.onlySection});return}let s=n.target.closest("[data-section]");if(!s)return;let o=s.dataset.section;U.collapsedSections.has(o)?U.collapsedSections.delete(o):U.collapsedSections.add(o),zE()}),ge.soloChip.addEventListener("click",()=>$y(!0)),en("#expand-all").addEventListener("click",()=>n5(!1)),en("#collapse-all").addEventListener("click",()=>n5(!0)),en("#show-all").addEventListener("click",()=>$y(!0)),en("#hide-all").addEventListener("click",()=>$y(!1)),ge.zoneToggle.addEventListener("change",()=>{UE(ge.zoneToggle.checked)}),ge.zoneIndex.addEventListener("click",n=>{let r=n.target.closest("[data-zone]");r&&MX(Number(r.dataset.zone))}),ge.zoneIndex.addEventListener("contextmenu",n=>{let r=n.target.closest("[data-zone]");r&&(n.preventDefault(),CX(Number(r.dataset.zone)))}),ge.search.addEventListener("input",()=>{U.search=ge.search.value.trim().toLocaleLowerCase(),Lc(),U.search&&Ey()}),ge.dockFold.addEventListener("click",()=>{cN(!U.dockFolded)}),ge.searchResults.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&uN(s)}),ge.detailLinks.addEventListener("click",n=>{let r=n.target.closest("[data-location]");if(!r)return;let s=U.pinByID.get(Number(r.dataset.location));s&&uN(s)}),en("#close-detail").addEventListener("click",ed),en("#zoom-in").addEventListener("click",()=>U.globeActive?pG(1):$S(1)),en("#zoom-out").addEventListener("click",()=>U.globeActive?pG(-1):$S(-1)),ge.gridBack.addEventListener("click",bN),ge.gridSystem.addEventListener("click",wN),ge.gridInput.addEventListener("input",()=>{let n=Ts(),r=n.normalizeInput(ge.gridInput.value);ge.gridInput.value=r,n.parseInput(r)!==null&&uA(r)}),ge.subgridToggle.addEventListener("click",()=>{By(!U.subgridVisible),ge.viewport.focus({preventScroll:!0})}),ge.gridInput.addEventListener("keydown",n=>{if(n.key===" "){n.preventDefault(),By(!U.subgridVisible);return}if(n.key==="`"){n.preventDefault(),ge.globeToggle.hidden||NP();return}n.key==="Escape"&&(n.preventDefault(),n.stopPropagation(),ge.viewport.focus({preventScroll:!0}))}),ge.viewport.addEventListener("keydown",n=>{if(!mE(n.target)){if(n.key==="+"||n.key==="=")$S(1);else if(n.key==="-")$S(-1);else if(n.key==="Escape")ed();else return;n.preventDefault()}}),window.addEventListener("contextmenu",n=>{mE(n.target)||n.preventDefault()}),window.addEventListener("keydown",n=>{if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="r"){n.preventDefault(),location.reload();return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="g"){n.preventDefault(),wN();return}if(!mE(n.target)){if(n.key==="`"&&!n.metaKey&&!n.ctrlKey&&!n.altKey){ge.globeToggle.hidden||(n.preventDefault(),NP());return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="k"){n.preventDefault(),ge.search.focus(),ge.search.select();return}if((n.metaKey||n.ctrlKey)&&n.altKey&&n.code==="KeyB"){n.preventDefault(),ge.dock.hidden||cN(!U.dockFolded);return}if((n.metaKey||n.ctrlKey)&&n.key.toLocaleLowerCase()==="b"){n.preventDefault(),Wle();return}kj(n)||n.key.toLocaleLowerCase()==="z"&&(n.preventDefault(),n.repeat||kE(!0))}}),window.addEventListener("keyup",n=>{n.key.toLocaleLowerCase()==="z"&&kE(!1)}),window.addEventListener("blur",()=>kE(!1)),window.addEventListener("hashchange",()=>{let n=tv();n.volume===U.volume?.slug&&n.world===U.world?.slug||(U.restore=null,sd(n.volume||U.catalog.volumes[0].slug,n.world))}),window.addEventListener("resize",()=>{U.engine?.updateSize(),Dx(),gG()}),document.addEventListener("atlas:globe-camera",()=>Dx()),ge.overview.addEventListener("pointerdown",n=>{U.overviewDocked||n.pointerType==="mouse"&&n.button!==0||(n.preventDefault(),ge.overview.setPointerCapture(n.pointerId),U.overviewPointer=n.pointerId,vG(n,!0))}),ge.overview.addEventListener("pointermove",n=>{U.overviewPointer===n.pointerId&&(n.preventDefault(),vG(n,!1))});let t=n=>{U.overviewPointer===n.pointerId&&(U.overviewPointer=null,Nx())};ge.overview.addEventListener("pointerup",t),ge.overview.addEventListener("pointercancel",t),ge.overviewDock.addEventListener("click",()=>{BP(!U.overviewDocked),ge.viewport.focus({preventScroll:!0})}),ge.mobileLegend.addEventListener("click",()=>{let n=ge.sidebar.classList.toggle("is-open");ge.mobileLegend.setAttribute("aria-expanded",String(n))})}function Xle(){let i=()=>({volume:U.volume?.title,world:U.world?.title,lens:U.lens?.name,zoom:U.engine?.getView().getZoom(),center:U.engine?.getView().getCenter(),resolution:U.engine?.getView().getResolution(),nativeMaxZoom:U.lens?.maxZoom,maxZoom:U.lens?mh(U.lens):null,interpolate:U.lens?.interpolate,tileStats:{...U.tileStats},pins:U.pins.length,eligibleLocations:U.eligibleLocations,domNodes:document.querySelectorAll("*").length,canvases:document.querySelectorAll("canvas").length,rasterCacheSize:64,labelsHeld:U.labelsHeld,hoveredPin:U.hoveredPin?.location.title||null,selectedPin:U.selectedPin?.location.title||null,fitZoom:U.fitZoom,filters:{hiddenCategories:[...U.hiddenCategories].sort(),collapsedSections:[...U.collapsedSections].sort()},ui:{sidebarCollapsed:document.querySelector(".app-shell")?.classList.contains("sidebar-collapsed")??!1,detailOpen:!ge.detail.hidden,detailTitle:ge.detail.hidden?null:ge.detailTitle.textContent||null,searchQuery:U.search,searchResultsVisible:!ge.searchResults.hidden,soloChip:ge.soloChip.hidden?null:ge.soloChip.textContent,visibleCountText:ge.visibleCount.textContent,overviewDocked:U.overviewDocked,dockFolded:U.dockFolded,dockDismissed:U.dockDismissed,subgridVisible:U.subgridVisible},zones:{visible:U.zonesVisible,count:U.zoneRecords.size,focused:U.zoneRecords.get(U.focusedZoneID)?.zone.title||null,highlighted:[...U.highlightedZones].map(e=>U.zoneRecords.get(e)?.zone.title).filter(Boolean),focusedPins:U.pins.filter(e=>!e.filteredHidden&&e.insideHighlightedZone).length},grid:{enabled:U.gridEnabled,system:U.gridSystem,prefix:U.gridCell,maximumDepth:Gj(),extent:U.gridEnabled?SN():null,cells:[...U.sources.grid.getFeatures(),...U.sources.gridContext.getFeatures()].map(e=>e.get("gridCell")),priorityPins:U.gridCell?U.pins.filter(e=>!e.filteredHidden&&Pp(e)).length:0}});window.__atlasDebug={snapshot:i,setLayerVisible:(e,t)=>U.layers[e]?.setVisible(t),refreshCatalog:AA},window.render_game_to_text=()=>JSON.stringify({coordinateSystem:"ATLAS:PIXELS; origin top-left; x increases right; y decreases downward",...i()}),window.advanceTime=()=>U.engine?.renderSync()}async function $le(){jle();try{let i=await fetch("/data/catalog.json");if(!i.ok)throw new Error(`catalog request returned ${i.status}`);if(U.catalog=await i.json(),km(ge.volume,U.catalog.volumes,"title"),i5(),window.runtime?.EventsOn?.("atlas:catalog-changed",()=>{AA()}),U.catalog.volumes.length){let e=tv(),t=ev(),n=t&&(!e.volume||e.volume===t.volume&&e.world===t.world);U.restore=n?t:null,await sd(e.volume||t?.volume||U.catalog.volumes[0].slug,e.world||t?.world),U.restore=null}else ge.loading.hidden=!0;Xle(),requestAnimationFrame(()=>ge.viewport.focus({preventScroll:!0}))}catch(i){ge.loading.hidden=!0,ge.fatalMessage.textContent=i instanceof Error?i.message:String(i),ge.fatal.hidden=!1}}$le();})();
M frontend/src/navigation.js +2 -2